From 98c43b9a35fa407d2e57881eb16b5876342d78d1 Mon Sep 17 00:00:00 2001 From: Frederico Moura Date: Wed, 22 Feb 2023 12:20:59 +0000 Subject: [PATCH 1/3] Virtual Wallet --- abis/StakingMigrationV2.json | 1331 ++++++++++++++++++++++++++++++++++ abis/StakingV3.json | 1252 ++++++++++++++++++++++++++++++++ abis/TalentFactoryV3.json | 568 +++++++++++++++ abis/TalentTokenV3.json | 1025 ++++++++++++++++++++++++++ package.json | 4 +- src/mapping.ts | 14 +- subgraph.yaml | 44 +- yarn.lock | 858 ++++++++++++++++++---- 8 files changed, 4938 insertions(+), 158 deletions(-) create mode 100644 abis/StakingMigrationV2.json create mode 100644 abis/StakingV3.json create mode 100644 abis/TalentFactoryV3.json create mode 100644 abis/TalentTokenV3.json diff --git a/abis/StakingMigrationV2.json b/abis/StakingMigrationV2.json new file mode 100644 index 0000000..7a664db --- /dev/null +++ b/abis/StakingMigrationV2.json @@ -0,0 +1,1331 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingMigrationV2", + "sourceName": "contracts/season3/StakingMigrationV2.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakerReward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talentReward", + "type": "uint256" + } + ], + "name": "RewardClaim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakerReward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talentReward", + "type": "uint256" + } + ], + "name": "RewardWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "stable", + "type": "bool" + } + ], + "name": "Stake", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentTokenWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "TalentRewardWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talAmount", + "type": "uint256" + } + ], + "name": "Unstake", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "S", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "__RewardCalculator_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "activeStakes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_currentTime", + "type": "uint256" + } + ], + "name": "calculateEstimatedReturns", + "outputs": [ + { + "internalType": "uint256", + "name": "stakerRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "talentRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "claimRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "claimRewardsOnBehalf", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_talent", + "type": "uint256" + } + ], + "name": "convertTalentToToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tal", + "type": "uint256" + } + ], + "name": "convertTokenToTalent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_usd", + "type": "uint256" + } + ], + "name": "convertUsdToTalent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_usd", + "type": "uint256" + } + ], + "name": "convertUsdToToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "disable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "disabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_talentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_stakerReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_talentReward", + "type": "uint256" + } + ], + "name": "emitRewardsClaimEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_talentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_talAmount", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_stable", + "type": "bool" + } + ], + "name": "emitStakeEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "end", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_end", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rewardsMax", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_stableCoin", + "type": "address" + }, + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_talentPrice", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "maxSForTalent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onTransferReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsGiven", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsLeft", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsMax", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_stakerRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_talentRewards", + "type": "uint256" + } + ], + "name": "setClaimRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + } + ], + "name": "setFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_end", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_talentPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rewardsMax", + "type": "uint256" + } + ], + "name": "setInitialState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "setTalentRedeemableRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_talentRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxSTalent", + "type": "uint256" + } + ], + "name": "setTalentState", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "setToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_price", + "type": "uint256" + } + ], + "name": "setTokenPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stableCoin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stableCoinBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "stakeAvailability", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stakeStable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "stakes", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "talentAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCheckpointAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "S", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "finishedAccumulating", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "start", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_stableAmount", + "type": "uint256" + } + ], + "name": "swapStableForToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "talentPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "talentRedeemableRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAdjustedShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStableStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalTokensStaked", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timestamp", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "firstStake", + "type": "bool" + } + ], + "name": "transferStake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "withdrawRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "withdrawTalentRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506158a280620000216000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80639010d07c116101e9578063be9a65551161010f578063e03352ce116100ad578063efbe1c1c1161007c578063efbe1c1c14610822578063f18d20be1461082c578063fb89960614610834578063fc0c546a1461084757600080fd5b8063e03352ce146107e5578063ed2f2369146107f8578063ee07080514610801578063ef5cfb8c1461080f57600080fd5b8063ca15c873116100e9578063ca15c873146107a2578063d1990538146107b5578063d4ce5789146107bf578063d547741f146107d257600080fd5b8063be9a655514610777578063bf55bd9714610781578063c45a01551461078957600080fd5b8063a217fddf11610187578063aa0b017911610156578063aa0b01791461072a578063aef2200d14610752578063b0e31b2d14610765578063b435842c1461076f57600080fd5b8063a217fddf14610692578063a4e47b661461069a578063a8bc58f21461070f578063a9895b1c1461071757600080fd5b806391d14854116101c357806391d148541461062b578063977bee8e14610664578063992642e5146106775780639e1a4d191461068a57600080fd5b80639010d07c146105e3578063904846731461060e57806391b70f601461061857600080fd5b806343f49d89116102ce57806373c56e641161026c5780637ff9b5961161023b5780637ff9b5961461058757806382f2f2e21461059157806388a7ca5c146105a45780638ba2855d146105d057600080fd5b806373c56e641461052d5780637773a92b146105405780637c27508c146105615780637eefc5251461057457600080fd5b80635bb47808116102a85780635bb47808146104ea5780636a0675cf146104fd5780636a61e5fc1461050757806371f19f941461051a57600080fd5b806343f49d89146104ba5780634be1c796146104cd5780634f7e5862146104d757600080fd5b80632f2ff15d1161033b5780633b039b9e116103155780633b039b9e146104615780633dbf35631461047457806342c0e5ef1461049457806342d86693146104a757600080fd5b80632f2ff15d1461043257806336568abe146104455780633a98ef391461045857600080fd5b806322b3a6a11161037757806322b3a6a1146103f3578063248a9ca3146103fd57806325b58c87146104205780632f2770db1461042a57600080fd5b806301ffc9a71461039e578063144fa6d7146103c65780631ea18fc5146103db575b600080fd5b6103b16103ac366004614fae565b61085a565b60405190151581526020015b60405180910390f35b6103d96103d4366004614fed565b61086b565b005b6103e56101035481565b6040519081526020016103bd565b6103e56101075481565b6103e561040b36600461500a565b60009081526065602052604090206001015490565b6103e56101045481565b6103d9610ac5565b6103d9610440366004615023565b610b3d565b6103d9610453366004615023565b610b67565b610105546103e5565b6103b161046f366004614fed565b610bf3565b6103e5610482366004614fed565b60ff6020526000908152604090205481565b6103e56104a236600461500a565b610dba565b6103b16104b5366004614fed565b610ddd565b6103e56104c8366004614fed565b610f0e565b6103e561010c5481565b6103d96104e5366004615061565b610fdb565b6103d96104f8366004614fed565b611038565b6103e56101095481565b6103d961051536600461500a565b61107a565b6103d961052836600461500a565b61108c565b6103d961053b3660046150b4565b611256565b6103e561054e366004614fed565b6101006020526000908152604090205481565b6103d961056f366004614fed565b611487565b6103e561058236600461500a565b6114ad565b6103e56101025481565b6103d961059f366004615113565b6114c6565b6105b76105b236600461514e565b611511565b6040516001600160e01b031990911681526020016103bd565b6103b16105de3660046151ed565b61183b565b6105f66105f136600461521b565b611916565b6040516001600160a01b0390911681526020016103bd565b6103e561010d5481565b6103d961062636600461523d565b61192e565b6103b1610639366004615023565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6103b16106723660046152a5565b611b73565b60c9546105f6906001600160a01b031681565b6103e5612023565b6103e5600081565b6106e56106a83660046151ed565b60fc602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103bd565b6103e5612096565b6103d96107253660046152d1565b6120b8565b61073d610738366004615322565b6121ed565b604080519283526020830191909152016103bd565b6103e561076036600461500a565b61237b565b6103e56101055481565b6103e5612389565b6103e561010a5481565b6103d96123ba565b610101546105f69061010090046001600160a01b031681565b6103e56107b036600461500a565b6124d2565b6103e56101085481565b6103e56107cd36600461500a565b6124e9565b6103d96107e0366004615023565b612503565b6103d96107f3366004615363565b612528565b6103e560fd5481565b610101546103b19060ff1681565b6103b161081d366004614fed565b612581565b6103e561010b5481565b6103d9612596565b6103d96108423660046153a9565b612765565b60ca546105f6906001600160a01b031681565b600061086582612846565b92915050565b600061087681612884565b60ca546001600160a01b0316156108d45760405162461bcd60e51b815260206004820152601460248201527f537461626c6520636f696e2064697361626c656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382166109205760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6109536001600160a01b0383167f36372b070000000000000000000000000000000000000000000000000000000061288e565b61099f5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420612076616c696420455243323020746f6b656e00000000000000000060448201526064016108cb565b6000829050610a48816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d9190810190615418565b6040518060400160405280600381526020017f54414c00000000000000000000000000000000000000000000000000000000008152506128aa565b610a945760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206e616d65206973206e6f742054414c000000000000000000000060448201526064016108cb565b505060ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610ad081612884565b6101015460ff1615610b245760405162461bcd60e51b815260206004820152601060248201527f616c72656164792064697361626c65640000000000000000000000000000000060448201526064016108cb565b610b2c6128cf565b50610101805460ff19166001179055565b600082815260656020526040902060010154610b5881612884565b610b62838361291e565b505050565b6001600160a01b0381163314610be55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016108cb565b610bef8282612940565b5050565b6000610c0960ca546001600160a01b0316151590565b610c4d5760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b816001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf91906154ba565b6001600160a01b0316336001600160a01b031614610d0f5760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c79206f776e65722063616e20776974686472617720736861726573000060448201526064016108cb565b6001600160a01b03828116600090815260ff6020526040908190205460ca54915163a9059cbb60e01b8152336004820152602481018290529092919091169063a9059cbb906044016020604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a91906154d7565b5050506001600160a01b0316600090815260ff6020526040812055600190565b61010354600090610dd383670de0b6b3a764000061550a565b6108659190615537565b6000610df360ca546001600160a01b0316151590565b610e375760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b61010e543390839060ff1615610e5c57610e5333856000612962565b60019250610f07565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054610e9b906133a3565b9050610ea933866000612962565b600193506001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190610ede906133a3565b61010754610eec919061554b565b610ef6919061555e565b610107555061010e805460ff191690555b5050919050565b6000610f198261341d565b610f655760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6000826001600160a01b031663aafa93716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190615571565b9050610fd4816124e9565b9392505050565b6000610fe681612884565b6040805184815283151560208201526001600160a01b0380871692908816917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da91015b60405180910390a35050505050565b600061104381612884565b5061010180546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600061108581612884565b5061010255565b600061109781612884565b60ca546001600160a01b03166110e75760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b6101045482111561113a5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820737461626c6520696e20636f6e747261637400000060448201526064016108cb565b6000611145836114ad565b905082610104600082825461115a919061555e565b909155505060ca546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906154d7565b5060c95460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154d7565b50505050565b600061126181612884565b6001600160a01b0385166112ad5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6001600160a01b0386166112f95760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6113028561341d565b6113595760405162461bcd60e51b815260206004820152602260248201527f546f6b656e206d75737420626520612076616c69642074616c656e7420746f6b60448201526132b760f11b60648201526084016108cb565b6001600160a01b03808716600090815260fc60209081526040808320938916835292905220821561138f57600080825560018201555b61010554156113cc57610107546113a961010d54866134ab565b6113b39190615537565b61010c546113c1919061554b565b61010c5561010d8490555b60006113db82600001546133a3565b82549091506000036113f95760fd546113f590600161554b565b60fd555b815461140690879061554b565b825561141186610dba565b8260010154611420919061554b565b60018301556002820185905561010c54600383015560048201805460ff191690556101055461145090879061554b565b6101055581548190611461906133a3565b6101075461146f919061554b565b611479919061555e565b610107555050505050505050565b600061149281612884565b506001600160a01b0316600090815260ff6020526040812055565b61010254600090610dd383670de0b6b3a764000061550a565b60006114d181612884565b5061010a85905561010b9390935561010291909155610103556101085561010d55600061010c81905561010781905561010581905560fd81905561010955565b600061010a544210156115665760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108cb565b61010b544211156115b95760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108cb565b60ca546001600160a01b031633036116df576101015460ff161561161f5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b600061166084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355592505050565b905061166d8682876135b0565b60408051868152600060208201526001600160a01b0380841692908916917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf915050611832565b6116e83361341d565b156117c45760ca546001600160a01b031661173d5760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b33600061174b87838861376e565b9050816001600160a01b0316876001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c8360405161179291815260200190565b60405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf92505050611832565b60405162461bcd60e51b815260206004820152602360248201527f556e7265636f676e697a6564204552433133363320746f6b656e20726563656960448201527f766564000000000000000000000000000000000000000000000000000000000060648201526084016108cb565b95945050505050565b61010e546000908390839060ff16156118635761185a85856001612962565b6001925061190e565b61010e805460ff191660011790556001600160a01b03808316600090815260fc602090815260408083209385168352929052908120546118a2906133a3565b90506118b086866001612962565b600193506001600160a01b03808416600090815260fc602090815260408083209386168352929052205481906118e5906133a3565b610107546118f3919061554b565b6118fd919061555e565b610107555061010e805460ff191690555b505092915050565b6000828152609760205260408120610fd49083613ddf565b600054610100900460ff161580801561194e5750600054600160ff909116105b806119685750303b158015611968575060005460ff166001145b6119da5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108cb565b6000805460ff1916600117905580156119fd576000805461ff0019166101001790555b60008311611a4d5760405162461bcd60e51b815260206004820152601760248201527f5f746f6b656e50726963652063616e6e6f74206265203000000000000000000060448201526064016108cb565b60008211611a9d5760405162461bcd60e51b815260206004820152601860248201527f5f74616c656e7450726963652063616e6e6f742062652030000000000000000060448201526064016108cb565b611aa5613deb565b611aad613deb565b611ab5613deb565b611abe85613e58565b611ac66123ba565b61010a88905561010b879055610108869055610101805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b0387160217905561010283905561010382905561010d889055611b2360003361291e565b8015611b69576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b600061010a54421015611bc85760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108cb565b61010b54421115611c1b5760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108cb565b60ca546001600160a01b031615611c745760405162461bcd60e51b815260206004820152601460248201527f537461626c6520636f696e2064697361626c656400000000000000000000000060448201526064016108cb565b61010e543390849060ff1615611e1d5760008411611ccc5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b6101015460ff1615611d205760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b6000611d2b856114ad565b9050846101046000828254611d40919061554b565b90915550611d5190503387836135b0565b60c9546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dcc91906154d7565b5060408051828152600160208201526001600160a01b0388169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a3600193505061190e565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054611e5c906133a3565b905060008511611ea65760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b6101015460ff1615611efa5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b6000611f05866114ad565b9050856101046000828254611f1a919061554b565b90915550611f2b90503388836135b0565b60c9546040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa691906154d7565b5060408051828152600160208201526001600160a01b0389169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a360019450506001600160a01b03808416600090815260fc602090815260408083209386168352929052205481906118e5906133a3565b60ca546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024015b602060405180830381865afa15801561206d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120919190615571565b905090565b60006101065461010954610108546120ae919061555e565b612091919061555e565b60006120c381612884565b6001600160a01b03808716600090815260fc602090815260408083209389168352929052206101055415612125576101075461210261010d54876134ab565b61210c9190615537565b61010c5461211a919061554b565b61010c5561010d8590555b600061213482600001546133a3565b9050838561010954612146919061554b565b612150919061554b565b6101095561010c54600383015560028201869055815461217190869061554b565b825561217c85610dba565b826001015461218b919061554b565b60018301556101055461219f90869061554b565b610105556001600160a01b038716600090815260ff60205260409020546121c790859061554b565b6001600160a01b038816600090815260ff602052604090205581548190611461906133a3565b6001600160a01b03808416600090815260fc602090815260408083209386168352928152828220610100909152918120549091829182901561224957506001600160a01b03851660009081526101006020526040902054612275565b6101075461225a61010d54876134ab565b6122649190615537565b61010c54612272919061554b565b90505b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d991906154ba565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918916906370a0823190602401602060405180830381865afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190615571565b90506000806123678660000154876003015487896001015487613f4c565b90985096505050505050505b935093915050565b60006108656104a2836114ad565b60c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401612050565b600054610100900460ff16158080156123da5750600054600160ff909116105b806123f45750303b1580156123f4575060005460ff166001145b6124665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108cb565b6000805460ff191660011790558015612489576000805461ff0019166101001790555b80156124cf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600081815260976020526040812061086590613fa6565b6000670de0b6b3a76400006101035483610dd3919061550a565b60008281526065602052604090206001015461251e81612884565b610b628383612940565b600061253381612884565b836001600160a01b0316856001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd55908585604051611029929190918252602082015260400190565b600061258d338361183b565b50600192915050565b60006125a181612884565b6101015460ff16806125b5575061010b5442105b6126275760405162461bcd60e51b815260206004820152602b60248201527f6e6f742064697361626c65642c20616e64206e6f7420656e64206f662073746160448201527f6b696e672065697468657200000000000000000000000000000000000000000060648201526084016108cb565b60fd54156126775760405162461bcd60e51b815260206004820152601d60248201527f746865726520617265207374696c6c20616374697665207374616b657300000060448201526064016108cb565b6000612681612096565b9050600081116126d35760405162461bcd60e51b815260206004820152601860248201527f6e6f7468696e67206c65667420746f207769746864726177000000000000000060448201526064016108cb565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612724573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274891906154d7565b5080610106600082825461275c919061554b565b90915550505050565b600061277081612884565b6001600160a01b0384166127bc5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6127c58461341d565b61281c5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e206d75737420626520612076616c69642074616c656e7420746f6b60448201526132b760f11b60648201526084016108cb565b506001600160a01b03909216600090815260ff602090815260408083209390935561010090522055565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610865575061086582613fb0565b6124cf8133613ffe565b600061289983614073565b8015610fd45750610fd483836140a6565b600081518351148015610fd45750508051602091820120825192909101919091201490565b6101015460ff16156128dd57565b610105546000036128ea57565b610107546128fb61010d54426134ab565b6129059190615537565b61010c54612913919061554b565b61010c554261010d55565b6129288282614144565b6000828152609760205260409020610b6290826141e6565b61294a82826141fb565b6000828152609760205260409020610b62908261427e565b61010e548390839060ff1615612e6d576001600160a01b03808616600090815260fc6020908152604080832093881683529290522061299f6128cf565b6000856001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0391906154ba565b6001600160a01b0387166000908152610100602052604081205491925090612a2e5761010c54612a49565b6001600160a01b038716600090815261010060205260409020545b8354600385015460018601546040516370a0823160e01b81526001600160a01b0387811660048301529495506000948594612ad7949093909288928f16906370a08231906024015b602060405180830381865afa158015612aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad29190615571565b613f4c565b9092509050612ae6818361554b565b6101096000828254612af8919061554b565b9091555050600385018390554260028601556001600160a01b038916600090815260ff602052604081208054839290612b3290849061554b565b90915550506101015460ff168015612b4f5750600485015460ff16155b15612b7e5760048501805460ff1916600190811790915560fd8054600090612b7890849061555e565b90915550505b81600003612b9057505050505061339c565b6000886001811115612ba457612ba461558a565b03612c7c5760ca5460405163a9059cbb60e01b81526001600160a01b038c81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2091906154d7565b50886001600160a01b03168a6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f38484604051612c6f929190918252602082015260400190565b60405180910390a3612e63565b6001886001811115612c9057612c9061558a565b03612e1b576000612ca08a610f0e565b90506000838211612cb15781612cb3565b835b90506000612cc1828661555e565b9050612cce8d8d84614293565b8b6001600160a01b03168d6001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd55908487604051612d1c929190918252602082015260400190565b60405180910390a3600081118015612d3e575060ca546001600160a01b031615155b15612e135760ca5460405163a9059cbb60e01b81526001600160a01b038f81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dba91906154d7565b508b6001600160a01b03168d6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f3836000604051612e0a929190918252602082015260400190565b60405180910390a35b505050612e63565b60405162461bcd60e51b815260206004820152601e60248201527f556e7265636f676e697a656420636865636b706f696e7420616374696f6e000060448201526064016108cb565b505050505061339c565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054612eac906133a3565b6001600160a01b03808816600090815260fc60209081526040808320938a16835292905220909150612edc6128cf565b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4091906154ba565b6001600160a01b0388166000908152610100602052604081205491925090612f6b5761010c54612f86565b6001600160a01b038816600090815261010060205260409020545b9050600080612fd9856000015486600301548588600101548e6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401612a9191906001600160a01b0391909116815260200190565b9092509050612fe8818361554b565b6101096000828254612ffa919061554b565b9091555050600385018390554260028601556001600160a01b038a16600090815260ff60205260408120805483929061303490849061554b565b90915550506101015460ff1680156130515750600485015460ff16155b156130805760048501805460ff1916600190811790915560fd805460009061307a90849061555e565b90915550505b81600003613092575050505050613342565b60008960018111156130a6576130a661558a565b0361317e5760ca5460405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156130fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312291906154d7565b50896001600160a01b03168b6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f38484604051613171929190918252602082015260400190565b60405180910390a361333c565b60018960018111156131925761319261558a565b03612e1b5760006131a28b610f0e565b905060008382116131b357816131b5565b835b905060006131c3828661555e565b90506131d08e8e84614293565b8c6001600160a01b03168e6001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd5590848760405161321e929190918252602082015260400190565b60405180910390a3600081118015613240575060ca546001600160a01b031615155b156133385760ca60009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b815260040161329c9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156132bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132df91906154d7565b508c6001600160a01b03168e6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f383600060405161332f929190918252602082015260400190565b60405180910390a35b5050505b50505050505b6001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190613373906133a3565b61010754613381919061554b565b61338b919061555e565b610107555061010e805460ff191690555b5050505050565b6000816000036133b557506000919050565b600382116133c557506001919050565b600060026133d484600161554b565b6133de9190615537565b90508291505b81811015613417579050806002816133fc8186615537565b613406919061554b565b6134109190615537565b90506133e4565b50919050565b610101546040517f099aba560000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526000926101009004169063099aba5690602401602060405180830381865afa158015613487573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086591906154d7565b60008060006134ba8585614350565b915091506000806134cb84846146ab565b9150915060006134db83836148b8565b9050306001600160a01b031663d19905386040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353f9190615571565b613549908261550a565b98975050505050505050565b600081516014146135a85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c69642064617461206c656e67746820666f7220616464726573730060448201526064016108cb565b506014015190565b61010e548390839060ff1615613679576135c98461341d565b6136155760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6000831161365d5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b61366985856001612962565b613674858585614293565b61339c565b61010e805460ff191660011790556001600160a01b03808316600090815260fc602090815260408083209385168352929052908120546136b8906133a3565b90506136c38561341d565b61370f5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b600084116137575760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b61376386866001612962565b613342868686614293565b61010e546000908490849060ff1615613a615761378a8561341d565b6137d65760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6001600160a01b03808716600090815260fc602090815260408083209389168352929052206001810154851480156138195761381488886000612962565b613825565b61382588886001612962565b6001600160a01b03808916600090815260fc60209081526040808320938b16835292905220600281015490925061389e5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108cb565b85826001015410156138af57600080fd5b60018201546000906138c66402540be4008961550a565b6138d09190615537565b905060006402540be4008285600001546138ea919061550a565b6138f49190615537565b60ca546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139659190615571565b10156139b35760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682054414c20746f20776974686472617700000000000060448201526064016108cb565b878460010160008282546139c7919061555e565b90915550508354819085906000906139e090849061555e565b925050819055508061010560008282546139fa919061555e565b90915550508354158015613a135750600484015460ff16155b15613a425760048401805460ff1916600190811790915560fd8054600090613a3c90849061555e565b90915550505b613a4c8989614925565b613a568a826149a2565b9550613dd692505050565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054613aa0906133a3565b9050613aab8661341d565b613af75760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6001600160a01b03808816600090815260fc60209081526040808320938a16835292905220600181015486148015613b3a57613b3589896000612962565b613b46565b613b4689896001612962565b6001600160a01b03808a16600090815260fc60209081526040808320938c168352929052206002810154909250613bbf5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108cb565b8682600101541015613bd057600080fd5b6001820154600090613be76402540be4008a61550a565b613bf19190615537565b905060006402540be400828560000154613c0b919061550a565b613c159190615537565b60ca546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c869190615571565b1015613cd45760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682054414c20746f20776974686472617700000000000060448201526064016108cb565b88846001016000828254613ce8919061555e565b9091555050835481908590600090613d0190849061555e565b92505081905550806101056000828254613d1b919061555e565b90915550508354158015613d345750600484015460ff16155b15613d635760048401805460ff1916600190811790915560fd8054600090613d5d90849061555e565b90915550505b613d6d8a8a614925565b613d778b826149a2565b96505050506001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190613dad906133a3565b61010754613dbb919061554b565b613dc5919061555e565b610107555061010e805460ff191690555b50509392505050565b6000610fd48383614a19565b600054610100900460ff16613e565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016108cb565b565b600054610100900460ff16613ec35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016108cb565b6001600160a01b038116613f195760405162461bcd60e51b815260206004820152601c60248201527f737461626c652061646472657373206d7573742062652076616c69640000000060448201526064016108cb565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556124cf60003361291e565b600080806402540be400613f60888861555e565b613f698a6133a3565b613f73919061550a565b613f7d9190615537565b90506000613f8c828787614a43565b9050613f98818361555e565b999098509650505050505050565b6000610865825490565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061086557506301ffc9a760e01b6001600160e01b0319831614610865565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bef5761403181614ae1565b61403c836020614af3565b60405160200161404d9291906155a0565b60408051601f198184030181529082905262461bcd60e51b82526108cb91600401615621565b6000614086826301ffc9a760e01b6140a6565b8015610865575061409f826001600160e01b03196140a6565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801561412d575060208210155b80156141395750600081115b979650505050505050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bef5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556141a23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610fd4836001600160a01b038416614cd4565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff1615610bef5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610fd4836001600160a01b038416614d23565b600061429e82610dba565b6001600160a01b03808616600090815260fc60209081526040808320938816835292905290812080549293509190036142f657600160fd60008282546142e4919061554b565b909155505060048101805460ff191690555b8281600001600082825461430a919061554b565b9250508190555081816001016000828254614325919061554b565b9250508190555082610105600082825461433f919061554b565b9091555061339c9050858584614e1d565b600080306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b59190615571565b831115806144245750306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144209190615571565b8410155b156144f657306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061448b9190615571565b306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ed9190615571565b915091506146a4565b6000306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455a9190615571565b851061456657846145c8565b306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c89190615571565b90506000306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561460a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061462e9190615571565b851161463a578461469c565b306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061469c9190615571565b919350909150505b9250929050565b6000806000306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147129190615571565b306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147749190615571565b61477e919061555e565b905080600003614796576000600192509250506146a4565b6000816402540be400306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148019190615571565b61480b908961555e565b614815919061550a565b61481f9190615537565b90506000826402540be400306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488c9190615571565b614896908961555e565b6148a0919061550a565b6148aa9190615537565b919791965090945050505050565b6000806148c56000614f48565b6148d36402540be400614f48565b6148dd9190615654565b905060006148ea85614f48565b6148f385614f48565b6148fd9190615654565b90506000826149116402540be40084615674565b61491b91906156a4565b9695505050505050565b6040517f9dc29fac000000000000000000000000000000000000000000000000000000008152306004820152602481018290526001600160a01b03831690639dc29fac90604401600060405180830381600087803b15801561498657600080fd5b505af115801561499a573d6000803e3d6000fd5b505050505050565b60ca5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156149f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154d7565b6000826000018281548110614a3057614a306156d2565b9060005260206000200154905092915050565b600080614a5d614a586402540be4008661550a565b6133a3565b90506000614a73614a586402540be4008661550a565b90506000614a81828461554b565b614a906402540be4008461550a565b614a9a9190615537565b905060006402540be400614aae838a61550a565b614ab89190615537565b90506000614ac760648a615537565b905080821015614ad5578091505b50979650505050505050565b60606108656001600160a01b03831660145b60606000614b0283600261550a565b614b0d90600261554b565b67ffffffffffffffff811115614b2557614b256153de565b6040519080825280601f01601f191660200182016040528015614b4f576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110614b8657614b866156d2565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110614bd157614bd16156d2565b60200101906001600160f81b031916908160001a9053506000614bf584600261550a565b614c0090600161554b565b90505b6001811115614c85577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110614c4157614c416156d2565b1a60f81b828281518110614c5757614c576156d2565b60200101906001600160f81b031916908160001a90535060049490941c93614c7e816156e8565b9050614c03565b508315610fd45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108cb565b6000818152600183016020526040812054614d1b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610865565b506000610865565b60008181526001830160205260408120548015614e0c576000614d4760018361555e565b8554909150600090614d5b9060019061555e565b9050818114614dc0576000866000018281548110614d7b57614d7b6156d2565b9060005260206000200154905080876000018481548110614d9e57614d9e6156d2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614dd157614dd16156ff565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610865565b6000915050610865565b5092915050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390528316906340c10f1990604401600060405180830381600087803b158015614e8057600080fd5b505af1158015614e94573d6000803e3d6000fd5b505050506001600160a01b03821660009081526101006020526040902054158015614f2057506000826001600160a01b0316633e0075a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015614efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f1e9190615571565b115b15610b625761010c546001600160a01b03831660009081526101006020526040902055505050565b6000816402540be40081614f5d60028361583d565b614f679190615674565b614f7260028461583d565b614f7c9083615674565b6003614f88818661583d565b614f9291906156a4565b614f9c9190615654565b614fa6919061584c565b949350505050565b600060208284031215614fc057600080fd5b81356001600160e01b031981168114610fd457600080fd5b6001600160a01b03811681146124cf57600080fd5b600060208284031215614fff57600080fd5b8135610fd481614fd8565b60006020828403121561501c57600080fd5b5035919050565b6000806040838503121561503657600080fd5b82359150602083013561504881614fd8565b809150509250929050565b80151581146124cf57600080fd5b6000806000806080858703121561507757600080fd5b843561508281614fd8565b9350602085013561509281614fd8565b92506040850135915060608501356150a981615053565b939692955090935050565b600080600080600060a086880312156150cc57600080fd5b85356150d781614fd8565b945060208601356150e781614fd8565b93506040860135925060608601359150608086013561510581615053565b809150509295509295909350565b600080600080600060a0868803121561512b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060008060006080868803121561516657600080fd5b853561517181614fd8565b9450602086013561518181614fd8565b935060408601359250606086013567ffffffffffffffff808211156151a557600080fd5b818801915088601f8301126151b957600080fd5b8135818111156151c857600080fd5b8960208285010111156151da57600080fd5b9699959850939650602001949392505050565b6000806040838503121561520057600080fd5b823561520b81614fd8565b9150602083013561504881614fd8565b6000806040838503121561522e57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561525857600080fd5b873596506020880135955060408801359450606088013561527881614fd8565b9350608088013561528881614fd8565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156152b857600080fd5b82356152c381614fd8565b946020939093013593505050565b600080600080600060a086880312156152e957600080fd5b85356152f481614fd8565b9450602086013561530481614fd8565b94979496505050506040830135926060810135926080909101359150565b60008060006060848603121561533757600080fd5b833561534281614fd8565b9250602084013561535281614fd8565b929592945050506040919091013590565b6000806000806080858703121561537957600080fd5b843561538481614fd8565b9350602085013561539481614fd8565b93969395505050506040820135916060013590565b6000806000606084860312156153be57600080fd5b83356153c981614fd8565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561540f5781810151838201526020016153f7565b50506000910152565b60006020828403121561542a57600080fd5b815167ffffffffffffffff8082111561544257600080fd5b818401915084601f83011261545657600080fd5b815181811115615468576154686153de565b604051601f8201601f19908116603f01168101908382118183101715615490576154906153de565b816040528281528760208487010111156154a957600080fd5b6141398360208301602088016153f4565b6000602082840312156154cc57600080fd5b8151610fd481614fd8565b6000602082840312156154e957600080fd5b8151610fd481615053565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610865576108656154f4565b634e487b7160e01b600052601260045260246000fd5b60008261554657615546615521565b500490565b80820180821115610865576108656154f4565b81810381811115610865576108656154f4565b60006020828403121561558357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516155d88160178501602088016153f4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516156158160288401602088016153f4565b01602801949350505050565b60208152600082518060208401526156408160408501602087016153f4565b601f01601f19169190910160400192915050565b8181036000831280158383131683831282161715614e1657614e166154f4565b80820260008212600160ff1b84141615615690576156906154f4565b8181058314821517610865576108656154f4565b6000826156b3576156b3615521565b600160ff1b8214600019841416156156cd576156cd6154f4565b500590565b634e487b7160e01b600052603260045260246000fd5b6000816156f7576156f76154f4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b80825b60018086116157275750612373565b816001600160ff1b0304821115615740576157406154f4565b8086161561574d57918102915b9490941c938002615718565b600082801561576f576001811461577957615782565b6001915050610865565b82915050610865565b508161579057506000610865565b506001600082138082146157a95780156157c7576157e0565b826001600160ff1b03048311156157c2576157c26154f4565b6157e0565b826001600160ff1b03058312156157e0576157e06154f4565b50808316156157ec5750805b6157fc8360011c83840283615715565b806001600160ff1b0304821160008313161561581a5761581a6154f4565b80600160ff1b058212600083121615615835576158356154f4565b029392505050565b6000610fd460ff841683615759565b808201828112600083128015821682158216171561190e5761190e6154f456fea2646970667358221220c351c618f449403ac868ae715138a8277763527b7655d7516c2ed05f3c93f92564736f6c63430008110033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103995760003560e01c80639010d07c116101e9578063be9a65551161010f578063e03352ce116100ad578063efbe1c1c1161007c578063efbe1c1c14610822578063f18d20be1461082c578063fb89960614610834578063fc0c546a1461084757600080fd5b8063e03352ce146107e5578063ed2f2369146107f8578063ee07080514610801578063ef5cfb8c1461080f57600080fd5b8063ca15c873116100e9578063ca15c873146107a2578063d1990538146107b5578063d4ce5789146107bf578063d547741f146107d257600080fd5b8063be9a655514610777578063bf55bd9714610781578063c45a01551461078957600080fd5b8063a217fddf11610187578063aa0b017911610156578063aa0b01791461072a578063aef2200d14610752578063b0e31b2d14610765578063b435842c1461076f57600080fd5b8063a217fddf14610692578063a4e47b661461069a578063a8bc58f21461070f578063a9895b1c1461071757600080fd5b806391d14854116101c357806391d148541461062b578063977bee8e14610664578063992642e5146106775780639e1a4d191461068a57600080fd5b80639010d07c146105e3578063904846731461060e57806391b70f601461061857600080fd5b806343f49d89116102ce57806373c56e641161026c5780637ff9b5961161023b5780637ff9b5961461058757806382f2f2e21461059157806388a7ca5c146105a45780638ba2855d146105d057600080fd5b806373c56e641461052d5780637773a92b146105405780637c27508c146105615780637eefc5251461057457600080fd5b80635bb47808116102a85780635bb47808146104ea5780636a0675cf146104fd5780636a61e5fc1461050757806371f19f941461051a57600080fd5b806343f49d89146104ba5780634be1c796146104cd5780634f7e5862146104d757600080fd5b80632f2ff15d1161033b5780633b039b9e116103155780633b039b9e146104615780633dbf35631461047457806342c0e5ef1461049457806342d86693146104a757600080fd5b80632f2ff15d1461043257806336568abe146104455780633a98ef391461045857600080fd5b806322b3a6a11161037757806322b3a6a1146103f3578063248a9ca3146103fd57806325b58c87146104205780632f2770db1461042a57600080fd5b806301ffc9a71461039e578063144fa6d7146103c65780631ea18fc5146103db575b600080fd5b6103b16103ac366004614fae565b61085a565b60405190151581526020015b60405180910390f35b6103d96103d4366004614fed565b61086b565b005b6103e56101035481565b6040519081526020016103bd565b6103e56101075481565b6103e561040b36600461500a565b60009081526065602052604090206001015490565b6103e56101045481565b6103d9610ac5565b6103d9610440366004615023565b610b3d565b6103d9610453366004615023565b610b67565b610105546103e5565b6103b161046f366004614fed565b610bf3565b6103e5610482366004614fed565b60ff6020526000908152604090205481565b6103e56104a236600461500a565b610dba565b6103b16104b5366004614fed565b610ddd565b6103e56104c8366004614fed565b610f0e565b6103e561010c5481565b6103d96104e5366004615061565b610fdb565b6103d96104f8366004614fed565b611038565b6103e56101095481565b6103d961051536600461500a565b61107a565b6103d961052836600461500a565b61108c565b6103d961053b3660046150b4565b611256565b6103e561054e366004614fed565b6101006020526000908152604090205481565b6103d961056f366004614fed565b611487565b6103e561058236600461500a565b6114ad565b6103e56101025481565b6103d961059f366004615113565b6114c6565b6105b76105b236600461514e565b611511565b6040516001600160e01b031990911681526020016103bd565b6103b16105de3660046151ed565b61183b565b6105f66105f136600461521b565b611916565b6040516001600160a01b0390911681526020016103bd565b6103e561010d5481565b6103d961062636600461523d565b61192e565b6103b1610639366004615023565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6103b16106723660046152a5565b611b73565b60c9546105f6906001600160a01b031681565b6103e5612023565b6103e5600081565b6106e56106a83660046151ed565b60fc602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919060ff1685565b6040805195865260208601949094529284019190915260608301521515608082015260a0016103bd565b6103e5612096565b6103d96107253660046152d1565b6120b8565b61073d610738366004615322565b6121ed565b604080519283526020830191909152016103bd565b6103e561076036600461500a565b61237b565b6103e56101055481565b6103e5612389565b6103e561010a5481565b6103d96123ba565b610101546105f69061010090046001600160a01b031681565b6103e56107b036600461500a565b6124d2565b6103e56101085481565b6103e56107cd36600461500a565b6124e9565b6103d96107e0366004615023565b612503565b6103d96107f3366004615363565b612528565b6103e560fd5481565b610101546103b19060ff1681565b6103b161081d366004614fed565b612581565b6103e561010b5481565b6103d9612596565b6103d96108423660046153a9565b612765565b60ca546105f6906001600160a01b031681565b600061086582612846565b92915050565b600061087681612884565b60ca546001600160a01b0316156108d45760405162461bcd60e51b815260206004820152601460248201527f537461626c6520636f696e2064697361626c656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382166109205760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6109536001600160a01b0383167f36372b070000000000000000000000000000000000000000000000000000000061288e565b61099f5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420612076616c696420455243323020746f6b656e00000000000000000060448201526064016108cb565b6000829050610a48816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156109e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0d9190810190615418565b6040518060400160405280600381526020017f54414c00000000000000000000000000000000000000000000000000000000008152506128aa565b610a945760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206e616d65206973206e6f742054414c000000000000000000000060448201526064016108cb565b505060ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610ad081612884565b6101015460ff1615610b245760405162461bcd60e51b815260206004820152601060248201527f616c72656164792064697361626c65640000000000000000000000000000000060448201526064016108cb565b610b2c6128cf565b50610101805460ff19166001179055565b600082815260656020526040902060010154610b5881612884565b610b62838361291e565b505050565b6001600160a01b0381163314610be55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016108cb565b610bef8282612940565b5050565b6000610c0960ca546001600160a01b0316151590565b610c4d5760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b816001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf91906154ba565b6001600160a01b0316336001600160a01b031614610d0f5760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c79206f776e65722063616e20776974686472617720736861726573000060448201526064016108cb565b6001600160a01b03828116600090815260ff6020526040908190205460ca54915163a9059cbb60e01b8152336004820152602481018290529092919091169063a9059cbb906044016020604051808303816000875af1158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a91906154d7565b5050506001600160a01b0316600090815260ff6020526040812055600190565b61010354600090610dd383670de0b6b3a764000061550a565b6108659190615537565b6000610df360ca546001600160a01b0316151590565b610e375760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b61010e543390839060ff1615610e5c57610e5333856000612962565b60019250610f07565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054610e9b906133a3565b9050610ea933866000612962565b600193506001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190610ede906133a3565b61010754610eec919061554b565b610ef6919061555e565b610107555061010e805460ff191690555b5050919050565b6000610f198261341d565b610f655760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6000826001600160a01b031663aafa93716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc99190615571565b9050610fd4816124e9565b9392505050565b6000610fe681612884565b6040805184815283151560208201526001600160a01b0380871692908816917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da91015b60405180910390a35050505050565b600061104381612884565b5061010180546001600160a01b039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b600061108581612884565b5061010255565b600061109781612884565b60ca546001600160a01b03166110e75760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b6101045482111561113a5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820737461626c6520696e20636f6e747261637400000060448201526064016108cb565b6000611145836114ad565b905082610104600082825461115a919061555e565b909155505060ca546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af11580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da91906154d7565b5060c95460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561122c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125091906154d7565b50505050565b600061126181612884565b6001600160a01b0385166112ad5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6001600160a01b0386166112f95760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6113028561341d565b6113595760405162461bcd60e51b815260206004820152602260248201527f546f6b656e206d75737420626520612076616c69642074616c656e7420746f6b60448201526132b760f11b60648201526084016108cb565b6001600160a01b03808716600090815260fc60209081526040808320938916835292905220821561138f57600080825560018201555b61010554156113cc57610107546113a961010d54866134ab565b6113b39190615537565b61010c546113c1919061554b565b61010c5561010d8490555b60006113db82600001546133a3565b82549091506000036113f95760fd546113f590600161554b565b60fd555b815461140690879061554b565b825561141186610dba565b8260010154611420919061554b565b60018301556002820185905561010c54600383015560048201805460ff191690556101055461145090879061554b565b6101055581548190611461906133a3565b6101075461146f919061554b565b611479919061555e565b610107555050505050505050565b600061149281612884565b506001600160a01b0316600090815260ff6020526040812055565b61010254600090610dd383670de0b6b3a764000061550a565b60006114d181612884565b5061010a85905561010b9390935561010291909155610103556101085561010d55600061010c81905561010781905561010581905560fd81905561010955565b600061010a544210156115665760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108cb565b61010b544211156115b95760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108cb565b60ca546001600160a01b031633036116df576101015460ff161561161f5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b600061166084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061355592505050565b905061166d8682876135b0565b60408051868152600060208201526001600160a01b0380841692908916917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf915050611832565b6116e83361341d565b156117c45760ca546001600160a01b031661173d5760405162461bcd60e51b8152602060048201526015602482015274151053081d1bdad95b881b9bdd081e595d081cd95d605a1b60448201526064016108cb565b33600061174b87838861376e565b9050816001600160a01b0316876001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c8360405161179291815260200190565b60405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf92505050611832565b60405162461bcd60e51b815260206004820152602360248201527f556e7265636f676e697a6564204552433133363320746f6b656e20726563656960448201527f766564000000000000000000000000000000000000000000000000000000000060648201526084016108cb565b95945050505050565b61010e546000908390839060ff16156118635761185a85856001612962565b6001925061190e565b61010e805460ff191660011790556001600160a01b03808316600090815260fc602090815260408083209385168352929052908120546118a2906133a3565b90506118b086866001612962565b600193506001600160a01b03808416600090815260fc602090815260408083209386168352929052205481906118e5906133a3565b610107546118f3919061554b565b6118fd919061555e565b610107555061010e805460ff191690555b505092915050565b6000828152609760205260408120610fd49083613ddf565b600054610100900460ff161580801561194e5750600054600160ff909116105b806119685750303b158015611968575060005460ff166001145b6119da5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108cb565b6000805460ff1916600117905580156119fd576000805461ff0019166101001790555b60008311611a4d5760405162461bcd60e51b815260206004820152601760248201527f5f746f6b656e50726963652063616e6e6f74206265203000000000000000000060448201526064016108cb565b60008211611a9d5760405162461bcd60e51b815260206004820152601860248201527f5f74616c656e7450726963652063616e6e6f742062652030000000000000000060448201526064016108cb565b611aa5613deb565b611aad613deb565b611ab5613deb565b611abe85613e58565b611ac66123ba565b61010a88905561010b879055610108869055610101805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b0387160217905561010283905561010382905561010d889055611b2360003361291e565b8015611b69576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b600061010a54421015611bc85760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108cb565b61010b54421115611c1b5760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108cb565b60ca546001600160a01b031615611c745760405162461bcd60e51b815260206004820152601460248201527f537461626c6520636f696e2064697361626c656400000000000000000000000060448201526064016108cb565b61010e543390849060ff1615611e1d5760008411611ccc5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b6101015460ff1615611d205760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b6000611d2b856114ad565b9050846101046000828254611d40919061554b565b90915550611d5190503387836135b0565b60c9546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dcc91906154d7565b5060408051828152600160208201526001600160a01b0388169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a3600193505061190e565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054611e5c906133a3565b905060008511611ea65760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b6101015460ff1615611efa5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108cb565b6000611f05866114ad565b9050856101046000828254611f1a919061554b565b90915550611f2b90503388836135b0565b60c9546040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa691906154d7565b5060408051828152600160208201526001600160a01b0389169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a360019450506001600160a01b03808416600090815260fc602090815260408083209386168352929052205481906118e5906133a3565b60ca546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024015b602060405180830381865afa15801561206d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120919190615571565b905090565b60006101065461010954610108546120ae919061555e565b612091919061555e565b60006120c381612884565b6001600160a01b03808716600090815260fc602090815260408083209389168352929052206101055415612125576101075461210261010d54876134ab565b61210c9190615537565b61010c5461211a919061554b565b61010c5561010d8590555b600061213482600001546133a3565b9050838561010954612146919061554b565b612150919061554b565b6101095561010c54600383015560028201869055815461217190869061554b565b825561217c85610dba565b826001015461218b919061554b565b60018301556101055461219f90869061554b565b610105556001600160a01b038716600090815260ff60205260409020546121c790859061554b565b6001600160a01b038816600090815260ff602052604090205581548190611461906133a3565b6001600160a01b03808416600090815260fc602090815260408083209386168352928152828220610100909152918120549091829182901561224957506001600160a01b03851660009081526101006020526040902054612275565b6101075461225a61010d54876134ab565b6122649190615537565b61010c54612272919061554b565b90505b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d991906154ba565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918916906370a0823190602401602060405180830381865afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190615571565b90506000806123678660000154876003015487896001015487613f4c565b90985096505050505050505b935093915050565b60006108656104a2836114ad565b60c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401612050565b600054610100900460ff16158080156123da5750600054600160ff909116105b806123f45750303b1580156123f4575060005460ff166001145b6124665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108cb565b6000805460ff191660011790558015612489576000805461ff0019166101001790555b80156124cf576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600081815260976020526040812061086590613fa6565b6000670de0b6b3a76400006101035483610dd3919061550a565b60008281526065602052604090206001015461251e81612884565b610b628383612940565b600061253381612884565b836001600160a01b0316856001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd55908585604051611029929190918252602082015260400190565b600061258d338361183b565b50600192915050565b60006125a181612884565b6101015460ff16806125b5575061010b5442105b6126275760405162461bcd60e51b815260206004820152602b60248201527f6e6f742064697361626c65642c20616e64206e6f7420656e64206f662073746160448201527f6b696e672065697468657200000000000000000000000000000000000000000060648201526084016108cb565b60fd54156126775760405162461bcd60e51b815260206004820152601d60248201527f746865726520617265207374696c6c20616374697665207374616b657300000060448201526064016108cb565b6000612681612096565b9050600081116126d35760405162461bcd60e51b815260206004820152601860248201527f6e6f7468696e67206c65667420746f207769746864726177000000000000000060448201526064016108cb565b60ca5460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612724573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274891906154d7565b5080610106600082825461275c919061554b565b90915550505050565b600061277081612884565b6001600160a01b0384166127bc5760405162461bcd60e51b81526020600482015260136024820152721059191c995cdcc81b5d5cdd081899481cd95d606a1b60448201526064016108cb565b6127c58461341d565b61281c5760405162461bcd60e51b815260206004820152602260248201527f546f6b656e206d75737420626520612076616c69642074616c656e7420746f6b60448201526132b760f11b60648201526084016108cb565b506001600160a01b03909216600090815260ff602090815260408083209390935561010090522055565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610865575061086582613fb0565b6124cf8133613ffe565b600061289983614073565b8015610fd45750610fd483836140a6565b600081518351148015610fd45750508051602091820120825192909101919091201490565b6101015460ff16156128dd57565b610105546000036128ea57565b610107546128fb61010d54426134ab565b6129059190615537565b61010c54612913919061554b565b61010c554261010d55565b6129288282614144565b6000828152609760205260409020610b6290826141e6565b61294a82826141fb565b6000828152609760205260409020610b62908261427e565b61010e548390839060ff1615612e6d576001600160a01b03808616600090815260fc6020908152604080832093881683529290522061299f6128cf565b6000856001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0391906154ba565b6001600160a01b0387166000908152610100602052604081205491925090612a2e5761010c54612a49565b6001600160a01b038716600090815261010060205260409020545b8354600385015460018601546040516370a0823160e01b81526001600160a01b0387811660048301529495506000948594612ad7949093909288928f16906370a08231906024015b602060405180830381865afa158015612aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad29190615571565b613f4c565b9092509050612ae6818361554b565b6101096000828254612af8919061554b565b9091555050600385018390554260028601556001600160a01b038916600090815260ff602052604081208054839290612b3290849061554b565b90915550506101015460ff168015612b4f5750600485015460ff16155b15612b7e5760048501805460ff1916600190811790915560fd8054600090612b7890849061555e565b90915550505b81600003612b9057505050505061339c565b6000886001811115612ba457612ba461558a565b03612c7c5760ca5460405163a9059cbb60e01b81526001600160a01b038c81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2091906154d7565b50886001600160a01b03168a6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f38484604051612c6f929190918252602082015260400190565b60405180910390a3612e63565b6001886001811115612c9057612c9061558a565b03612e1b576000612ca08a610f0e565b90506000838211612cb15781612cb3565b835b90506000612cc1828661555e565b9050612cce8d8d84614293565b8b6001600160a01b03168d6001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd55908487604051612d1c929190918252602082015260400190565b60405180910390a3600081118015612d3e575060ca546001600160a01b031615155b15612e135760ca5460405163a9059cbb60e01b81526001600160a01b038f81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015612d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dba91906154d7565b508b6001600160a01b03168d6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f3836000604051612e0a929190918252602082015260400190565b60405180910390a35b505050612e63565b60405162461bcd60e51b815260206004820152601e60248201527f556e7265636f676e697a656420636865636b706f696e7420616374696f6e000060448201526064016108cb565b505050505061339c565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054612eac906133a3565b6001600160a01b03808816600090815260fc60209081526040808320938a16835292905220909150612edc6128cf565b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4091906154ba565b6001600160a01b0388166000908152610100602052604081205491925090612f6b5761010c54612f86565b6001600160a01b038816600090815261010060205260409020545b9050600080612fd9856000015486600301548588600101548e6001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401612a9191906001600160a01b0391909116815260200190565b9092509050612fe8818361554b565b6101096000828254612ffa919061554b565b9091555050600385018390554260028601556001600160a01b038a16600090815260ff60205260408120805483929061303490849061554b565b90915550506101015460ff1680156130515750600485015460ff16155b156130805760048501805460ff1916600190811790915560fd805460009061307a90849061555e565b90915550505b81600003613092575050505050613342565b60008960018111156130a6576130a661558a565b0361317e5760ca5460405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156130fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312291906154d7565b50896001600160a01b03168b6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f38484604051613171929190918252602082015260400190565b60405180910390a361333c565b60018960018111156131925761319261558a565b03612e1b5760006131a28b610f0e565b905060008382116131b357816131b5565b835b905060006131c3828661555e565b90506131d08e8e84614293565b8c6001600160a01b03168e6001600160a01b03167f661cda9d247039eabdcc72b8fed0de4ce46c907660a504c7e40889080fbd5590848760405161321e929190918252602082015260400190565b60405180910390a3600081118015613240575060ca546001600160a01b031615155b156133385760ca60009054906101000a90046001600160a01b03166001600160a01b031663a9059cbb8f836040518363ffffffff1660e01b815260040161329c9291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af11580156132bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132df91906154d7565b508c6001600160a01b03168e6001600160a01b03167f013ceff621e16e2f96e454db0b811d5e35d3be38beab8a6bf4be6a3dc8cd23f383600060405161332f929190918252602082015260400190565b60405180910390a35b5050505b50505050505b6001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190613373906133a3565b61010754613381919061554b565b61338b919061555e565b610107555061010e805460ff191690555b5050505050565b6000816000036133b557506000919050565b600382116133c557506001919050565b600060026133d484600161554b565b6133de9190615537565b90508291505b81811015613417579050806002816133fc8186615537565b613406919061554b565b6134109190615537565b90506133e4565b50919050565b610101546040517f099aba560000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526000926101009004169063099aba5690602401602060405180830381865afa158015613487573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086591906154d7565b60008060006134ba8585614350565b915091506000806134cb84846146ab565b9150915060006134db83836148b8565b9050306001600160a01b031663d19905386040518163ffffffff1660e01b8152600401602060405180830381865afa15801561351b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353f9190615571565b613549908261550a565b98975050505050505050565b600081516014146135a85760405162461bcd60e51b815260206004820152601f60248201527f696e76616c69642064617461206c656e67746820666f7220616464726573730060448201526064016108cb565b506014015190565b61010e548390839060ff1615613679576135c98461341d565b6136155760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6000831161365d5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b61366985856001612962565b613674858585614293565b61339c565b61010e805460ff191660011790556001600160a01b03808316600090815260fc602090815260408083209385168352929052908120546136b8906133a3565b90506136c38561341d565b61370f5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b600084116137575760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108cb565b61376386866001612962565b613342868686614293565b61010e546000908490849060ff1615613a615761378a8561341d565b6137d65760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6001600160a01b03808716600090815260fc602090815260408083209389168352929052206001810154851480156138195761381488886000612962565b613825565b61382588886001612962565b6001600160a01b03808916600090815260fc60209081526040808320938b16835292905220600281015490925061389e5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108cb565b85826001015410156138af57600080fd5b60018201546000906138c66402540be4008961550a565b6138d09190615537565b905060006402540be4008285600001546138ea919061550a565b6138f49190615537565b60ca546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139659190615571565b10156139b35760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682054414c20746f20776974686472617700000000000060448201526064016108cb565b878460010160008282546139c7919061555e565b90915550508354819085906000906139e090849061555e565b925050819055508061010560008282546139fa919061555e565b90915550508354158015613a135750600484015460ff16155b15613a425760048401805460ff1916600190811790915560fd8054600090613a3c90849061555e565b90915550505b613a4c8989614925565b613a568a826149a2565b9550613dd692505050565b61010e805460ff191660011790556001600160a01b03808316600090815260fc60209081526040808320938516835292905290812054613aa0906133a3565b9050613aab8661341d565b613af75760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108cb565b6001600160a01b03808816600090815260fc60209081526040808320938a16835292905220600181015486148015613b3a57613b3589896000612962565b613b46565b613b4689896001612962565b6001600160a01b03808a16600090815260fc60209081526040808320938c168352929052206002810154909250613bbf5760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108cb565b8682600101541015613bd057600080fd5b6001820154600090613be76402540be4008a61550a565b613bf19190615537565b905060006402540be400828560000154613c0b919061550a565b613c159190615537565b60ca546040516370a0823160e01b815230600482015291925082916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c869190615571565b1015613cd45760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420656e6f7567682054414c20746f20776974686472617700000000000060448201526064016108cb565b88846001016000828254613ce8919061555e565b9091555050835481908590600090613d0190849061555e565b92505081905550806101056000828254613d1b919061555e565b90915550508354158015613d345750600484015460ff16155b15613d635760048401805460ff1916600190811790915560fd8054600090613d5d90849061555e565b90915550505b613d6d8a8a614925565b613d778b826149a2565b96505050506001600160a01b03808416600090815260fc60209081526040808320938616835292905220548190613dad906133a3565b61010754613dbb919061554b565b613dc5919061555e565b610107555061010e805460ff191690555b50509392505050565b6000610fd48383614a19565b600054610100900460ff16613e565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016108cb565b565b600054610100900460ff16613ec35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016108cb565b6001600160a01b038116613f195760405162461bcd60e51b815260206004820152601c60248201527f737461626c652061646472657373206d7573742062652076616c69640000000060448201526064016108cb565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556124cf60003361291e565b600080806402540be400613f60888861555e565b613f698a6133a3565b613f73919061550a565b613f7d9190615537565b90506000613f8c828787614a43565b9050613f98818361555e565b999098509650505050505050565b6000610865825490565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061086557506301ffc9a760e01b6001600160e01b0319831614610865565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bef5761403181614ae1565b61403c836020614af3565b60405160200161404d9291906155a0565b60408051601f198184030181529082905262461bcd60e51b82526108cb91600401615621565b6000614086826301ffc9a760e01b6140a6565b8015610865575061409f826001600160e01b03196140a6565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801561412d575060208210155b80156141395750600081115b979650505050505050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bef5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556141a23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610fd4836001600160a01b038416614cd4565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff1615610bef5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610fd4836001600160a01b038416614d23565b600061429e82610dba565b6001600160a01b03808616600090815260fc60209081526040808320938816835292905290812080549293509190036142f657600160fd60008282546142e4919061554b565b909155505060048101805460ff191690555b8281600001600082825461430a919061554b565b9250508190555081816001016000828254614325919061554b565b9250508190555082610105600082825461433f919061554b565b9091555061339c9050858584614e1d565b600080306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b59190615571565b831115806144245750306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144209190615571565b8410155b156144f657306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061448b9190615571565b306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156144c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ed9190615571565b915091506146a4565b6000306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455a9190615571565b851061456657846145c8565b306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c89190615571565b90506000306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561460a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061462e9190615571565b851161463a578461469c565b306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061469c9190615571565b919350909150505b9250929050565b6000806000306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147129190615571565b306001600160a01b031663efbe1c1c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147749190615571565b61477e919061555e565b905080600003614796576000600192509250506146a4565b6000816402540be400306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156147dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148019190615571565b61480b908961555e565b614815919061550a565b61481f9190615537565b90506000826402540be400306001600160a01b031663be9a65556040518163ffffffff1660e01b8152600401602060405180830381865afa158015614868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488c9190615571565b614896908961555e565b6148a0919061550a565b6148aa9190615537565b919791965090945050505050565b6000806148c56000614f48565b6148d36402540be400614f48565b6148dd9190615654565b905060006148ea85614f48565b6148f385614f48565b6148fd9190615654565b90506000826149116402540be40084615674565b61491b91906156a4565b9695505050505050565b6040517f9dc29fac000000000000000000000000000000000000000000000000000000008152306004820152602481018290526001600160a01b03831690639dc29fac90604401600060405180830381600087803b15801561498657600080fd5b505af115801561499a573d6000803e3d6000fd5b505050505050565b60ca5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156149f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906154d7565b6000826000018281548110614a3057614a306156d2565b9060005260206000200154905092915050565b600080614a5d614a586402540be4008661550a565b6133a3565b90506000614a73614a586402540be4008661550a565b90506000614a81828461554b565b614a906402540be4008461550a565b614a9a9190615537565b905060006402540be400614aae838a61550a565b614ab89190615537565b90506000614ac760648a615537565b905080821015614ad5578091505b50979650505050505050565b60606108656001600160a01b03831660145b60606000614b0283600261550a565b614b0d90600261554b565b67ffffffffffffffff811115614b2557614b256153de565b6040519080825280601f01601f191660200182016040528015614b4f576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110614b8657614b866156d2565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110614bd157614bd16156d2565b60200101906001600160f81b031916908160001a9053506000614bf584600261550a565b614c0090600161554b565b90505b6001811115614c85577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110614c4157614c416156d2565b1a60f81b828281518110614c5757614c576156d2565b60200101906001600160f81b031916908160001a90535060049490941c93614c7e816156e8565b9050614c03565b508315610fd45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108cb565b6000818152600183016020526040812054614d1b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610865565b506000610865565b60008181526001830160205260408120548015614e0c576000614d4760018361555e565b8554909150600090614d5b9060019061555e565b9050818114614dc0576000866000018281548110614d7b57614d7b6156d2565b9060005260206000200154905080876000018481548110614d9e57614d9e6156d2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614dd157614dd16156ff565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610865565b6000915050610865565b5092915050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390528316906340c10f1990604401600060405180830381600087803b158015614e8057600080fd5b505af1158015614e94573d6000803e3d6000fd5b505050506001600160a01b03821660009081526101006020526040902054158015614f2057506000826001600160a01b0316633e0075a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015614efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f1e9190615571565b115b15610b625761010c546001600160a01b03831660009081526101006020526040902055505050565b6000816402540be40081614f5d60028361583d565b614f679190615674565b614f7260028461583d565b614f7c9083615674565b6003614f88818661583d565b614f9291906156a4565b614f9c9190615654565b614fa6919061584c565b949350505050565b600060208284031215614fc057600080fd5b81356001600160e01b031981168114610fd457600080fd5b6001600160a01b03811681146124cf57600080fd5b600060208284031215614fff57600080fd5b8135610fd481614fd8565b60006020828403121561501c57600080fd5b5035919050565b6000806040838503121561503657600080fd5b82359150602083013561504881614fd8565b809150509250929050565b80151581146124cf57600080fd5b6000806000806080858703121561507757600080fd5b843561508281614fd8565b9350602085013561509281614fd8565b92506040850135915060608501356150a981615053565b939692955090935050565b600080600080600060a086880312156150cc57600080fd5b85356150d781614fd8565b945060208601356150e781614fd8565b93506040860135925060608601359150608086013561510581615053565b809150509295509295909350565b600080600080600060a0868803121561512b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060008060006080868803121561516657600080fd5b853561517181614fd8565b9450602086013561518181614fd8565b935060408601359250606086013567ffffffffffffffff808211156151a557600080fd5b818801915088601f8301126151b957600080fd5b8135818111156151c857600080fd5b8960208285010111156151da57600080fd5b9699959850939650602001949392505050565b6000806040838503121561520057600080fd5b823561520b81614fd8565b9150602083013561504881614fd8565b6000806040838503121561522e57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561525857600080fd5b873596506020880135955060408801359450606088013561527881614fd8565b9350608088013561528881614fd8565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156152b857600080fd5b82356152c381614fd8565b946020939093013593505050565b600080600080600060a086880312156152e957600080fd5b85356152f481614fd8565b9450602086013561530481614fd8565b94979496505050506040830135926060810135926080909101359150565b60008060006060848603121561533757600080fd5b833561534281614fd8565b9250602084013561535281614fd8565b929592945050506040919091013590565b6000806000806080858703121561537957600080fd5b843561538481614fd8565b9350602085013561539481614fd8565b93969395505050506040820135916060013590565b6000806000606084860312156153be57600080fd5b83356153c981614fd8565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561540f5781810151838201526020016153f7565b50506000910152565b60006020828403121561542a57600080fd5b815167ffffffffffffffff8082111561544257600080fd5b818401915084601f83011261545657600080fd5b815181811115615468576154686153de565b604051601f8201601f19908116603f01168101908382118183101715615490576154906153de565b816040528281528760208487010111156154a957600080fd5b6141398360208301602088016153f4565b6000602082840312156154cc57600080fd5b8151610fd481614fd8565b6000602082840312156154e957600080fd5b8151610fd481615053565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610865576108656154f4565b634e487b7160e01b600052601260045260246000fd5b60008261554657615546615521565b500490565b80820180821115610865576108656154f4565b81810381811115610865576108656154f4565b60006020828403121561558357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516155d88160178501602088016153f4565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516156158160288401602088016153f4565b01602801949350505050565b60208152600082518060208401526156408160408501602087016153f4565b601f01601f19169190910160400192915050565b8181036000831280158383131683831282161715614e1657614e166154f4565b80820260008212600160ff1b84141615615690576156906154f4565b8181058314821517610865576108656154f4565b6000826156b3576156b3615521565b600160ff1b8214600019841416156156cd576156cd6154f4565b500590565b634e487b7160e01b600052603260045260246000fd5b6000816156f7576156f76154f4565b506000190190565b634e487b7160e01b600052603160045260246000fd5b80825b60018086116157275750612373565b816001600160ff1b0304821115615740576157406154f4565b8086161561574d57918102915b9490941c938002615718565b600082801561576f576001811461577957615782565b6001915050610865565b82915050610865565b508161579057506000610865565b506001600082138082146157a95780156157c7576157e0565b826001600160ff1b03048311156157c2576157c26154f4565b6157e0565b826001600160ff1b03058312156157e0576157e06154f4565b50808316156157ec5750805b6157fc8360011c83840283615715565b806001600160ff1b0304821160008313161561581a5761581a6154f4565b80600160ff1b058212600083121615615835576158356154f4565b029392505050565b6000610fd460ff841683615759565b808201828112600083128015821682158216171561190e5761190e6154f456fea2646970667358221220c351c618f449403ac868ae715138a8277763527b7655d7516c2ed05f3c93f92564736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/StakingV3.json b/abis/StakingV3.json new file mode 100644 index 0000000..d1c4772 --- /dev/null +++ b/abis/StakingV3.json @@ -0,0 +1,1252 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "StakingV3", + "sourceName": "contracts/season3/StakingV3.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakerReward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talentReward", + "type": "uint256" + } + ], + "name": "RewardWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "stable", + "type": "bool" + } + ], + "name": "Stake", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentTokenWallet", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + } + ], + "name": "TalentRewardWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "talentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "talAmount", + "type": "uint256" + } + ], + "name": "Unstake", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "S", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_stableCoin", + "type": "address" + } + ], + "name": "__StableThenToken_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "activeStakes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "adminWithdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_currentTime", + "type": "uint256" + } + ], + "name": "calculateEstimatedReturns", + "outputs": [ + { + "internalType": "uint256", + "name": "stakerRewards", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "talentRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "claimRewardsOnBehalf", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claimRewardsToVirtualTAL", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_talent", + "type": "uint256" + } + ], + "name": "convertTalentToToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tal", + "type": "uint256" + } + ], + "name": "convertTokenToTalent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_usd", + "type": "uint256" + } + ], + "name": "convertUsdToTalent", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_usd", + "type": "uint256" + } + ], + "name": "convertUsdToToken", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talentTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "createStakeWithVirtualTAL", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "disable", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "disabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "end", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "globalStakes", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCheckpointAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "S", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "talentS", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_start", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_end", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_rewardsMax", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_stableCoin", + "type": "address" + }, + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_talentPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_rewardCalculator", + "type": "address" + }, + { + "internalType": "address", + "name": "_virtualTAL", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isV3", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onTransferReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardCalculator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsGiven", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsLeft", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rewardsMax", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talentTokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "sellTalentTokenForVirtualTAL", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "setToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_price", + "type": "uint256" + } + ], + "name": "setTokenPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "stableCoin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stableCoinBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "stakeAvailability", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "stakeStable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "stakes", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "talentAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "firstPurchaseTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastPurchaseTimestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "start", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_stableAmount", + "type": "uint256" + } + ], + "name": "swapStableForToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "talentPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "talentRedeemableRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "talentS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAdjustedShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalStableStored", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupporterTALInvested", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalTALInvested", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalTalentTALInvested", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalTokensStaked", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "virtualTAL", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "withdrawTalentRewards", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + } + ], + "name": "withdrawTalentRewardsToVirtualTAL", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50615c0180620000216000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80638f659adc116101f4578063be9a65551161011a578063de207d93116100ad578063efbe1c1c1161007c578063efbe1c1c1461081c578063f18d20be14610825578063f47c3ce71461082d578063fc0c546a1461083557600080fd5b8063de207d93146107ea578063e1845437146107f3578063ed2f236914610806578063ee0708051461080f57600080fd5b8063ca15c873116100e9578063ca15c873146107a8578063d1990538146107bb578063d4ce5789146107c4578063d547741f146107d757600080fd5b8063be9a655514610776578063bed900e01461077f578063c45a015514610788578063c7b8981c146107a057600080fd5b8063998873a811610192578063a8bc58f211610161578063a8bc58f21461074a578063aef2200d14610752578063b0e31b2d14610765578063b435842c1461076e57600080fd5b8063998873a8146106e75780639e1a4d19146106fa578063a217fddf14610702578063a4e47b661461070a57600080fd5b806391d14854116101ce57806391d148541461067557806396769e89146106ae578063977bee8e146106c1578063992642e5146106d457600080fd5b80638f659adc146106465780639010d07c14610659578063904846731461066c57600080fd5b80633dbf3563116102d95780636a61e5fc116102775780637eefc525116102465780637eefc525146105a95780637ff9b596146105bc57806388a7ca5c146105c55780638a9931c4146105f157600080fd5b80636a61e5fc146105525780636d9e5f451461056557806371f19f941461058d57806376f45e79146105a057600080fd5b80634be1c796116102b35780634be1c7961461052457806366d076661461052d578063683b4430146105365780636a0675cf1461054957600080fd5b80633dbf3563146104de57806342c0e5ef146104fe57806343f49d891461051157600080fd5b806325b58c8711610351578063306f387511610320578063306f38751461049d57806336568abe146104b05780633a98ef39146104c35780633b039b9e146104cb57600080fd5b806325b58c87146104665780632860c6ed1461046f5780632f2770db146104825780632f2ff15d1461048a57600080fd5b80631ea18fc51161038d5780631ea18fc51461041c578063201e65541461043357806322b3a6a11461043a578063248a9ca31461044357600080fd5b806301ffc9a7146103b4578063144fa6d7146103dc5780631914a497146103f1575b600080fd5b6103c76103c236600461582d565b610848565b60405190151581526020015b60405180910390f35b6103ef6103ea36600461566d565b610859565b005b60e254610404906001600160a01b031681565b6040516001600160a01b0390911681526020016103d3565b61042560d35481565b6040519081526020016103d3565b60016103c7565b61042560d75481565b6104256104513660046157cd565b60009081526065602052604090206001015490565b61042560d45481565b6103c761047d36600461577f565b610ac3565b6103ef610d3b565b6103ef6104983660046157e6565b610db1565b6103ef6104ab366004615936565b610ddb565b6103ef6104be3660046157e6565b611059565b60d554610425565b6103c76104d936600461566d565b6110e5565b6104256104ec36600461566d565b60cf6020526000908152604090205481565b61042561050c3660046157cd565b61116f565b61042561051f36600461566d565b61118e565b61042560dc5481565b61042560df5481565b6103ef61054436600461566d565b61126a565b61042560d95481565b6103ef6105603660046157cd565b611431565b61057861057336600461577f565b611442565b604080519283526020830191909152016103d3565b6103ef61059b3660046157cd565b6115ce565b61042560dd5481565b6104256105b73660046157cd565b6116fc565b61042560d25481565b6105d86105d33660046156e0565b61171b565b6040516001600160e01b031990911681526020016103d3565b6106266105ff36600461566d565b60cc6020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016103d3565b6103c761065436600461566d565b611a21565b61040461066736600461580b565b611a86565b61042560de5481565b6103c76106833660046157e6565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60d154610404906001600160a01b031681565b6103c76106cf36600461577f565b611a9e565b60c954610404906001600160a01b031681565b6103c76106f536600461577f565b611e4a565b610425612359565b610425600081565b6106266107183660046156a7565b60cb60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6104256123db565b6104256107603660046157cd565b6123fa565b61042560d55481565b610425612408565b61042560da5481565b61042560e05481565b60d0546104049061010090046001600160a01b031681565b6103c7612439565b6104256107b63660046157cd565b6124ac565b61042560d85481565b6104256107d23660046157cd565b6124c3565b6103ef6107e53660046157e6565b6124e2565b61042560e15481565b6103c761080136600461566d565b612507565b61042560cd5481565b60d0546103c79060ff1681565b61042560db5481565b6103ef6125e3565b6103c7612776565b60ca54610404906001600160a01b031681565b6000610853826127d9565b92915050565b600061086481612817565b60ca546001600160a01b0316156108b95760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064015b60405180910390fd5b6001600160a01b03821661090f5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206d757374206265207365740000000000000000000000000060448201526064016108b0565b6109426001600160a01b0383167f36372b0700000000000000000000000000000000000000000000000000000000612824565b61098e5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420612076616c696420455243323020746f6b656e00000000000000000060448201526064016108b0565b6000829050610a46816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0b9190810190615857565b6040518060400160405280600381526020017f54414c0000000000000000000000000000000000000000000000000000000000815250612840565b610a925760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206e616d65206973206e6f742054414c000000000000000000000060448201526064016108b0565b505060ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600060da54421015610b175760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115610b695760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615610bb95760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60d05460ff1615610c0c5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b6040516370a0823160e01b815233600482015282906001600160a01b038516906370a082319060240160206040518083038186803b158015610c4d57600080fd5b505afa158015610c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8591906158f9565b1015610cd35760405162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820616d6f756e7400000000000000000000000000000060448201526064016108b0565b6000610ce23385856001612865565b9050336001600160a01b0316846001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c83604051610d2991815260200190565b60405180910390a35060019392505050565b6000610d4681612817565b60d05460ff1615610d995760405162461bcd60e51b815260206004820152601060248201527f616c72656164792064697361626c65640000000000000000000000000000000060448201526064016108b0565b610da1613462565b5060d0805460ff19166001179055565b600082815260656020526040902060010154610dcc81612817565b610dd6838361353c565b505050565b600054610100900460ff1615808015610dfb5750600054600160ff909116105b80610e155750303b158015610e15575060005460ff166001145b610e875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b0565b6000805460ff191660011790558015610eaa576000805461ff0019166101001790555b60008511610efa5760405162461bcd60e51b815260206004820152601760248201527f5f746f6b656e50726963652063616e6e6f74206265203000000000000000000060448201526064016108b0565b60008411610f4a5760405162461bcd60e51b815260206004820152601860248201527f5f74616c656e7450726963652063616e6e6f742062652030000000000000000060448201526064016108b0565b610f5261355e565b610f5a61355e565b610f6261355e565b610f6b8761126a565b60da8a905560db89905560d888905560d080546001600160a01b03808916610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9092169190911790915560d286905560d385905560de8b905560d1805485831673ffffffffffffffffffffffffffffffffffffffff199182161790915560e28054928516929091169190911790556110076000336135dd565b801561104d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146110d75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016108b0565b6110e182826135e7565b5050565b60006110fb60ca546001600160a01b0316151590565b6111475760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b60ca54611167906001600160a01b0316336111628186613609565b613854565b506001919050565b600061085361118683670de0b6b3a76400006138e5565b60d3546138f1565b6000611199826138fd565b6111e55760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b6000826001600160a01b031663aafa93716040518163ffffffff1660e01b815260040160206040518083038186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125891906158f9565b9050611263816124c3565b9392505050565b600054610100900460ff161580801561128a5750600054600160ff909116105b806112a45750303b1580156112a4575060005460ff166001145b6113165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b0565b6000805460ff191660011790558015611339576000805461ff0019166101001790555b6001600160a01b0382166113b55760405162461bcd60e51b815260206004820152602160248201527f737461626c652d636f696e2061646472657373206d7573742062652076616c6960448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016108b0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790556113e86000336135dd565b80156110e1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600061143c81612817565b5060d255565b6001600160a01b03828116600090815260cc602052604080822060dc5460d15460da5460db5460de5460d854965163ca3e79b760e01b8152600481019390935260248301919091526044820152606481018890526084810194909452939485949293859361151893926115139291169063ca3e79b79060a40160206040518083038186803b1580156114d357600080fd5b505afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b91906158f9565b60d7546138f1565b613999565b60d1548354600285015460e15460405163be3b79dd60e01b8152600481019390935260248301919091526044820184905260648201819052608482015291925060009182916001600160a01b03169063be3b79dd9060a401604080518083038186803b15801561158757600080fd5b505afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190615912565b90999098509650505050505050565b60006115d981612817565b60ca546001600160a01b03166116315760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b60d4548211156116a95760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420656e6f75676820737461626c6520636f696e206c65667420696e207460448201527f686520636f6e747261637400000000000000000000000000000000000000000060648201526084016108b0565b60006116b4836116fc565b90508260d460008282546116c89190615aee565b909155505060ca546116e5906001600160a01b03163330846139a5565b60c954610dd6906001600160a01b03163385613854565b600061085361171383670de0b6b3a76400006138e5565b60d2546138f1565b600060da5442101561176f5760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db544211156117c15760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031633141561189657600061181584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139fc92505050565b90506118248682876000613a57565b60408051868152600060208201526001600160a01b0380841692908916917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf915050611a18565b61189f336138fd565b156119aa5760ca546001600160a01b03166119225760405162461bcd60e51b815260206004820152602a60248201527f54414c20746f6b656e206e6f7420796574207365742e20526566756e64206e6f60448201527f7420706f737369626c650000000000000000000000000000000000000000000060648201526084016108b0565b33600061193187838884612865565b9050816001600160a01b0316876001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c8360405161197891815260200190565b60405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf92505050611a18565b60405162461bcd60e51b815260206004820152602360248201527f556e7265636f676e697a6564204552433133363320746f6b656e20726563656960448201527f766564000000000000000000000000000000000000000000000000000000000060648201526084016108b0565b95945050505050565b6000611a3760ca546001600160a01b0316151590565b15611a7b5760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b611167826001613df1565b6000828152609760205260408120611263908361426b565b600060da54421015611af25760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115611b445760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615611b945760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2543390600160a01b900460ff1615611c41576000611bb3846116fc565b9050611bc23386836001613a57565b8360d46000828254611bd49190615a95565b909155505060c954611bf1906001600160a01b03163330876139a5565b60408051828152600160208201526001600160a01b0387169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a36001925050611e43565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91611c9c919060040190815260200190565b60206040518083038186803b158015611cb457600080fd5b505afa158015611cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cec91906158f9565b90506000611cf9856116fc565b9050611d083387836001613a57565b8460d46000828254611d1a9190615a95565b909155505060c954611d37906001600160a01b03163330886139a5565b60408051828152600160208201526001600160a01b0388169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a3600193505060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91611dca9160040190815260200190565b60206040518083038186803b158015611de257600080fd5b505afa158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a91906158f9565b60d754611e279190615a95565b611e319190615aee565b60d7555060e2805460ff60a01b191690555b5092915050565b600060da54421015611e9e5760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115611ef05760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615611f405760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2543390600160a01b900460ff16156120dd5760e25460405163f8b2cb4f60e01b815233600482015284916001600160a01b03169063f8b2cb4f9060240160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906158f9565b101561201d5760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420656e6f7567682054414c00000000000000000000000000000000000060448201526064016108b0565b61202a3385856001613a57565b60e2546040516306dd041960e01b8152336004820152602481018590526001600160a01b03909116906306dd041990604401600060405180830381600087803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b505060408051868152600160208201526001600160a01b03881693503392507f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a360019150611e43565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91612138919060040190815260200190565b60206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218891906158f9565b60e25460405163f8b2cb4f60e01b815233600482015291925085916001600160a01b039091169063f8b2cb4f9060240160206040518083038186803b1580156121d057600080fd5b505afa1580156121e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220891906158f9565b10156122565760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420656e6f7567682054414c00000000000000000000000000000000000060448201526064016108b0565b6122633386866001613a57565b60e2546040516306dd041960e01b8152336004820152602481018690526001600160a01b03909116906306dd041990604401600060405180830381600087803b1580156122af57600080fd5b505af11580156122c3573d6000803e3d6000fd5b505060408051878152600160208201526001600160a01b03891693503392507f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a36001925060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91611dca9160040190815260200190565b60ca546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024015b60206040518083038186803b15801561239e57600080fd5b505afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d691906158f9565b905090565b600060d65460d95460d8546123f09190615aee565b6123d69190615aee565b600061085361050c836116fc565b60c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401612386565b600061244f60ca546001600160a01b0316151590565b61249b5760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b6124a6336000613df1565b50600190565b600081815260976020526040812061085390614277565b60006108536124d48360d3546138e5565b670de0b6b3a76400006138f1565b6000828152606560205260409020600101546124fd81612817565b610dd683836135e7565b600061251d60ca546001600160a01b0316151590565b156125615760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2546001600160a01b031663e58306f93361257d8186613609565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156125c357600080fd5b505af11580156125d7573d6000803e3d6000fd5b50600195945050505050565b60006125ee81612817565b60d05460ff1680612600575060db5442105b61264c5760405162461bcd60e51b815260206004820152601e60248201527f64697361626c6564204f52206e6f7420656e64206f66207374616b696e67000060448201526064016108b0565b60cd54156126e85760405162461bcd60e51b815260206004820152605060248201527f746865726520617265207374696c6c207374616b657320616363756d756c617460448201527f696e6720726577617264732e2043616c6c2060636c61696d526577617264734f60648201527f6e426568616c6660206f6e207468656d00000000000000000000000000000000608482015260a4016108b0565b60006126f26123db565b9050600081116127445760405162461bcd60e51b815260206004820152601860248201527f6e6f7468696e67206c65667420746f207769746864726177000000000000000060448201526064016108b0565b60ca5461275b906001600160a01b03163383613854565b8060d6600082825461276d9190615a95565b90915550505050565b600061278c60ca546001600160a01b0316151590565b156127d05760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b6123d633611a21565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610853575061085382614281565b61282181336142cf565b50565b600061282f8361434f565b801561126357506112638383614382565b6000815183511480156112635750508051602091820120825192909101919091201490565b60e2546000908590600160a01b900460ff1615612e2357612885856138fd565b6128d15760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b600084116129195760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b612924868685614480565b6001600160a01b03808716600090815260cc6020908152604080832060cb8352818420948a16845293909152902060018201546129a35760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108b0565b85816001015410156129b457600080fd5b6000612a52612a488860d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b505afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4391906158f9565b6138e5565b83600101546138f1565b90506000612af2612a678460000154846138e5565b60d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed91906158f9565b6138f1565b90506000876001811115612b0857612b08615b5e565b1415612be15760ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b158015612b5157600080fd5b505afa158015612b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8991906158f9565b1015612be15760405162461bcd60e51b815260206004820152602160248201527f6e6f7420656e6f7567682054414c20746f2066756c66696c6c207265717565736044820152601d60fa1b60648201526084016108b0565b87836001016000828254612bf59190615aee565b9091555050825481908490600090612c0e908490615aee565b9091555050835481908590600090612c27908490615aee565b925050819055508060d56000828254612c409190615aee565b909155505060d05460405163f7bad69f60e01b81526001600160a01b038c811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b158015612c9057600080fd5b505afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc891906157ab565b15612cea578060e06000828254612cdf9190615aee565b90915550612d029050565b8060e16000828254612cfc9190615aee565b90915550505b8254612d2157600160cd6000828254612d1b9190615aee565b90915550505b6001876001811115612d3557612d35615b5e565b1415612e0457604051632770a7eb60e21b8152336004820152602481018990526001600160a01b038a1690639dc29fac90604401600060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505060e25460405163e58306f960e01b8152336004820152602481018590526001600160a01b03909116925063e58306f99150604401600060405180830381600087803b158015612de757600080fd5b505af1158015612dfb573d6000803e3d6000fd5b50505050612e18565b612e0e8989614b31565b612e188a82614b95565b945061345992505050565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91612e7e919060040190815260200190565b60206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece91906158f9565b9050612ed9866138fd565b612f255760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008511612f6d5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b612f78878786614480565b6001600160a01b03808816600090815260cc6020908152604080832060cb8352818420948b1684529390915290206001820154612ff75760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108b0565b868160010154101561300857600080fd5b600061305f612a488960d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b90506000613074612a678460000154846138e5565b9050600088600181111561308a5761308a615b5e565b14156131635760ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156130d357600080fd5b505afa1580156130e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310b91906158f9565b10156131635760405162461bcd60e51b815260206004820152602160248201527f6e6f7420656e6f7567682054414c20746f2066756c66696c6c207265717565736044820152601d60fa1b60648201526084016108b0565b888360010160008282546131779190615aee565b9091555050825481908490600090613190908490615aee565b90915550508354819085906000906131a9908490615aee565b925050819055508060d560008282546131c29190615aee565b909155505060d05460405163f7bad69f60e01b81526001600160a01b038d811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b15801561321257600080fd5b505afa158015613226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324a91906157ab565b1561326c578060e060008282546132619190615aee565b909155506132849050565b8060e1600082825461327e9190615aee565b90915550505b82546132a357600160cd600082825461329d9190615aee565b90915550505b60018860018111156132b7576132b7615b5e565b141561338657604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b15801561330557600080fd5b505af1158015613319573d6000803e3d6000fd5b505060e25460405163e58306f960e01b8152336004820152602481018590526001600160a01b03909116925063e58306f99150604401600060405180830381600087803b15801561336957600080fd5b505af115801561337d573d6000803e3d6000fd5b5050505061339a565b6133908a8a614b31565b61339a8b82614b95565b60d1546001600160a01b03878116600090815260cc6020526040908190205490516333b9a16760e11b8152600481019190915292985086955016925063677342ce915060240160206040518083038186803b1580156133f857600080fd5b505afa15801561340c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343091906158f9565b60d75461343d9190615a95565b6134479190615aee565b60d7555060e2805460ff60a01b191690555b50949350505050565b60d05460ff161561346f57565b60d55461347857565b60d75460d15460da5460db5460de5460d85460405163ca3e79b760e01b815260048101949094526024840192909252604483015242606483015260848201526001600160a01b039091169063ca3e79b79060a40160206040518083038186803b1580156134e457600080fd5b505afa1580156134f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351c91906158f9565b6135269190615aad565b60dc546135339190615a95565b60dc554260de55565b6135468282614bac565b6000828152609760205260409020610dd69082614c4e565b600054610100900460ff166135db5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b0565b565b6110e1828261353c565b6135f18282614c63565b6000828152609760205260409020610dd69082614ce6565b6000816001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561364457600080fd5b505afa158015613658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367c919061568a565b6001600160a01b0316836001600160a01b0316146137025760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79207468652074616c656e742063616e2077697468647261772074686560448201527f6972206f776e207368617265730000000000000000000000000000000000000060648201526084016108b0565b6001600160a01b03808416600090815260cc6020908152604080832060d15482517f58931c460000000000000000000000000000000000000000000000000000000081529251919516926358931c469260048082019391829003018186803b15801561376d57600080fd5b505afa158015613781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a591906158f9565b613819856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137e157600080fd5b505afa1580156137f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906158f9565b836003015460dd5461382b9190615aee565b6138359190615acf565b61383f9190615aad565b60dd5460039093019290925550905092915050565b6040516001600160a01b038316602482015260448101829052610dd69084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152614cfb565b60006112638284615acf565b60006112638284615aad565b60d0546040517f099aba560000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526000926101009004169063099aba569060240160206040518083038186803b15801561396157600080fd5b505afa158015613975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906157ab565b60006112638284615a95565b6040516001600160a01b03808516602483015283166044820152606481018290526139f69085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613899565b50505050565b60008151601414613a4f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c69642064617461206c656e67746820666f7220616464726573730060448201526064016108b0565b506014015190565b60e2548490600160a01b900460ff1615613b7657613a74846138fd565b613ac05760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008311613b085760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b60d05460ff1615613b5b5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b613b66858584614480565b613b71858585614de0565b613dea565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91613bd1919060040190815260200190565b60206040518083038186803b158015613be957600080fd5b505afa158015613bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2191906158f9565b9050613c2c856138fd565b613c785760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008411613cc05760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b60d05460ff1615613d135760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b613d1e868685614480565b613d29868686614de0565b60d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91613d719160040190815260200190565b60206040518083038186803b158015613d8957600080fd5b505afa158015613d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc191906158f9565b60d754613dce9190615a95565b613dd89190615aee565b60d7555060e2805460ff60a01b191690555b5050505050565b60e2548290600160a01b900460ff1615613fa257613e0d613462565b600080613e1985614f93565b90925090506000846001811115613e3257613e32615b5e565b1415613e995760ca54613e4f906001600160a01b03168684613854565b60408051838152600060208201526001600160a01b038716917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2613dea565b6001846001811115613ead57613ead615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038781166004830152602482018590529091169063e58306f990604401600060405180830381600087803b158015613f0157600080fd5b505af1158015613f15573d6000803e3d6000fd5b505060408051858152600060208201526001600160a01b03891693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a333925001613e8c565b60405162461bcd60e51b815260206004820152601e60248201527f556e7265636f676e697a656420636865636b706f696e7420616374696f6e000060448201526064016108b0565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91613ffd919060040190815260200190565b60206040518083038186803b15801561401557600080fd5b505afa158015614029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404d91906158f9565b9050614057613462565b60008061406386614f93565b9092509050600085600181111561407c5761407c615b5e565b14156140e35760ca54614099906001600160a01b03168784613854565b60408051838152600060208201526001600160a01b038816917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a26141a4565b60018560018111156140f7576140f7615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038881166004830152602482018590529091169063e58306f990604401600060405180830381600087803b15801561414b57600080fd5b505af115801561415f573d6000803e3d6000fd5b505060408051858152600060208201526001600160a01b038a1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a3339250016140d6565b505060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce916141ee9160040190815260200190565b60206040518083038186803b15801561420657600080fd5b505afa15801561421a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423e91906158f9565b60d75461424b9190615a95565b6142559190615aee565b60d7555060e2805460ff60a01b19169055505050565b60006112638383615108565b6000610853825490565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061085357506301ffc9a760e01b6001600160e01b0319831614610853565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166110e15761430d816001600160a01b03166014615132565b614318836020615132565b6040516020016143299291906159e1565b60408051601f198184030181529082905262461bcd60e51b82526108b091600401615a62565b6000614362826301ffc9a760e01b614382565b8015610853575061437b826001600160e01b0319614382565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b179052905160009190829081906001600160a01b03871690617530906143fe9086906159c5565b6000604051808303818686fa925050503d806000811461443a576040519150601f19603f3d011682016040523d82523d6000602084013e61443f565b606091505b509150915060208151101561445a5760009350505050610853565b81801561447657508080602001905181019061447691906157ab565b9695505050505050565b60e2548390600160a01b900460ff161561472b5761449c613462565b6000806144a886614f93565b60d054919350915060ff16156144d157600160cd60008282546144cb9190615aee565b90915550505b6144db8183615a95565b6144e65750506139f6565b6000856001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561452157600080fd5b505afa158015614535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614559919061568a565b905060006145678288613609565b9050600086600181111561457d5761457d615b5e565b14156145fb5760ca5461459a906001600160a01b03168383613854565b60ca546145b1906001600160a01b03168986613854565b60408051858152602081018390526001600160a01b038a16917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2614722565b600186600181111561460f5761460f615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038481166004830152602482018490529091169063e58306f990604401600060405180830381600087803b15801561466357600080fd5b505af1158015614677573d6000803e3d6000fd5b505060e25460405163e58306f960e01b81526001600160a01b038c8116600483015260248201899052909116925063e58306f99150604401600060405180830381600087803b1580156146c957600080fd5b505af11580156146dd573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b038c1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a3339250016145ee565b505050506139f6565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91614786919060040190815260200190565b60206040518083038186803b15801561479e57600080fd5b505afa1580156147b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147d691906158f9565b90506147e0613462565b6000806147ec87614f93565b60d054919350915060ff161561481557600160cd600082825461480f9190615aee565b90915550505b61481f8183615a95565b61482a575050614a6b565b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061489d919061568a565b905060006148ab8289613609565b905060008760018111156148c1576148c1615b5e565b141561493f5760ca546148de906001600160a01b03168383613854565b60ca546148f5906001600160a01b03168a86613854565b60408051858152602081018390526001600160a01b038b16917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2614a66565b600187600181111561495357614953615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038481166004830152602482018490529091169063e58306f990604401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505060e25460405163e58306f960e01b81526001600160a01b038d8116600483015260248201899052909116925063e58306f99150604401600060405180830381600087803b158015614a0d57600080fd5b505af1158015614a21573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b038d1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a333925001614932565b505050505b60d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91614ab39160040190815260200190565b60206040518083038186803b158015614acb57600080fd5b505afa158015614adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b0391906158f9565b60d754614b109190615a95565b614b1a9190615aee565b60d7555060e2805460ff60a01b1916905550505050565b604051632770a7eb60e21b8152306004820152602481018290526001600160a01b03831690639dc29fac90604401600060405180830381600087803b158015614b7957600080fd5b505af1158015614b8d573d6000803e3d6000fd5b505050505050565b60ca546110e1906001600160a01b03168383613854565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166110e15760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055614c0a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611263836001600160a01b038416615313565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156110e15760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611263836001600160a01b038416615362565b6000614d50826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154559092919063ffffffff16565b805190915015610dd65780806020019051810190614d6e91906157ab565b610dd65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108b0565b6000614deb8261116f565b6001600160a01b03808616600081815260cb60209081526040808320948916835293815283822092825260cc90529190912081549293509091614e4757600160cd6000828254614e3b9190615a95565b90915550504260028301555b426003830155805484908290600090614e61908490615a95565b9091555050815484908390600090614e7a908490615a95565b9250508190555082826001016000828254614e959190615a95565b925050819055508360df6000828254614eae9190615a95565b909155505060d05460405163f7bad69f60e01b81526001600160a01b0388811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b158015614efe57600080fd5b505afa158015614f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f3691906157ab565b15614f58578360e06000828254614f4d9190615a95565b90915550614f709050565b8360e16000828254614f6a9190615a95565b90915550505b8360d56000828254614f829190615a95565b90915550614b8d905086868561546c565b6001600160a01b03818116600090815260cc602052604080822060d1548154600283015460dc5460e15460e054965163be3b79dd60e01b81526004810194909452602484019290925260448301526064820152608481019390935292938493919284928392169063be3b79dd9060a401604080518083038186803b15801561501a57600080fd5b505afa15801561502e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150529190615912565b90925090506150618183615a95565b60d960008282546150729190615a95565b909155505060dc54600284015542600184015560df5461509657600060dd556150fd565b6150f960dd546115136150f18460d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b60df546138f1565b60dd555b909590945092505050565b600082600001828154811061511f5761511f615b8a565b9060005260206000200154905092915050565b60606000615141836002615acf565b61514c906002615a95565b67ffffffffffffffff81111561516457615164615ba0565b6040519080825280601f01601f19166020018201604052801561518e576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106151c5576151c5615b8a565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061521057615210615b8a565b60200101906001600160f81b031916908160001a9053506000615234846002615acf565b61523f906001615a95565b90505b60018111156152c4577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061528057615280615b8a565b1a60f81b82828151811061529657615296615b8a565b60200101906001600160f81b031916908160001a90535060049490941c936152bd81615b31565b9050615242565b5083156112635760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b0565b600081815260018301602052604081205461535a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610853565b506000610853565b6000818152600183016020526040812054801561544b576000615386600183615aee565b855490915060009061539a90600190615aee565b90508181146153ff5760008660000182815481106153ba576153ba615b8a565b90600052602060002001549050808760000184815481106153dd576153dd615b8a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061541057615410615b74565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610853565b6000915050610853565b606061546484846000856154ec565b949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390528316906340c10f1990604401600060405180830381600087803b1580156154cf57600080fd5b505af11580156154e3573d6000803e3d6000fd5b50505050505050565b6060824710156155645760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108b0565b6001600160a01b0385163b6155bb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b0565b600080866001600160a01b031685876040516155d791906159c5565b60006040518083038185875af1925050503d8060008114615614576040519150601f19603f3d011682016040523d82523d6000602084013e615619565b606091505b5091509150615629828286615634565b979650505050505050565b60608315615643575081611263565b8251156156535782518084602001fd5b8160405162461bcd60e51b81526004016108b09190615a62565b60006020828403121561567f57600080fd5b813561126381615bb6565b60006020828403121561569c57600080fd5b815161126381615bb6565b600080604083850312156156ba57600080fd5b82356156c581615bb6565b915060208301356156d581615bb6565b809150509250929050565b6000806000806000608086880312156156f857600080fd5b853561570381615bb6565b9450602086013561571381615bb6565b935060408601359250606086013567ffffffffffffffff8082111561573757600080fd5b818801915088601f83011261574b57600080fd5b81358181111561575a57600080fd5b89602082850101111561576c57600080fd5b9699959850939650602001949392505050565b6000806040838503121561579257600080fd5b823561579d81615bb6565b946020939093013593505050565b6000602082840312156157bd57600080fd5b8151801515811461126357600080fd5b6000602082840312156157df57600080fd5b5035919050565b600080604083850312156157f957600080fd5b8235915060208301356156d581615bb6565b6000806040838503121561581e57600080fd5b50508035926020909101359150565b60006020828403121561583f57600080fd5b81356001600160e01b03198116811461126357600080fd5b60006020828403121561586957600080fd5b815167ffffffffffffffff8082111561588157600080fd5b818401915084601f83011261589557600080fd5b8151818111156158a7576158a7615ba0565b604051601f8201601f19908116603f011681019083821181831017156158cf576158cf615ba0565b816040528281528760208487010111156158e857600080fd5b615629836020830160208801615b05565b60006020828403121561590b57600080fd5b5051919050565b6000806040838503121561592557600080fd5b505080516020909101519092909150565b60008060008060008060008060006101208a8c03121561595557600080fd5b8935985060208a0135975060408a0135965060608a013561597581615bb6565b955060808a013561598581615bb6565b945060a08a0135935060c08a0135925060e08a01356159a381615bb6565b91506101008a01356159b481615bb6565b809150509295985092959850929598565b600082516159d7818460208701615b05565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615a19816017850160208801615b05565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615a56816028840160208801615b05565b01602801949350505050565b6020815260008251806020840152615a81816040850160208701615b05565b601f01601f19169190910160400192915050565b60008219821115615aa857615aa8615b48565b500190565b600082615aca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615ae957615ae9615b48565b500290565b600082821015615b0057615b00615b48565b500390565b60005b83811015615b20578181015183820152602001615b08565b838111156139f65750506000910152565b600081615b4057615b40615b48565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461282157600080fdfea264697066735822122080593b54b4493f199565977edad69ec239bd18f19bfbad019c2d60ef18135a2064736f6c63430008070033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103af5760003560e01c80638f659adc116101f4578063be9a65551161011a578063de207d93116100ad578063efbe1c1c1161007c578063efbe1c1c1461081c578063f18d20be14610825578063f47c3ce71461082d578063fc0c546a1461083557600080fd5b8063de207d93146107ea578063e1845437146107f3578063ed2f236914610806578063ee0708051461080f57600080fd5b8063ca15c873116100e9578063ca15c873146107a8578063d1990538146107bb578063d4ce5789146107c4578063d547741f146107d757600080fd5b8063be9a655514610776578063bed900e01461077f578063c45a015514610788578063c7b8981c146107a057600080fd5b8063998873a811610192578063a8bc58f211610161578063a8bc58f21461074a578063aef2200d14610752578063b0e31b2d14610765578063b435842c1461076e57600080fd5b8063998873a8146106e75780639e1a4d19146106fa578063a217fddf14610702578063a4e47b661461070a57600080fd5b806391d14854116101ce57806391d148541461067557806396769e89146106ae578063977bee8e146106c1578063992642e5146106d457600080fd5b80638f659adc146106465780639010d07c14610659578063904846731461066c57600080fd5b80633dbf3563116102d95780636a61e5fc116102775780637eefc525116102465780637eefc525146105a95780637ff9b596146105bc57806388a7ca5c146105c55780638a9931c4146105f157600080fd5b80636a61e5fc146105525780636d9e5f451461056557806371f19f941461058d57806376f45e79146105a057600080fd5b80634be1c796116102b35780634be1c7961461052457806366d076661461052d578063683b4430146105365780636a0675cf1461054957600080fd5b80633dbf3563146104de57806342c0e5ef146104fe57806343f49d891461051157600080fd5b806325b58c8711610351578063306f387511610320578063306f38751461049d57806336568abe146104b05780633a98ef39146104c35780633b039b9e146104cb57600080fd5b806325b58c87146104665780632860c6ed1461046f5780632f2770db146104825780632f2ff15d1461048a57600080fd5b80631ea18fc51161038d5780631ea18fc51461041c578063201e65541461043357806322b3a6a11461043a578063248a9ca31461044357600080fd5b806301ffc9a7146103b4578063144fa6d7146103dc5780631914a497146103f1575b600080fd5b6103c76103c236600461582d565b610848565b60405190151581526020015b60405180910390f35b6103ef6103ea36600461566d565b610859565b005b60e254610404906001600160a01b031681565b6040516001600160a01b0390911681526020016103d3565b61042560d35481565b6040519081526020016103d3565b60016103c7565b61042560d75481565b6104256104513660046157cd565b60009081526065602052604090206001015490565b61042560d45481565b6103c761047d36600461577f565b610ac3565b6103ef610d3b565b6103ef6104983660046157e6565b610db1565b6103ef6104ab366004615936565b610ddb565b6103ef6104be3660046157e6565b611059565b60d554610425565b6103c76104d936600461566d565b6110e5565b6104256104ec36600461566d565b60cf6020526000908152604090205481565b61042561050c3660046157cd565b61116f565b61042561051f36600461566d565b61118e565b61042560dc5481565b61042560df5481565b6103ef61054436600461566d565b61126a565b61042560d95481565b6103ef6105603660046157cd565b611431565b61057861057336600461577f565b611442565b604080519283526020830191909152016103d3565b6103ef61059b3660046157cd565b6115ce565b61042560dd5481565b6104256105b73660046157cd565b6116fc565b61042560d25481565b6105d86105d33660046156e0565b61171b565b6040516001600160e01b031990911681526020016103d3565b6106266105ff36600461566d565b60cc6020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016103d3565b6103c761065436600461566d565b611a21565b61040461066736600461580b565b611a86565b61042560de5481565b6103c76106833660046157e6565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60d154610404906001600160a01b031681565b6103c76106cf36600461577f565b611a9e565b60c954610404906001600160a01b031681565b6103c76106f536600461577f565b611e4a565b610425612359565b610425600081565b6106266107183660046156a7565b60cb60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6104256123db565b6104256107603660046157cd565b6123fa565b61042560d55481565b610425612408565b61042560da5481565b61042560e05481565b60d0546104049061010090046001600160a01b031681565b6103c7612439565b6104256107b63660046157cd565b6124ac565b61042560d85481565b6104256107d23660046157cd565b6124c3565b6103ef6107e53660046157e6565b6124e2565b61042560e15481565b6103c761080136600461566d565b612507565b61042560cd5481565b60d0546103c79060ff1681565b61042560db5481565b6103ef6125e3565b6103c7612776565b60ca54610404906001600160a01b031681565b6000610853826127d9565b92915050565b600061086481612817565b60ca546001600160a01b0316156108b95760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064015b60405180910390fd5b6001600160a01b03821661090f5760405162461bcd60e51b815260206004820152601360248201527f41646472657373206d757374206265207365740000000000000000000000000060448201526064016108b0565b6109426001600160a01b0383167f36372b0700000000000000000000000000000000000000000000000000000000612824565b61098e5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420612076616c696420455243323020746f6b656e00000000000000000060448201526064016108b0565b6000829050610a46816001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156109cf57600080fd5b505afa1580156109e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0b9190810190615857565b6040518060400160405280600381526020017f54414c0000000000000000000000000000000000000000000000000000000000815250612840565b610a925760405162461bcd60e51b815260206004820152601560248201527f746f6b656e206e616d65206973206e6f742054414c000000000000000000000060448201526064016108b0565b505060ca805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600060da54421015610b175760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115610b695760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615610bb95760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60d05460ff1615610c0c5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b6040516370a0823160e01b815233600482015282906001600160a01b038516906370a082319060240160206040518083038186803b158015610c4d57600080fd5b505afa158015610c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8591906158f9565b1015610cd35760405162461bcd60e51b815260206004820152601160248201527f6e6f7420656e6f75676820616d6f756e7400000000000000000000000000000060448201526064016108b0565b6000610ce23385856001612865565b9050336001600160a01b0316846001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c83604051610d2991815260200190565b60405180910390a35060019392505050565b6000610d4681612817565b60d05460ff1615610d995760405162461bcd60e51b815260206004820152601060248201527f616c72656164792064697361626c65640000000000000000000000000000000060448201526064016108b0565b610da1613462565b5060d0805460ff19166001179055565b600082815260656020526040902060010154610dcc81612817565b610dd6838361353c565b505050565b600054610100900460ff1615808015610dfb5750600054600160ff909116105b80610e155750303b158015610e15575060005460ff166001145b610e875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b0565b6000805460ff191660011790558015610eaa576000805461ff0019166101001790555b60008511610efa5760405162461bcd60e51b815260206004820152601760248201527f5f746f6b656e50726963652063616e6e6f74206265203000000000000000000060448201526064016108b0565b60008411610f4a5760405162461bcd60e51b815260206004820152601860248201527f5f74616c656e7450726963652063616e6e6f742062652030000000000000000060448201526064016108b0565b610f5261355e565b610f5a61355e565b610f6261355e565b610f6b8761126a565b60da8a905560db89905560d888905560d080546001600160a01b03808916610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9092169190911790915560d286905560d385905560de8b905560d1805485831673ffffffffffffffffffffffffffffffffffffffff199182161790915560e28054928516929091169190911790556110076000336135dd565b801561104d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146110d75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016108b0565b6110e182826135e7565b5050565b60006110fb60ca546001600160a01b0316151590565b6111475760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b60ca54611167906001600160a01b0316336111628186613609565b613854565b506001919050565b600061085361118683670de0b6b3a76400006138e5565b60d3546138f1565b6000611199826138fd565b6111e55760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b6000826001600160a01b031663aafa93716040518163ffffffff1660e01b815260040160206040518083038186803b15801561122057600080fd5b505afa158015611234573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125891906158f9565b9050611263816124c3565b9392505050565b600054610100900460ff161580801561128a5750600054600160ff909116105b806112a45750303b1580156112a4575060005460ff166001145b6113165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108b0565b6000805460ff191660011790558015611339576000805461ff0019166101001790555b6001600160a01b0382166113b55760405162461bcd60e51b815260206004820152602160248201527f737461626c652d636f696e2061646472657373206d7573742062652076616c6960448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016108b0565b60c9805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790556113e86000336135dd565b80156110e1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600061143c81612817565b5060d255565b6001600160a01b03828116600090815260cc602052604080822060dc5460d15460da5460db5460de5460d854965163ca3e79b760e01b8152600481019390935260248301919091526044820152606481018890526084810194909452939485949293859361151893926115139291169063ca3e79b79060a40160206040518083038186803b1580156114d357600080fd5b505afa1580156114e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150b91906158f9565b60d7546138f1565b613999565b60d1548354600285015460e15460405163be3b79dd60e01b8152600481019390935260248301919091526044820184905260648201819052608482015291925060009182916001600160a01b03169063be3b79dd9060a401604080518083038186803b15801561158757600080fd5b505afa15801561159b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115bf9190615912565b90999098509650505050505050565b60006115d981612817565b60ca546001600160a01b03166116315760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b60d4548211156116a95760405162461bcd60e51b815260206004820152602b60248201527f6e6f7420656e6f75676820737461626c6520636f696e206c65667420696e207460448201527f686520636f6e747261637400000000000000000000000000000000000000000060648201526084016108b0565b60006116b4836116fc565b90508260d460008282546116c89190615aee565b909155505060ca546116e5906001600160a01b03163330846139a5565b60c954610dd6906001600160a01b03163385613854565b600061085361171383670de0b6b3a76400006138e5565b60d2546138f1565b600060da5442101561176f5760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db544211156117c15760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031633141561189657600061181584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139fc92505050565b90506118248682876000613a57565b60408051868152600060208201526001600160a01b0380841692908916917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf915050611a18565b61189f336138fd565b156119aa5760ca546001600160a01b03166119225760405162461bcd60e51b815260206004820152602a60248201527f54414c20746f6b656e206e6f7420796574207365742e20526566756e64206e6f60448201527f7420706f737369626c650000000000000000000000000000000000000000000060648201526084016108b0565b33600061193187838884612865565b9050816001600160a01b0316876001600160a01b03167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c8360405161197891815260200190565b60405180910390a37f88a7ca5c75456956db1e96e88ee87aca8bdad85895835c2dc76fcc96396569cf92505050611a18565b60405162461bcd60e51b815260206004820152602360248201527f556e7265636f676e697a6564204552433133363320746f6b656e20726563656960448201527f766564000000000000000000000000000000000000000000000000000000000060648201526084016108b0565b95945050505050565b6000611a3760ca546001600160a01b0316151590565b15611a7b5760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b611167826001613df1565b6000828152609760205260408120611263908361426b565b600060da54421015611af25760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115611b445760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615611b945760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2543390600160a01b900460ff1615611c41576000611bb3846116fc565b9050611bc23386836001613a57565b8360d46000828254611bd49190615a95565b909155505060c954611bf1906001600160a01b03163330876139a5565b60408051828152600160208201526001600160a01b0387169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a36001925050611e43565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91611c9c919060040190815260200190565b60206040518083038186803b158015611cb457600080fd5b505afa158015611cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cec91906158f9565b90506000611cf9856116fc565b9050611d083387836001613a57565b8460d46000828254611d1a9190615a95565b909155505060c954611d37906001600160a01b03163330886139a5565b60408051828152600160208201526001600160a01b0388169133917f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a3600193505060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91611dca9160040190815260200190565b60206040518083038186803b158015611de257600080fd5b505afa158015611df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1a91906158f9565b60d754611e279190615a95565b611e319190615aee565b60d7555060e2805460ff60a01b191690555b5092915050565b600060da54421015611e9e5760405162461bcd60e51b815260206004820152601e60248201527f7374616b696e6720706572696f64206e6f74207965742073746172746564000060448201526064016108b0565b60db54421115611ef05760405162461bcd60e51b815260206004820152601f60248201527f7374616b696e6720706572696f6420616c72656164792066696e69736865640060448201526064016108b0565b60ca546001600160a01b031615611f405760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2543390600160a01b900460ff16156120dd5760e25460405163f8b2cb4f60e01b815233600482015284916001600160a01b03169063f8b2cb4f9060240160206040518083038186803b158015611f9757600080fd5b505afa158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf91906158f9565b101561201d5760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420656e6f7567682054414c00000000000000000000000000000000000060448201526064016108b0565b61202a3385856001613a57565b60e2546040516306dd041960e01b8152336004820152602481018590526001600160a01b03909116906306dd041990604401600060405180830381600087803b15801561207657600080fd5b505af115801561208a573d6000803e3d6000fd5b505060408051868152600160208201526001600160a01b03881693503392507f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a360019150611e43565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91612138919060040190815260200190565b60206040518083038186803b15801561215057600080fd5b505afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218891906158f9565b60e25460405163f8b2cb4f60e01b815233600482015291925085916001600160a01b039091169063f8b2cb4f9060240160206040518083038186803b1580156121d057600080fd5b505afa1580156121e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220891906158f9565b10156122565760405162461bcd60e51b815260206004820152600e60248201527f6e6f7420656e6f7567682054414c00000000000000000000000000000000000060448201526064016108b0565b6122633386866001613a57565b60e2546040516306dd041960e01b8152336004820152602481018690526001600160a01b03909116906306dd041990604401600060405180830381600087803b1580156122af57600080fd5b505af11580156122c3573d6000803e3d6000fd5b505060408051878152600160208201526001600160a01b03891693503392507f929ad80cfbf532d1e879107de0553ee80942d13c8043f2b2615f9b15b87d10da910160405180910390a36001925060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91611dca9160040190815260200190565b60ca546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024015b60206040518083038186803b15801561239e57600080fd5b505afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d691906158f9565b905090565b600060d65460d95460d8546123f09190615aee565b6123d69190615aee565b600061085361050c836116fc565b60c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401612386565b600061244f60ca546001600160a01b0316151590565b61249b5760405162461bcd60e51b815260206004820152601560248201527f54414c20746f6b656e206e6f742079657420736574000000000000000000000060448201526064016108b0565b6124a6336000613df1565b50600190565b600081815260976020526040812061085390614277565b60006108536124d48360d3546138e5565b670de0b6b3a76400006138f1565b6000828152606560205260409020600101546124fd81612817565b610dd683836135e7565b600061251d60ca546001600160a01b0316151590565b156125615760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b60e2546001600160a01b031663e58306f93361257d8186613609565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156125c357600080fd5b505af11580156125d7573d6000803e3d6000fd5b50600195945050505050565b60006125ee81612817565b60d05460ff1680612600575060db5442105b61264c5760405162461bcd60e51b815260206004820152601e60248201527f64697361626c6564204f52206e6f7420656e64206f66207374616b696e67000060448201526064016108b0565b60cd54156126e85760405162461bcd60e51b815260206004820152605060248201527f746865726520617265207374696c6c207374616b657320616363756d756c617460448201527f696e6720726577617264732e2043616c6c2060636c61696d526577617264734f60648201527f6e426568616c6660206f6e207468656d00000000000000000000000000000000608482015260a4016108b0565b60006126f26123db565b9050600081116127445760405162461bcd60e51b815260206004820152601860248201527f6e6f7468696e67206c65667420746f207769746864726177000000000000000060448201526064016108b0565b60ca5461275b906001600160a01b03163383613854565b8060d6600082825461276d9190615a95565b90915550505050565b600061278c60ca546001600160a01b0316151590565b156127d05760405162461bcd60e51b815260206004820152601460248201527314dd18589b194818dbda5b88191a5cd8589b195960621b60448201526064016108b0565b6123d633611a21565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610853575061085382614281565b61282181336142cf565b50565b600061282f8361434f565b801561126357506112638383614382565b6000815183511480156112635750508051602091820120825192909101919091201490565b60e2546000908590600160a01b900460ff1615612e2357612885856138fd565b6128d15760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b600084116129195760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b612924868685614480565b6001600160a01b03808716600090815260cc6020908152604080832060cb8352818420948a16845293909152902060018201546129a35760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108b0565b85816001015410156129b457600080fd5b6000612a52612a488860d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b505afa158015612a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4391906158f9565b6138e5565b83600101546138f1565b90506000612af2612a678460000154846138e5565b60d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612ab557600080fd5b505afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed91906158f9565b6138f1565b90506000876001811115612b0857612b08615b5e565b1415612be15760ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b158015612b5157600080fd5b505afa158015612b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8991906158f9565b1015612be15760405162461bcd60e51b815260206004820152602160248201527f6e6f7420656e6f7567682054414c20746f2066756c66696c6c207265717565736044820152601d60fa1b60648201526084016108b0565b87836001016000828254612bf59190615aee565b9091555050825481908490600090612c0e908490615aee565b9091555050835481908590600090612c27908490615aee565b925050819055508060d56000828254612c409190615aee565b909155505060d05460405163f7bad69f60e01b81526001600160a01b038c811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b158015612c9057600080fd5b505afa158015612ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc891906157ab565b15612cea578060e06000828254612cdf9190615aee565b90915550612d029050565b8060e16000828254612cfc9190615aee565b90915550505b8254612d2157600160cd6000828254612d1b9190615aee565b90915550505b6001876001811115612d3557612d35615b5e565b1415612e0457604051632770a7eb60e21b8152336004820152602481018990526001600160a01b038a1690639dc29fac90604401600060405180830381600087803b158015612d8357600080fd5b505af1158015612d97573d6000803e3d6000fd5b505060e25460405163e58306f960e01b8152336004820152602481018590526001600160a01b03909116925063e58306f99150604401600060405180830381600087803b158015612de757600080fd5b505af1158015612dfb573d6000803e3d6000fd5b50505050612e18565b612e0e8989614b31565b612e188a82614b95565b945061345992505050565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91612e7e919060040190815260200190565b60206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece91906158f9565b9050612ed9866138fd565b612f255760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008511612f6d5760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b612f78878786614480565b6001600160a01b03808816600090815260cc6020908152604080832060cb8352818420948b1684529390915290206001820154612ff75760405162461bcd60e51b815260206004820152601460248201527f7374616b6520646f6573206e6f7420657869737400000000000000000000000060448201526064016108b0565b868160010154101561300857600080fd5b600061305f612a488960d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b90506000613074612a678460000154846138e5565b9050600088600181111561308a5761308a615b5e565b14156131635760ca546040516370a0823160e01b815230600482015282916001600160a01b0316906370a082319060240160206040518083038186803b1580156130d357600080fd5b505afa1580156130e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310b91906158f9565b10156131635760405162461bcd60e51b815260206004820152602160248201527f6e6f7420656e6f7567682054414c20746f2066756c66696c6c207265717565736044820152601d60fa1b60648201526084016108b0565b888360010160008282546131779190615aee565b9091555050825481908490600090613190908490615aee565b90915550508354819085906000906131a9908490615aee565b925050819055508060d560008282546131c29190615aee565b909155505060d05460405163f7bad69f60e01b81526001600160a01b038d811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b15801561321257600080fd5b505afa158015613226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324a91906157ab565b1561326c578060e060008282546132619190615aee565b909155506132849050565b8060e1600082825461327e9190615aee565b90915550505b82546132a357600160cd600082825461329d9190615aee565b90915550505b60018860018111156132b7576132b7615b5e565b141561338657604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b15801561330557600080fd5b505af1158015613319573d6000803e3d6000fd5b505060e25460405163e58306f960e01b8152336004820152602481018590526001600160a01b03909116925063e58306f99150604401600060405180830381600087803b15801561336957600080fd5b505af115801561337d573d6000803e3d6000fd5b5050505061339a565b6133908a8a614b31565b61339a8b82614b95565b60d1546001600160a01b03878116600090815260cc6020526040908190205490516333b9a16760e11b8152600481019190915292985086955016925063677342ce915060240160206040518083038186803b1580156133f857600080fd5b505afa15801561340c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343091906158f9565b60d75461343d9190615a95565b6134479190615aee565b60d7555060e2805460ff60a01b191690555b50949350505050565b60d05460ff161561346f57565b60d55461347857565b60d75460d15460da5460db5460de5460d85460405163ca3e79b760e01b815260048101949094526024840192909252604483015242606483015260848201526001600160a01b039091169063ca3e79b79060a40160206040518083038186803b1580156134e457600080fd5b505afa1580156134f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351c91906158f9565b6135269190615aad565b60dc546135339190615a95565b60dc554260de55565b6135468282614bac565b6000828152609760205260409020610dd69082614c4e565b600054610100900460ff166135db5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108b0565b565b6110e1828261353c565b6135f18282614c63565b6000828152609760205260409020610dd69082614ce6565b6000816001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561364457600080fd5b505afa158015613658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061367c919061568a565b6001600160a01b0316836001600160a01b0316146137025760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79207468652074616c656e742063616e2077697468647261772074686560448201527f6972206f776e207368617265730000000000000000000000000000000000000060648201526084016108b0565b6001600160a01b03808416600090815260cc6020908152604080832060d15482517f58931c460000000000000000000000000000000000000000000000000000000081529251919516926358931c469260048082019391829003018186803b15801561376d57600080fd5b505afa158015613781573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a591906158f9565b613819856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156137e157600080fd5b505afa1580156137f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906158f9565b836003015460dd5461382b9190615aee565b6138359190615acf565b61383f9190615aad565b60dd5460039093019290925550905092915050565b6040516001600160a01b038316602482015260448101829052610dd69084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152614cfb565b60006112638284615acf565b60006112638284615aad565b60d0546040517f099aba560000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526000926101009004169063099aba569060240160206040518083038186803b15801561396157600080fd5b505afa158015613975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085391906157ab565b60006112638284615a95565b6040516001600160a01b03808516602483015283166044820152606481018290526139f69085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613899565b50505050565b60008151601414613a4f5760405162461bcd60e51b815260206004820152601f60248201527f696e76616c69642064617461206c656e67746820666f7220616464726573730060448201526064016108b0565b506014015190565b60e2548490600160a01b900460ff1615613b7657613a74846138fd565b613ac05760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008311613b085760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b60d05460ff1615613b5b5760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b613b66858584614480565b613b71858585614de0565b613dea565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91613bd1919060040190815260200190565b60206040518083038186803b158015613be957600080fd5b505afa158015613bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2191906158f9565b9050613c2c856138fd565b613c785760405162461bcd60e51b815260206004820152601860248201527f6e6f7420612076616c69642074616c656e7420746f6b656e000000000000000060448201526064016108b0565b60008411613cc05760405162461bcd60e51b8152602060048201526015602482015274616d6f756e742063616e6e6f74206265207a65726f60581b60448201526064016108b0565b60d05460ff1615613d135760405162461bcd60e51b815260206004820152601960248201527f7374616b696e6720686173206265656e2064697361626c65640000000000000060448201526064016108b0565b613d1e868685614480565b613d29868686614de0565b60d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91613d719160040190815260200190565b60206040518083038186803b158015613d8957600080fd5b505afa158015613d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc191906158f9565b60d754613dce9190615a95565b613dd89190615aee565b60d7555060e2805460ff60a01b191690555b5050505050565b60e2548290600160a01b900460ff1615613fa257613e0d613462565b600080613e1985614f93565b90925090506000846001811115613e3257613e32615b5e565b1415613e995760ca54613e4f906001600160a01b03168684613854565b60408051838152600060208201526001600160a01b038716917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2613dea565b6001846001811115613ead57613ead615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038781166004830152602482018590529091169063e58306f990604401600060405180830381600087803b158015613f0157600080fd5b505af1158015613f15573d6000803e3d6000fd5b505060408051858152600060208201526001600160a01b03891693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a333925001613e8c565b60405162461bcd60e51b815260206004820152601e60248201527f556e7265636f676e697a656420636865636b706f696e7420616374696f6e000060448201526064016108b0565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91613ffd919060040190815260200190565b60206040518083038186803b15801561401557600080fd5b505afa158015614029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404d91906158f9565b9050614057613462565b60008061406386614f93565b9092509050600085600181111561407c5761407c615b5e565b14156140e35760ca54614099906001600160a01b03168784613854565b60408051838152600060208201526001600160a01b038816917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a26141a4565b60018560018111156140f7576140f7615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038881166004830152602482018590529091169063e58306f990604401600060405180830381600087803b15801561414b57600080fd5b505af115801561415f573d6000803e3d6000fd5b505060408051858152600060208201526001600160a01b038a1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a3339250016140d6565b505060d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce916141ee9160040190815260200190565b60206040518083038186803b15801561420657600080fd5b505afa15801561421a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061423e91906158f9565b60d75461424b9190615a95565b6142559190615aee565b60d7555060e2805460ff60a01b19169055505050565b60006112638383615108565b6000610853825490565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061085357506301ffc9a760e01b6001600160e01b0319831614610853565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166110e15761430d816001600160a01b03166014615132565b614318836020615132565b6040516020016143299291906159e1565b60408051601f198184030181529082905262461bcd60e51b82526108b091600401615a62565b6000614362826301ffc9a760e01b614382565b8015610853575061437b826001600160e01b0319614382565b1592915050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b179052905160009190829081906001600160a01b03871690617530906143fe9086906159c5565b6000604051808303818686fa925050503d806000811461443a576040519150601f19603f3d011682016040523d82523d6000602084013e61443f565b606091505b509150915060208151101561445a5760009350505050610853565b81801561447657508080602001905181019061447691906157ab565b9695505050505050565b60e2548390600160a01b900460ff161561472b5761449c613462565b6000806144a886614f93565b60d054919350915060ff16156144d157600160cd60008282546144cb9190615aee565b90915550505b6144db8183615a95565b6144e65750506139f6565b6000856001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561452157600080fd5b505afa158015614535573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614559919061568a565b905060006145678288613609565b9050600086600181111561457d5761457d615b5e565b14156145fb5760ca5461459a906001600160a01b03168383613854565b60ca546145b1906001600160a01b03168986613854565b60408051858152602081018390526001600160a01b038a16917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2614722565b600186600181111561460f5761460f615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038481166004830152602482018490529091169063e58306f990604401600060405180830381600087803b15801561466357600080fd5b505af1158015614677573d6000803e3d6000fd5b505060e25460405163e58306f960e01b81526001600160a01b038c8116600483015260248201899052909116925063e58306f99150604401600060405180830381600087803b1580156146c957600080fd5b505af11580156146dd573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b038c1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a3339250016145ee565b505050506139f6565b60e2805460ff60a01b1916600160a01b17905560d1546001600160a01b03828116600090815260cc60205260408082205490516333b9a16760e11b81529193929092169163677342ce91614786919060040190815260200190565b60206040518083038186803b15801561479e57600080fd5b505afa1580156147b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147d691906158f9565b90506147e0613462565b6000806147ec87614f93565b60d054919350915060ff161561481557600160cd600082825461480f9190615aee565b90915550505b61481f8183615a95565b61482a575050614a6b565b6000866001600160a01b031663c4daa5936040518163ffffffff1660e01b815260040160206040518083038186803b15801561486557600080fd5b505afa158015614879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061489d919061568a565b905060006148ab8289613609565b905060008760018111156148c1576148c1615b5e565b141561493f5760ca546148de906001600160a01b03168383613854565b60ca546148f5906001600160a01b03168a86613854565b60408051858152602081018390526001600160a01b038b16917f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a33391015b60405180910390a2614a66565b600187600181111561495357614953615b5e565b1415613f5a5760e25460405163e58306f960e01b81526001600160a01b038481166004830152602482018490529091169063e58306f990604401600060405180830381600087803b1580156149a757600080fd5b505af11580156149bb573d6000803e3d6000fd5b505060e25460405163e58306f960e01b81526001600160a01b038d8116600483015260248201899052909116925063e58306f99150604401600060405180830381600087803b158015614a0d57600080fd5b505af1158015614a21573d6000803e3d6000fd5b505060408051878152602081018590526001600160a01b038d1693507f33c8b13439ce4d29880c8bc5aada8194ded575a893a529ed5941f8e41342a333925001614932565b505050505b60d1546001600160a01b03838116600090815260cc6020526040908190205490516333b9a16760e11b81528493929092169163677342ce91614ab39160040190815260200190565b60206040518083038186803b158015614acb57600080fd5b505afa158015614adf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b0391906158f9565b60d754614b109190615a95565b614b1a9190615aee565b60d7555060e2805460ff60a01b1916905550505050565b604051632770a7eb60e21b8152306004820152602481018290526001600160a01b03831690639dc29fac90604401600060405180830381600087803b158015614b7957600080fd5b505af1158015614b8d573d6000803e3d6000fd5b505050505050565b60ca546110e1906001600160a01b03168383613854565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166110e15760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055614c0a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611263836001600160a01b038416615313565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156110e15760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611263836001600160a01b038416615362565b6000614d50826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154559092919063ffffffff16565b805190915015610dd65780806020019051810190614d6e91906157ab565b610dd65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108b0565b6000614deb8261116f565b6001600160a01b03808616600081815260cb60209081526040808320948916835293815283822092825260cc90529190912081549293509091614e4757600160cd6000828254614e3b9190615a95565b90915550504260028301555b426003830155805484908290600090614e61908490615a95565b9091555050815484908390600090614e7a908490615a95565b9250508190555082826001016000828254614e959190615a95565b925050819055508360df6000828254614eae9190615a95565b909155505060d05460405163f7bad69f60e01b81526001600160a01b0388811660048301526101009092049091169063f7bad69f9060240160206040518083038186803b158015614efe57600080fd5b505afa158015614f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f3691906157ab565b15614f58578360e06000828254614f4d9190615a95565b90915550614f709050565b8360e16000828254614f6a9190615a95565b90915550505b8360d56000828254614f829190615a95565b90915550614b8d905086868561546c565b6001600160a01b03818116600090815260cc602052604080822060d1548154600283015460dc5460e15460e054965163be3b79dd60e01b81526004810194909452602484019290925260448301526064820152608481019390935292938493919284928392169063be3b79dd9060a401604080518083038186803b15801561501a57600080fd5b505afa15801561502e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150529190615912565b90925090506150618183615a95565b60d960008282546150729190615a95565b909155505060dc54600284015542600184015560df5461509657600060dd556150fd565b6150f960dd546115136150f18460d160009054906101000a90046001600160a01b03166001600160a01b03166358931c466040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0b57600080fd5b60df546138f1565b60dd555b909590945092505050565b600082600001828154811061511f5761511f615b8a565b9060005260206000200154905092915050565b60606000615141836002615acf565b61514c906002615a95565b67ffffffffffffffff81111561516457615164615ba0565b6040519080825280601f01601f19166020018201604052801561518e576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106151c5576151c5615b8a565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061521057615210615b8a565b60200101906001600160f81b031916908160001a9053506000615234846002615acf565b61523f906001615a95565b90505b60018111156152c4577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061528057615280615b8a565b1a60f81b82828151811061529657615296615b8a565b60200101906001600160f81b031916908160001a90535060049490941c936152bd81615b31565b9050615242565b5083156112635760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b0565b600081815260018301602052604081205461535a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610853565b506000610853565b6000818152600183016020526040812054801561544b576000615386600183615aee565b855490915060009061539a90600190615aee565b90508181146153ff5760008660000182815481106153ba576153ba615b8a565b90600052602060002001549050808760000184815481106153dd576153dd615b8a565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061541057615410615b74565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610853565b6000915050610853565b606061546484846000856154ec565b949350505050565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390528316906340c10f1990604401600060405180830381600087803b1580156154cf57600080fd5b505af11580156154e3573d6000803e3d6000fd5b50505050505050565b6060824710156155645760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108b0565b6001600160a01b0385163b6155bb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b0565b600080866001600160a01b031685876040516155d791906159c5565b60006040518083038185875af1925050503d8060008114615614576040519150601f19603f3d011682016040523d82523d6000602084013e615619565b606091505b5091509150615629828286615634565b979650505050505050565b60608315615643575081611263565b8251156156535782518084602001fd5b8160405162461bcd60e51b81526004016108b09190615a62565b60006020828403121561567f57600080fd5b813561126381615bb6565b60006020828403121561569c57600080fd5b815161126381615bb6565b600080604083850312156156ba57600080fd5b82356156c581615bb6565b915060208301356156d581615bb6565b809150509250929050565b6000806000806000608086880312156156f857600080fd5b853561570381615bb6565b9450602086013561571381615bb6565b935060408601359250606086013567ffffffffffffffff8082111561573757600080fd5b818801915088601f83011261574b57600080fd5b81358181111561575a57600080fd5b89602082850101111561576c57600080fd5b9699959850939650602001949392505050565b6000806040838503121561579257600080fd5b823561579d81615bb6565b946020939093013593505050565b6000602082840312156157bd57600080fd5b8151801515811461126357600080fd5b6000602082840312156157df57600080fd5b5035919050565b600080604083850312156157f957600080fd5b8235915060208301356156d581615bb6565b6000806040838503121561581e57600080fd5b50508035926020909101359150565b60006020828403121561583f57600080fd5b81356001600160e01b03198116811461126357600080fd5b60006020828403121561586957600080fd5b815167ffffffffffffffff8082111561588157600080fd5b818401915084601f83011261589557600080fd5b8151818111156158a7576158a7615ba0565b604051601f8201601f19908116603f011681019083821181831017156158cf576158cf615ba0565b816040528281528760208487010111156158e857600080fd5b615629836020830160208801615b05565b60006020828403121561590b57600080fd5b5051919050565b6000806040838503121561592557600080fd5b505080516020909101519092909150565b60008060008060008060008060006101208a8c03121561595557600080fd5b8935985060208a0135975060408a0135965060608a013561597581615bb6565b955060808a013561598581615bb6565b945060a08a0135935060c08a0135925060e08a01356159a381615bb6565b91506101008a01356159b481615bb6565b809150509295985092959850929598565b600082516159d7818460208701615b05565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615a19816017850160208801615b05565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615a56816028840160208801615b05565b01602801949350505050565b6020815260008251806020840152615a81816040850160208701615b05565b601f01601f19169190910160400192915050565b60008219821115615aa857615aa8615b48565b500190565b600082615aca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615ae957615ae9615b48565b500290565b600082821015615b0057615b00615b48565b500390565b60005b83811015615b20578181015183820152602001615b08565b838111156139f65750506000910152565b600081615b4057615b40615b48565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461282157600080fdfea264697066735822122080593b54b4493f199565977edad69ec239bd18f19bfbad019c2d60ef18135a2064736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/TalentFactoryV3.json b/abis/TalentFactoryV3.json new file mode 100644 index 0000000..6ffc44b --- /dev/null +++ b/abis/TalentFactoryV3.json @@ -0,0 +1,568 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TalentFactoryV3", + "sourceName": "contracts/season3/TalentFactoryV3.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "talent", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "TalentCreated", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIAL_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ROLE_MINTER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "talentAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "addAddressToTokensToTalents", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "createTalent", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "hasTalentToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementationBeacon", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "isSymbol", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "name": "isTalentToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isV2", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isV3", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "minter", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_minter", + "type": "address" + } + ], + "name": "setMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "symbolsToTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "talentsToTokens", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokensToTalents", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newMinter", + "type": "address" + } + ], + "name": "transferMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506153fc806100206000396000f3fe60806040523480156200001157600080fd5b5060043610620001d15760003560e01c80635810e96d1162000101578063a217fddf11620000a3578063ef31f424116200007a578063ef31f4241462000456578063f7bad69f1462000482578063fca3b5aa14620004b3578063fe99ad5a14620004ca57600080fd5b8063a217fddf146200041f578063ca15c8731462000428578063d547741f146200043f57600080fd5b80639010d07c11620000d85780639010d07c14620003a457806391d1485414620003bb57806392afc33a14620003f757600080fd5b80635810e96d14620003575780637ffed926146200036e5780638129fc1c146200039a57600080fd5b8063248a9ca311620001775780632f2ff15d116200014e5780632f2ff15d14620003025780632ff2e9dc146200031b57806336568abe146200032c57806357bc3cd9146200034357600080fd5b8063248a9ca314620002965780632d94a2d014620002775780632dbc679c14620002cb57600080fd5b80631b0f287411620001ac5780631b0f28741462000260578063201e65541462000277578063242fa5db146200027f57600080fd5b806301ffc9a714620001d6578063075461721462000202578063099aba56146200022f575b600080fd5b620001ed620001e7366004620015f0565b620004e1565b60405190151581526020015b60405180910390f35b60cc5462000216906001600160a01b031681565b6040516001600160a01b039091168152602001620001f9565b620001ed62000240366004620014ba565b6001600160a01b03908116600090815260ca602052604090205416151590565b620001ed620002713660046200161c565b620004f4565b6001620001ed565b620002166200029036600462001510565b62000533565b620002bc620002a73660046200158d565b60009081526065602052604090206001015490565b604051908152602001620001f9565b62000216620002dc3660046200161c565b805160208183018101805160cb825292820191909301209152546001600160a01b031681565b6200031962000313366004620015a7565b620007b1565b005b620002bc686c6b935b8bbd40000081565b620003196200033d366004620015a7565b620007df565b60cd5462000216906001600160a01b031681565b620001ed62000368366004620014d8565b6200086f565b620002166200037f366004620014ba565b60c9602052600090815260409020546001600160a01b031681565b62000319620008bd565b62000216620003b5366004620015cd565b62000b16565b620001ed620003cc366004620015a7565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b620002bc7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b620002bc600081565b620002bc620004393660046200158d565b62000b37565b6200031962000450366004620015a7565b62000b50565b6200021662000467366004620014ba565b60ca602052600090815260409020546001600160a01b031681565b620001ed62000493366004620014ba565b6001600160a01b03908116600090815260c9602052604090205416151590565b62000319620004c4366004620014ba565b62000b79565b62000319620004db366004620014ba565b62000c35565b6000620004ee8262000cd5565b92915050565b6000806001600160a01b031660cb836040516200051291906200168b565b908152604051908190036020019020546001600160a01b0316141592915050565b60006200054082620004f4565b15620005b95760405162461bcd60e51b815260206004820152602c60248201527f74616c656e7420746f6b656e207769746820746869732073796d626f6c20616c60448201527f726561647920657869737473000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60cc546001600160a01b0316620006135760405162461bcd60e51b815260206004820152601260248201527f6d696e746572206e6f74207965742073657400000000000000000000000000006044820152606401620005b0565b60cd5460cc546000916001600160a01b03908116917f6ef7626c000000000000000000000000000000000000000000000000000000009187918791686c6b935b8bbd400000918b911662000668888062000b16565b6040516024016200067f9695949392919062001767565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051620006d390620013de565b620006e09291906200172e565b604051809103906000f080158015620006fd573d6000803e3d6000fd5b50905060008190508060cb856040516200071891906200168b565b9081526040805160209281900383018120805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0396871617909155858516600081815260ca865284812080548416978e16978817905586815260c99095529284208054909116831790559092917fc3cff6724200e4907489fef1d1ede51dd32ca7ac86d62c448475be4c3b1d5b5091a395945050505050565b600082815260656020526040902060010154620007ce8162000d16565b620007da838362000d22565b505050565b6001600160a01b03811633146200085f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401620005b0565b6200086b828262000d48565b5050565b6000806200087d8162000d16565b50506001600160a01b03918216600090815260ca60205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b600054610100900460ff1615808015620008de5750600054600160ff909116105b80620008fa5750303b158015620008fa575060005460ff166001145b6200096e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620005b0565b6000805460ff19166001179055801562000992576000805461ff0019166101001790555b6200099c62000d6e565b620009a662000d6e565b620009b062000d6e565b620009bd60003362000def565b6000604051620009cd90620013ec565b604051809103906000f080158015620009ea573d6000803e3d6000fd5b50604051620009f990620013fa565b6001600160a01b039091168152602001604051809103906000f08015801562000a26573d6000803e3d6000fd5b506040517ff2fde38b0000000000000000000000000000000000000000000000000000000081523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b15801562000a8557600080fd5b505af115801562000a9a573d6000803e3d6000fd5b505060cd805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394909416939093179092555050801562000b13576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600082815260976020526040812062000b30908362000dfb565b9392505050565b6000818152609760205260408120620004ee9062000e09565b60008281526065602052604090206001015462000b6d8162000d16565b620007da838362000d48565b600062000b868162000d16565b60cc546001600160a01b03161562000be15760405162461bcd60e51b815260206004820152601260248201527f6d696e74657220616c72656164792073657400000000000000000000000000006044820152606401620005b0565b60cc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790556200086b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc98362000def565b600062000c428162000d16565b60cc546001600160a01b031662000c9c5760405162461bcd60e51b815260206004820152601160248201527f6d696e746572206973206e6f74207365740000000000000000000000000000006044820152606401620005b0565b60cc5462000be1907ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9906001600160a01b031662000b50565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480620004ee5750620004ee8262000e14565b62000b13813362000e7d565b62000d2e828262000f06565b6000828152609760205260409020620007da908262000faa565b62000d54828262000fc1565b6000828152609760205260409020620007da908262001045565b600054610100900460ff1662000ded5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620005b0565b565b6200086b828262000d22565b600062000b3083836200105c565b6000620004ee825490565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480620004ee57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614620004ee565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166200086b5762000ebe816001600160a01b0316601462001089565b62000ecb83602062001089565b60405160200162000ede929190620016a9565b60408051601f198184030181529082905262461bcd60e51b8252620005b09160040162001752565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166200086b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000f663390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000b30836001600160a01b03841662001288565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156200086b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000b30836001600160a01b038416620012da565b600082600001828154811062001076576200107662001891565b9060005260206000200154905092915050565b606060006200109a836002620017dc565b620010a7906002620017c1565b67ffffffffffffffff811115620010c257620010c2620018a7565b6040519080825280601f01601f191660200182016040528015620010ed576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062001127576200112762001891565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062001175576200117562001891565b60200101906001600160f81b031916908160001a90535060006200119b846002620017dc565b620011a8906001620017c1565b90505b600181111562001237577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110620011ed57620011ed62001891565b1a60f81b82828151811062001206576200120662001891565b60200101906001600160f81b031916908160001a90535060049490941c936200122f816200184b565b9050620011ab565b50831562000b305760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620005b0565b6000818152600183016020526040812054620012d157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004ee565b506000620004ee565b60008181526001830160205260408120548015620013d357600062001301600183620017fe565b85549091506000906200131790600190620017fe565b9050818114620013835760008660000182815481106200133b576200133b62001891565b906000526020600020015490508087600001848154811062001361576200136162001891565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200139757620013976200187b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620004ee565b6000915050620004ee565b61093e80620018be83390190565b612c9c80620021fc83390190565b61052f8062004e9883390190565b80356001600160a01b03811681146200142057600080fd5b919050565b600082601f8301126200143757600080fd5b813567ffffffffffffffff80821115620014555762001455620018a7565b604051601f8301601f19908116603f01168101908282118183101715620014805762001480620018a7565b816040528381528660208588010111156200149a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215620014cd57600080fd5b62000b308262001408565b60008060408385031215620014ec57600080fd5b620014f78362001408565b9150620015076020840162001408565b90509250929050565b6000806000606084860312156200152657600080fd5b620015318462001408565b9250602084013567ffffffffffffffff808211156200154f57600080fd5b6200155d8783880162001425565b935060408601359150808211156200157457600080fd5b50620015838682870162001425565b9150509250925092565b600060208284031215620015a057600080fd5b5035919050565b60008060408385031215620015bb57600080fd5b82359150620015076020840162001408565b60008060408385031215620015e157600080fd5b50508035926020909101359150565b6000602082840312156200160357600080fd5b81356001600160e01b03198116811462000b3057600080fd5b6000602082840312156200162f57600080fd5b813567ffffffffffffffff8111156200164757600080fd5b620016558482850162001425565b949350505050565b600081518084526200167781602086016020860162001818565b601f01601f19169290920160200192915050565b600082516200169f81846020870162001818565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620016e381601785016020880162001818565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516200172281602884016020880162001818565b01602801949350505050565b6001600160a01b03831681526040602082015260006200165560408301846200165d565b60208152600062000b3060208301846200165d565b60c0815260006200177c60c08301896200165d565b82810360208401526200179081896200165d565b604084019790975250506001600160a01b039384166060820152918316608083015290911660a09091015292915050565b60008219821115620017d757620017d762001865565b500190565b6000816000190483118215151615620017f957620017f962001865565b500290565b60008282101562001813576200181362001865565b500390565b60005b83811015620018355781810151838201526020016200181b565b8381111562001845576000848401525b50505050565b6000816200185d576200185d62001865565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe608060405260405161093e38038061093e8339810160408190526100229161044d565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610432565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610432565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610917602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061050d565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b81526004016101789190610529565b80516001600160a01b038116811461042d57600080fd5b919050565b60006020828403121561044457600080fd5b6102e682610416565b6000806040838503121561046057600080fd5b61046983610416565b60208401519092506001600160401b038082111561048657600080fd5b818501915085601f83011261049a57600080fd5b8151818111156104ac576104ac610588565b604051601f8201601f19908116603f011681019083821181831017156104d4576104d4610588565b816040528281528860208487010111156104ed57600080fd5b6104fe83602083016020880161055c565b80955050505050509250929050565b6000825161051f81846020870161055c565b9190910192915050565b602081526000825180602084015261054881604085016020870161055c565b601f01601f19169190910160400192915050565b60005b8381101561057757818101518382015260200161055f565b838111156101085750506000910152565b634e487b7160e01b600052604160045260246000fd5b61036a806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e838360405180606001604052806027815260200161030e60279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a9190610265565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101b75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101d2919061028e565b600060405180830381855af49150503d806000811461020d576040519150601f19603f3d011682016040523d82523d6000602084013e610212565b606091505b509150915061022282828661022c565b9695505050505050565b6060831561023b57508161004e565b82511561024b5782518084602001fd5b8160405162461bcd60e51b81526004016101ae91906102aa565b60006020828403121561027757600080fd5b81516001600160a01b038116811461004e57600080fd5b600082516102a08184602087016102dd565b9190910192915050565b60208152600082518060208401526102c98160408501602087016102dd565b601f01601f19169190910160400192915050565b60005b838110156102f85781810151838201526020016102e0565b83811115610307576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d2923618c23dd282fbe1f573fa51fcbeaf822c83a3f407848f486ee5b664466864736f6c63430008070033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460a06040523060601b60805234801561001757600080fd5b5060805160601c612c4a610052600039600081816109c601528181610a4b01528181610cc701528181610d4c0152610e320152612c4a6000f3fe60806040526004361061026a5760003560e01c806352d1902d11610153578063a457c2d7116100cb578063cae9ca511161007f578063d547741f11610064578063d547741f1461070e578063d8fbe9941461072e578063dd62ed3e1461074e57600080fd5b8063cae9ca51146106ce578063ccf00634146106ee57600080fd5b8063aafa9371116100b0578063aafa93711461065e578063c1d34b8914610675578063c4daa5931461069557600080fd5b8063a457c2d71461061e578063a9059cbb1461063e57600080fd5b806391d148541161012257806395d89b411161010757806395d89b41146105d45780639dc29fac146105e9578063a217fddf1461060957600080fd5b806391d148541461055a57806392afc33a146105a057600080fd5b806352d1902d146104bb5780636ef7626c146104d057806370a08231146104f05780637a12083a1461052657600080fd5b80633177029f116101e657806339509351116101b55780634000aea01161019a5780634000aea01461046857806340c10f19146104885780634f1ef286146104a857600080fd5b806339509351146104315780633e0075a11461045157600080fd5b80633177029f146103b357806332cb6b0c146103d357806336568abe146103f15780633659cfe61461041157600080fd5b806318160ddd1161023d578063248a9ca311610222578063248a9ca3146103455780632f2ff15d14610375578063313ce5671461039757600080fd5b806318160ddd1461030657806323b872dd1461032557600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063095ea7b3146102c65780631296ee62146102e6575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046128b1565b610794565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96107f3565b60405161029b9190612ab6565b3480156102d257600080fd5b5061028f6102e13660046127db565b610885565b3480156102f257600080fd5b5061028f6103013660046127db565b61089d565b34801561031257600080fd5b506099545b60405190815260200161029b565b34801561033157600080fd5b5061028f6103403660046126e9565b6108c0565b34801561035157600080fd5b5061031761036036600461285c565b60009081526065602052604090206001015490565b34801561038157600080fd5b5061039561039036600461288e565b6108e4565b005b3480156103a357600080fd5b506040516012815260200161029b565b3480156103bf57600080fd5b5061028f6103ce3660046127db565b61090e565b3480156103df57600080fd5b5061031769d3c21bcecceda100000081565b3480156103fd57600080fd5b5061039561040c36600461288e565b61092a565b34801561041d57600080fd5b5061039561042c36600461269b565b6109bb565b34801561043d57600080fd5b5061028f61044c3660046127db565b610b37565b34801561045d57600080fd5b5061031761012e5481565b34801561047457600080fd5b5061028f610483366004612805565b610b76565b34801561049457600080fd5b506103956104a33660046127db565b610bea565b6103956104b636600461278d565b610cbc565b3480156104c757600080fd5b50610317610e25565b3480156104dc57600080fd5b506103956104eb3660046128eb565b610eea565b3480156104fc57600080fd5b5061031761050b36600461269b565b6001600160a01b031660009081526097602052604090205490565b34801561053257600080fd5b506103177f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9481565b34801561056657600080fd5b5061028f61057536600461288e565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105ac57600080fd5b506103177ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b3480156105e057600080fd5b506102b96110fe565b3480156105f557600080fd5b506103956106043660046127db565b61110d565b34801561061557600080fd5b50610317600081565b34801561062a57600080fd5b5061028f6106393660046127db565b611163565b34801561064a57600080fd5b5061028f6106593660046127db565b61120d565b34801561066a57600080fd5b5061031761012d5481565b34801561068157600080fd5b5061028f610690366004612725565b61121b565b3480156106a157600080fd5b5061012f546106b6906001600160a01b031681565b6040516001600160a01b03909116815260200161029b565b3480156106da57600080fd5b5061028f6106e9366004612805565b611298565b3480156106fa57600080fd5b5061039561070936600461269b565b611322565b34801561071a57600080fd5b5061039561072936600461288e565b61139b565b34801561073a57600080fd5b5061028f6107493660046126e9565b6113c0565b34801561075a57600080fd5b506103176107693660046126b6565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b60006001600160e01b031982167f36372b070000000000000000000000000000000000000000000000000000000014806107de57506001600160e01b0319821663b0202a1160e01b145b806107ed57506107ed826113dd565b92915050565b6060609a805461080290612b5a565b80601f016020809104026020016040519081016040528092919081815260200182805461082e90612b5a565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b5050505050905090565b600033610893818585611402565b5060019392505050565b60006108b9838360405180602001604052806000815250610b76565b9392505050565b6000336108ce85828561155a565b6108d98585856115ec565b506001949350505050565b6000828152606560205260409020600101546108ff81611803565b610909838361180d565b505050565b60006108b9838360405180602001604052806000815250611298565b6001600160a01b03811633146109ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b782826118af565b5050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610a495760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016109a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610aa47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610b0f5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016109a4565b610b1881611932565b60408051600080825260208201909252610b349183919061193d565b50565b3360008181526098602090815260408083206001600160a01b03871684529091528120549091906108939082908690610b71908790612ac9565b611402565b6000610b82848461120d565b50610b8f33858585611aec565b6108935760405162461bcd60e51b815260206004820152602660248201527f455243313336333a205f636865636b416e6443616c6c5472616e73666572207260448201526565766572747360d01b60648201526084016109a4565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9610c1481611803565b8161012d541015610c8c5760405162461bcd60e51b8152602060048201526024808201527f5f616d6f756e742065786365656473206d696e74696e6720617661696c61626960448201527f6c6974790000000000000000000000000000000000000000000000000000000060648201526084016109a4565b8161012d6000828254610c9f9190612b00565b909155505061012d54610cb2574261012e555b6109098383611baa565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d4a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016109a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610da57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610e105760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016109a4565b610e1982611932565b6109b78282600161193d565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016109a4565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600054610100900460ff1615808015610f0a5750600054600160ff909116105b80610f245750303b158015610f24575060005460ff166001145b610f965760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109a4565b6000805460ff191660011790558015610fb9576000805461ff0019166101001790555b610fc1611c89565b610fc9611c89565b610fd38787611cf6565b610fdb611c89565b61012f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861617905561100f600083611d88565b6110397f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9485611d88565b6110637ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc984611d88565b61108d7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9480611d92565b6110978486611baa565b6110ab8569d3c21bcecceda1000000612b00565b61012d5580156110f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6060609b805461080290612b5a565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961113781611803565b61012d5415611159578161012d60008282546111539190612ac9565b90915550505b6109098383611ddd565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190838110156112005760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109a4565b6108d98286868403611402565b6000336108938185856115ec565b60006112288585856108c0565b5061123585858585611aec565b6108d95760405162461bcd60e51b815260206004820152602660248201527f455243313336333a205f636865636b416e6443616c6c5472616e73666572207260448201526565766572747360d01b60648201526084016109a4565b949350505050565b60006112a48484610885565b506112b0848484611f62565b6108935760405162461bcd60e51b815260206004820152602560248201527f455243313336333a205f636865636b416e6443616c6c417070726f766520726560448201527f766572747300000000000000000000000000000000000000000000000000000060648201526084016109a4565b61012f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556113757f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94826108e4565b610b347f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94335b6000828152606560205260409020600101546113b681611803565b61090983836118af565b60006112908484846040518060200160405280600081525061121b565b60006001600160e01b0319821663b0202a1160e01b14806107ed57506107ed8261201d565b6001600160a01b03831661147d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0382166114f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526098602090815260408083209386168352929052205460001981146115e657818110156115d95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109a4565b6115e68484848403611402565b50505050565b6001600160a01b0383166116685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0382166116e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b038316600090815260976020526040902054818110156117735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b038085166000908152609760205260408082208585039055918516815290812080548492906117aa908490612ac9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117f691815260200190565b60405180910390a36115e6565b610b348133612084565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166109b75760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561186b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156109b75760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109b781611803565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156119705761090983612104565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa9250505080156119d9575060408051601f3d908101601f191682019092526119d691810190612875565b60015b611a4b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016109a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611ae05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016109a4565b506109098383836121cf565b60006001600160a01b0384163b611b0557506000611290565b604051632229f29760e21b81526000906001600160a01b038616906388a7ca5c90611b3a9033908a9089908990600401612a52565b602060405180830381600087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8c91906128ce565b6001600160e01b031916632229f29760e21b14915050949350505050565b6001600160a01b038216611c005760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a4565b8060996000828254611c129190612ac9565b90915550506001600160a01b03821660009081526097602052604081208054839290611c3f908490612ac9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611cf45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a4565b565b600054610100900460ff16611d615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a4565b8151611d7490609a906020850190612559565b50805161090990609b906020840190612559565b6109b7828261180d565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6001600160a01b038216611e595760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b03821660009081526097602052604090205481811015611ee85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0383166000908152609760205260408120838303905560998054849290611f17908490612b00565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006001600160a01b0384163b611f7b575060006108b9565b6040516307b04a2d60e41b81526000906001600160a01b03861690637b04a2d090611fae90339088908890600401612a8e565b602060405180830381600087803b158015611fc857600080fd5b505af1158015611fdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200091906128ce565b6001600160e01b0319166307b04a2d60e41b149150509392505050565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806107ed57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146107ed565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166109b7576120c2816001600160a01b031660146121f4565b6120cd8360206121f4565b6040516020016120de9291906129d1565b60408051601f198184030181529082905262461bcd60e51b82526109a491600401612ab6565b6001600160a01b0381163b6121815760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016109a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6121d8836123d5565b6000825111806121e55750805b15610909576115e68383612415565b60606000612203836002612ae1565b61220e906002612ac9565b67ffffffffffffffff81111561222657612226612bc1565b6040519080825280601f01601f191660200182016040528015612250576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061228757612287612bab565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106122d2576122d2612bab565b60200101906001600160f81b031916908160001a90535060006122f6846002612ae1565b612301906001612ac9565b90505b6001811115612386577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061234257612342612bab565b1a60f81b82828151811061235857612358612bab565b60200101906001600160f81b031916908160001a90535060049490941c9361237f81612b43565b9050612304565b5083156108b95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109a4565b6123de81612104565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6124945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016109a4565b600080846001600160a01b0316846040516124af91906129b5565b600060405180830381855af49150503d80600081146124ea576040519150601f19603f3d011682016040523d82523d6000602084013e6124ef565b606091505b50915091506125178282604051806060016040528060278152602001612bee60279139612520565b95945050505050565b6060831561252f5750816108b9565b82511561253f5782518084602001fd5b8160405162461bcd60e51b81526004016109a49190612ab6565b82805461256590612b5a565b90600052602060002090601f01602090048101928261258757600085556125cd565b82601f106125a057805160ff19168380011785556125cd565b828001600101855582156125cd579182015b828111156125cd5782518255916020019190600101906125b2565b506125d99291506125dd565b5090565b5b808211156125d957600081556001016125de565b80356001600160a01b038116811461260957600080fd5b919050565b600082601f83011261261f57600080fd5b813567ffffffffffffffff8082111561263a5761263a612bc1565b604051601f8301601f19908116603f0116810190828211818310171561266257612662612bc1565b8160405283815286602085880101111561267b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156126ad57600080fd5b6108b9826125f2565b600080604083850312156126c957600080fd5b6126d2836125f2565b91506126e0602084016125f2565b90509250929050565b6000806000606084860312156126fe57600080fd5b612707846125f2565b9250612715602085016125f2565b9150604084013590509250925092565b6000806000806080858703121561273b57600080fd5b612744856125f2565b9350612752602086016125f2565b925060408501359150606085013567ffffffffffffffff81111561277557600080fd5b6127818782880161260e565b91505092959194509250565b600080604083850312156127a057600080fd5b6127a9836125f2565b9150602083013567ffffffffffffffff8111156127c557600080fd5b6127d18582860161260e565b9150509250929050565b600080604083850312156127ee57600080fd5b6127f7836125f2565b946020939093013593505050565b60008060006060848603121561281a57600080fd5b612823846125f2565b925060208401359150604084013567ffffffffffffffff81111561284657600080fd5b6128528682870161260e565b9150509250925092565b60006020828403121561286e57600080fd5b5035919050565b60006020828403121561288757600080fd5b5051919050565b600080604083850312156128a157600080fd5b823591506126e0602084016125f2565b6000602082840312156128c357600080fd5b81356108b981612bd7565b6000602082840312156128e057600080fd5b81516108b981612bd7565b60008060008060008060c0878903121561290457600080fd5b863567ffffffffffffffff8082111561291c57600080fd5b6129288a838b0161260e565b9750602089013591508082111561293e57600080fd5b5061294b89828a0161260e565b95505060408701359350612961606088016125f2565b925061296f608088016125f2565b915061297d60a088016125f2565b90509295509295509295565b600081518084526129a1816020860160208601612b17565b601f01601f19169290920160200192915050565b600082516129c7818460208701612b17565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612a09816017850160208801612b17565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612a46816028840160208801612b17565b01602801949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a846080830184612989565b9695505050505050565b6001600160a01b03841681528260208201526060604082015260006125176060830184612989565b6020815260006108b96020830184612989565b60008219821115612adc57612adc612b95565b500190565b6000816000190483118215151615612afb57612afb612b95565b500290565b600082821015612b1257612b12612b95565b500390565b60005b83811015612b32578181015183820152602001612b1a565b838111156115e65750506000910152565b600081612b5257612b52612b95565b506000190190565b600181811c90821680612b6e57607f821691505b60208210811415612b8f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b3457600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209ed395967b2d77621ea80f8010946bfe625fa8f6089a567ce14aa48da105964364736f6c63430008070033608060405234801561001057600080fd5b5060405161052f38038061052f83398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101c71760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b61039f806101906000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100aa5780638da5cb5b146100b2578063f2fde38b146100c357600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a366004610339565b6100d6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007f61011e565b6000546001600160a01b031661008e565b61007f6100d1366004610339565b610132565b6100de6101d6565b6100e781610230565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101266101d6565b61013060006102dc565b565b61013a6101d6565b6001600160a01b0381166101bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101c4816102dc565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101b2565b6001600160a01b0381163b6102ad5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e74726163740000000000000000000000000060648201526084016101b2565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561034b57600080fd5b81356001600160a01b038116811461036257600080fd5b939250505056fea26469706673582212205856144c03351936dafb065d7b203a08a79a882a1fa05f6156dd53052caa495164736f6c63430008070033a2646970667358221220c1118fbd897fcedb6d74c3fcdba91ada496dff096a93bf3087d1979f4b23608d64736f6c63430008070033", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001d15760003560e01c80635810e96d1162000101578063a217fddf11620000a3578063ef31f424116200007a578063ef31f4241462000456578063f7bad69f1462000482578063fca3b5aa14620004b3578063fe99ad5a14620004ca57600080fd5b8063a217fddf146200041f578063ca15c8731462000428578063d547741f146200043f57600080fd5b80639010d07c11620000d85780639010d07c14620003a457806391d1485414620003bb57806392afc33a14620003f757600080fd5b80635810e96d14620003575780637ffed926146200036e5780638129fc1c146200039a57600080fd5b8063248a9ca311620001775780632f2ff15d116200014e5780632f2ff15d14620003025780632ff2e9dc146200031b57806336568abe146200032c57806357bc3cd9146200034357600080fd5b8063248a9ca314620002965780632d94a2d014620002775780632dbc679c14620002cb57600080fd5b80631b0f287411620001ac5780631b0f28741462000260578063201e65541462000277578063242fa5db146200027f57600080fd5b806301ffc9a714620001d6578063075461721462000202578063099aba56146200022f575b600080fd5b620001ed620001e7366004620015f0565b620004e1565b60405190151581526020015b60405180910390f35b60cc5462000216906001600160a01b031681565b6040516001600160a01b039091168152602001620001f9565b620001ed62000240366004620014ba565b6001600160a01b03908116600090815260ca602052604090205416151590565b620001ed620002713660046200161c565b620004f4565b6001620001ed565b620002166200029036600462001510565b62000533565b620002bc620002a73660046200158d565b60009081526065602052604090206001015490565b604051908152602001620001f9565b62000216620002dc3660046200161c565b805160208183018101805160cb825292820191909301209152546001600160a01b031681565b6200031962000313366004620015a7565b620007b1565b005b620002bc686c6b935b8bbd40000081565b620003196200033d366004620015a7565b620007df565b60cd5462000216906001600160a01b031681565b620001ed62000368366004620014d8565b6200086f565b620002166200037f366004620014ba565b60c9602052600090815260409020546001600160a01b031681565b62000319620008bd565b62000216620003b5366004620015cd565b62000b16565b620001ed620003cc366004620015a7565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b620002bc7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b620002bc600081565b620002bc620004393660046200158d565b62000b37565b6200031962000450366004620015a7565b62000b50565b6200021662000467366004620014ba565b60ca602052600090815260409020546001600160a01b031681565b620001ed62000493366004620014ba565b6001600160a01b03908116600090815260c9602052604090205416151590565b62000319620004c4366004620014ba565b62000b79565b62000319620004db366004620014ba565b62000c35565b6000620004ee8262000cd5565b92915050565b6000806001600160a01b031660cb836040516200051291906200168b565b908152604051908190036020019020546001600160a01b0316141592915050565b60006200054082620004f4565b15620005b95760405162461bcd60e51b815260206004820152602c60248201527f74616c656e7420746f6b656e207769746820746869732073796d626f6c20616c60448201527f726561647920657869737473000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60cc546001600160a01b0316620006135760405162461bcd60e51b815260206004820152601260248201527f6d696e746572206e6f74207965742073657400000000000000000000000000006044820152606401620005b0565b60cd5460cc546000916001600160a01b03908116917f6ef7626c000000000000000000000000000000000000000000000000000000009187918791686c6b935b8bbd400000918b911662000668888062000b16565b6040516024016200067f9695949392919062001767565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051620006d390620013de565b620006e09291906200172e565b604051809103906000f080158015620006fd573d6000803e3d6000fd5b50905060008190508060cb856040516200071891906200168b565b9081526040805160209281900383018120805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0396871617909155858516600081815260ca865284812080548416978e16978817905586815260c99095529284208054909116831790559092917fc3cff6724200e4907489fef1d1ede51dd32ca7ac86d62c448475be4c3b1d5b5091a395945050505050565b600082815260656020526040902060010154620007ce8162000d16565b620007da838362000d22565b505050565b6001600160a01b03811633146200085f5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401620005b0565b6200086b828262000d48565b5050565b6000806200087d8162000d16565b50506001600160a01b03918216600090815260ca60205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b600054610100900460ff1615808015620008de5750600054600160ff909116105b80620008fa5750303b158015620008fa575060005460ff166001145b6200096e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620005b0565b6000805460ff19166001179055801562000992576000805461ff0019166101001790555b6200099c62000d6e565b620009a662000d6e565b620009b062000d6e565b620009bd60003362000def565b6000604051620009cd90620013ec565b604051809103906000f080158015620009ea573d6000803e3d6000fd5b50604051620009f990620013fa565b6001600160a01b039091168152602001604051809103906000f08015801562000a26573d6000803e3d6000fd5b506040517ff2fde38b0000000000000000000000000000000000000000000000000000000081523360048201529091506001600160a01b0382169063f2fde38b90602401600060405180830381600087803b15801562000a8557600080fd5b505af115801562000a9a573d6000803e3d6000fd5b505060cd805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0394909416939093179092555050801562000b13576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600082815260976020526040812062000b30908362000dfb565b9392505050565b6000818152609760205260408120620004ee9062000e09565b60008281526065602052604090206001015462000b6d8162000d16565b620007da838362000d48565b600062000b868162000d16565b60cc546001600160a01b03161562000be15760405162461bcd60e51b815260206004820152601260248201527f6d696e74657220616c72656164792073657400000000000000000000000000006044820152606401620005b0565b60cc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790556200086b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc98362000def565b600062000c428162000d16565b60cc546001600160a01b031662000c9c5760405162461bcd60e51b815260206004820152601160248201527f6d696e746572206973206e6f74207365740000000000000000000000000000006044820152606401620005b0565b60cc5462000be1907ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9906001600160a01b031662000b50565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480620004ee5750620004ee8262000e14565b62000b13813362000e7d565b62000d2e828262000f06565b6000828152609760205260409020620007da908262000faa565b62000d54828262000fc1565b6000828152609760205260409020620007da908262001045565b600054610100900460ff1662000ded5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620005b0565b565b6200086b828262000d22565b600062000b3083836200105c565b6000620004ee825490565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480620004ee57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614620004ee565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166200086b5762000ebe816001600160a01b0316601462001089565b62000ecb83602062001089565b60405160200162000ede929190620016a9565b60408051601f198184030181529082905262461bcd60e51b8252620005b09160040162001752565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166200086b5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905562000f663390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000b30836001600160a01b03841662001288565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156200086b5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000b30836001600160a01b038416620012da565b600082600001828154811062001076576200107662001891565b9060005260206000200154905092915050565b606060006200109a836002620017dc565b620010a7906002620017c1565b67ffffffffffffffff811115620010c257620010c2620018a7565b6040519080825280601f01601f191660200182016040528015620010ed576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811062001127576200112762001891565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062001175576200117562001891565b60200101906001600160f81b031916908160001a90535060006200119b846002620017dc565b620011a8906001620017c1565b90505b600181111562001237577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110620011ed57620011ed62001891565b1a60f81b82828151811062001206576200120662001891565b60200101906001600160f81b031916908160001a90535060049490941c936200122f816200184b565b9050620011ab565b50831562000b305760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620005b0565b6000818152600183016020526040812054620012d157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004ee565b506000620004ee565b60008181526001830160205260408120548015620013d357600062001301600183620017fe565b85549091506000906200131790600190620017fe565b9050818114620013835760008660000182815481106200133b576200133b62001891565b906000526020600020015490508087600001848154811062001361576200136162001891565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200139757620013976200187b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620004ee565b6000915050620004ee565b61093e80620018be83390190565b612c9c80620021fc83390190565b61052f8062004e9883390190565b80356001600160a01b03811681146200142057600080fd5b919050565b600082601f8301126200143757600080fd5b813567ffffffffffffffff80821115620014555762001455620018a7565b604051601f8301601f19908116603f01168101908282118183101715620014805762001480620018a7565b816040528381528660208588010111156200149a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215620014cd57600080fd5b62000b308262001408565b60008060408385031215620014ec57600080fd5b620014f78362001408565b9150620015076020840162001408565b90509250929050565b6000806000606084860312156200152657600080fd5b620015318462001408565b9250602084013567ffffffffffffffff808211156200154f57600080fd5b6200155d8783880162001425565b935060408601359150808211156200157457600080fd5b50620015838682870162001425565b9150509250925092565b600060208284031215620015a057600080fd5b5035919050565b60008060408385031215620015bb57600080fd5b82359150620015076020840162001408565b60008060408385031215620015e157600080fd5b50508035926020909101359150565b6000602082840312156200160357600080fd5b81356001600160e01b03198116811462000b3057600080fd5b6000602082840312156200162f57600080fd5b813567ffffffffffffffff8111156200164757600080fd5b620016558482850162001425565b949350505050565b600081518084526200167781602086016020860162001818565b601f01601f19169290920160200192915050565b600082516200169f81846020870162001818565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620016e381601785016020880162001818565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516200172281602884016020880162001818565b01602801949350505050565b6001600160a01b03831681526040602082015260006200165560408301846200165d565b60208152600062000b3060208301846200165d565b60c0815260006200177c60c08301896200165d565b82810360208401526200179081896200165d565b604084019790975250506001600160a01b039384166060820152918316608083015290911660a09091015292915050565b60008219821115620017d757620017d762001865565b500190565b6000816000190483118215151615620017f957620017f962001865565b500290565b60008282101562001813576200181362001865565b500390565b60005b83811015620018355781810151838201526020016200181b565b8381111562001845576000848401525b50505050565b6000816200185d576200185d62001865565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfe608060405260405161093e38038061093e8339810160408190526100229161044d565b61002e82826000610035565b505061059e565b61003e8361010f565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b1561010a57610108836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c057600080fd5b505afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f89190610432565b836102c160201b6100291760201c565b505b505050565b610122816102ed60201b6100551760201c565b6101815760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610204816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101bd57600080fd5b505afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610432565b6102ed60201b6100551760201c565b6102695760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610178565b806102a07fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102fc60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102e68383604051806060016040528060278152602001610917602791396102ff565b9392505050565b6001600160a01b03163b151590565b90565b60606001600160a01b0384163b6103675760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610178565b600080856001600160a01b031685604051610382919061050d565b600060405180830381855af49150503d80600081146103bd576040519150601f19603f3d011682016040523d82523d6000602084013e6103c2565b606091505b5090925090506103d38282866103dd565b9695505050505050565b606083156103ec5750816102e6565b8251156103fc5782518084602001fd5b8160405162461bcd60e51b81526004016101789190610529565b80516001600160a01b038116811461042d57600080fd5b919050565b60006020828403121561044457600080fd5b6102e682610416565b6000806040838503121561046057600080fd5b61046983610416565b60208401519092506001600160401b038082111561048657600080fd5b818501915085601f83011261049a57600080fd5b8151818111156104ac576104ac610588565b604051601f8201601f19908116603f011681019083821181831017156104d4576104d4610588565b816040528281528860208487010111156104ed57600080fd5b6104fe83602083016020880161055c565b80955050505050509250929050565b6000825161051f81846020870161055c565b9190910192915050565b602081526000825180602084015261054881604085016020870161055c565b601f01601f19169190910160400192915050565b60005b8381101561057757818101518382015260200161055f565b838111156101085750506000910152565b634e487b7160e01b600052604160045260246000fd5b61036a806105ad6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61010f565b565b606061004e838360405180606001604052806027815260200161030e60279139610133565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100d257600080fd5b505afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a9190610265565b905090565b3660008037600080366000845af43d6000803e80801561012e573d6000f35b3d6000fd5b60606001600160a01b0384163b6101b75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101d2919061028e565b600060405180830381855af49150503d806000811461020d576040519150601f19603f3d011682016040523d82523d6000602084013e610212565b606091505b509150915061022282828661022c565b9695505050505050565b6060831561023b57508161004e565b82511561024b5782518084602001fd5b8160405162461bcd60e51b81526004016101ae91906102aa565b60006020828403121561027757600080fd5b81516001600160a01b038116811461004e57600080fd5b600082516102a08184602087016102dd565b9190910192915050565b60208152600082518060208401526102c98160408501602087016102dd565b601f01601f19169190910160400192915050565b60005b838110156102f85781810151838201526020016102e0565b83811115610307576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d2923618c23dd282fbe1f573fa51fcbeaf822c83a3f407848f486ee5b664466864736f6c63430008070033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460a06040523060601b60805234801561001757600080fd5b5060805160601c612c4a610052600039600081816109c601528181610a4b01528181610cc701528181610d4c0152610e320152612c4a6000f3fe60806040526004361061026a5760003560e01c806352d1902d11610153578063a457c2d7116100cb578063cae9ca511161007f578063d547741f11610064578063d547741f1461070e578063d8fbe9941461072e578063dd62ed3e1461074e57600080fd5b8063cae9ca51146106ce578063ccf00634146106ee57600080fd5b8063aafa9371116100b0578063aafa93711461065e578063c1d34b8914610675578063c4daa5931461069557600080fd5b8063a457c2d71461061e578063a9059cbb1461063e57600080fd5b806391d148541161012257806395d89b411161010757806395d89b41146105d45780639dc29fac146105e9578063a217fddf1461060957600080fd5b806391d148541461055a57806392afc33a146105a057600080fd5b806352d1902d146104bb5780636ef7626c146104d057806370a08231146104f05780637a12083a1461052657600080fd5b80633177029f116101e657806339509351116101b55780634000aea01161019a5780634000aea01461046857806340c10f19146104885780634f1ef286146104a857600080fd5b806339509351146104315780633e0075a11461045157600080fd5b80633177029f146103b357806332cb6b0c146103d357806336568abe146103f15780633659cfe61461041157600080fd5b806318160ddd1161023d578063248a9ca311610222578063248a9ca3146103455780632f2ff15d14610375578063313ce5671461039757600080fd5b806318160ddd1461030657806323b872dd1461032557600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063095ea7b3146102c65780631296ee62146102e6575b600080fd5b34801561027b57600080fd5b5061028f61028a3660046128b1565b610794565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b96107f3565b60405161029b9190612ab6565b3480156102d257600080fd5b5061028f6102e13660046127db565b610885565b3480156102f257600080fd5b5061028f6103013660046127db565b61089d565b34801561031257600080fd5b506099545b60405190815260200161029b565b34801561033157600080fd5b5061028f6103403660046126e9565b6108c0565b34801561035157600080fd5b5061031761036036600461285c565b60009081526065602052604090206001015490565b34801561038157600080fd5b5061039561039036600461288e565b6108e4565b005b3480156103a357600080fd5b506040516012815260200161029b565b3480156103bf57600080fd5b5061028f6103ce3660046127db565b61090e565b3480156103df57600080fd5b5061031769d3c21bcecceda100000081565b3480156103fd57600080fd5b5061039561040c36600461288e565b61092a565b34801561041d57600080fd5b5061039561042c36600461269b565b6109bb565b34801561043d57600080fd5b5061028f61044c3660046127db565b610b37565b34801561045d57600080fd5b5061031761012e5481565b34801561047457600080fd5b5061028f610483366004612805565b610b76565b34801561049457600080fd5b506103956104a33660046127db565b610bea565b6103956104b636600461278d565b610cbc565b3480156104c757600080fd5b50610317610e25565b3480156104dc57600080fd5b506103956104eb3660046128eb565b610eea565b3480156104fc57600080fd5b5061031761050b36600461269b565b6001600160a01b031660009081526097602052604090205490565b34801561053257600080fd5b506103177f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9481565b34801561056657600080fd5b5061028f61057536600461288e565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105ac57600080fd5b506103177ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b3480156105e057600080fd5b506102b96110fe565b3480156105f557600080fd5b506103956106043660046127db565b61110d565b34801561061557600080fd5b50610317600081565b34801561062a57600080fd5b5061028f6106393660046127db565b611163565b34801561064a57600080fd5b5061028f6106593660046127db565b61120d565b34801561066a57600080fd5b5061031761012d5481565b34801561068157600080fd5b5061028f610690366004612725565b61121b565b3480156106a157600080fd5b5061012f546106b6906001600160a01b031681565b6040516001600160a01b03909116815260200161029b565b3480156106da57600080fd5b5061028f6106e9366004612805565b611298565b3480156106fa57600080fd5b5061039561070936600461269b565b611322565b34801561071a57600080fd5b5061039561072936600461288e565b61139b565b34801561073a57600080fd5b5061028f6107493660046126e9565b6113c0565b34801561075a57600080fd5b506103176107693660046126b6565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b60006001600160e01b031982167f36372b070000000000000000000000000000000000000000000000000000000014806107de57506001600160e01b0319821663b0202a1160e01b145b806107ed57506107ed826113dd565b92915050565b6060609a805461080290612b5a565b80601f016020809104026020016040519081016040528092919081815260200182805461082e90612b5a565b801561087b5780601f106108505761010080835404028352916020019161087b565b820191906000526020600020905b81548152906001019060200180831161085e57829003601f168201915b5050505050905090565b600033610893818585611402565b5060019392505050565b60006108b9838360405180602001604052806000815250610b76565b9392505050565b6000336108ce85828561155a565b6108d98585856115ec565b506001949350505050565b6000828152606560205260409020600101546108ff81611803565b610909838361180d565b505050565b60006108b9838360405180602001604052806000815250611298565b6001600160a01b03811633146109ad5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109b782826118af565b5050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610a495760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016109a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610aa47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610b0f5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016109a4565b610b1881611932565b60408051600080825260208201909252610b349183919061193d565b50565b3360008181526098602090815260408083206001600160a01b03871684529091528120549091906108939082908690610b71908790612ac9565b611402565b6000610b82848461120d565b50610b8f33858585611aec565b6108935760405162461bcd60e51b815260206004820152602660248201527f455243313336333a205f636865636b416e6443616c6c5472616e73666572207260448201526565766572747360d01b60648201526084016109a4565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9610c1481611803565b8161012d541015610c8c5760405162461bcd60e51b8152602060048201526024808201527f5f616d6f756e742065786365656473206d696e74696e6720617661696c61626960448201527f6c6974790000000000000000000000000000000000000000000000000000000060648201526084016109a4565b8161012d6000828254610c9f9190612b00565b909155505061012d54610cb2574261012e555b6109098383611baa565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d4a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b60648201526084016109a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610da57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610e105760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b60648201526084016109a4565b610e1982611932565b6109b78282600161193d565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ec55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016109a4565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600054610100900460ff1615808015610f0a5750600054600160ff909116105b80610f245750303b158015610f24575060005460ff166001145b610f965760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016109a4565b6000805460ff191660011790558015610fb9576000805461ff0019166101001790555b610fc1611c89565b610fc9611c89565b610fd38787611cf6565b610fdb611c89565b61012f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861617905561100f600083611d88565b6110397f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9485611d88565b6110637ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc984611d88565b61108d7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9480611d92565b6110978486611baa565b6110ab8569d3c21bcecceda1000000612b00565b61012d5580156110f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6060609b805461080290612b5a565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961113781611803565b61012d5415611159578161012d60008282546111539190612ac9565b90915550505b6109098383611ddd565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190838110156112005760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109a4565b6108d98286868403611402565b6000336108938185856115ec565b60006112288585856108c0565b5061123585858585611aec565b6108d95760405162461bcd60e51b815260206004820152602660248201527f455243313336333a205f636865636b416e6443616c6c5472616e73666572207260448201526565766572747360d01b60648201526084016109a4565b949350505050565b60006112a48484610885565b506112b0848484611f62565b6108935760405162461bcd60e51b815260206004820152602560248201527f455243313336333a205f636865636b416e6443616c6c417070726f766520726560448201527f766572747300000000000000000000000000000000000000000000000000000060648201526084016109a4565b61012f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790556113757f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94826108e4565b610b347f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94335b6000828152606560205260409020600101546113b681611803565b61090983836118af565b60006112908484846040518060200160405280600081525061121b565b60006001600160e01b0319821663b0202a1160e01b14806107ed57506107ed8261201d565b6001600160a01b03831661147d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0382166114f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526098602090815260408083209386168352929052205460001981146115e657818110156115d95760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109a4565b6115e68484848403611402565b50505050565b6001600160a01b0383166116685760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0382166116e45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b038316600090815260976020526040902054818110156117735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b038085166000908152609760205260408082208585039055918516815290812080548492906117aa908490612ac9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117f691815260200190565b60405180910390a36115e6565b610b348133612084565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166109b75760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561186b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16156109b75760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109b781611803565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156119705761090983612104565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156119a957600080fd5b505afa9250505080156119d9575060408051601f3d908101601f191682019092526119d691810190612875565b60015b611a4b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f74205555505300000000000000000000000000000000000060648201526084016109a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611ae05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c6555554944000000000000000000000000000000000000000000000060648201526084016109a4565b506109098383836121cf565b60006001600160a01b0384163b611b0557506000611290565b604051632229f29760e21b81526000906001600160a01b038616906388a7ca5c90611b3a9033908a9089908990600401612a52565b602060405180830381600087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8c91906128ce565b6001600160e01b031916632229f29760e21b14915050949350505050565b6001600160a01b038216611c005760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a4565b8060996000828254611c129190612ac9565b90915550506001600160a01b03821660009081526097602052604081208054839290611c3f908490612ac9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611cf45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a4565b565b600054610100900460ff16611d615760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109a4565b8151611d7490609a906020850190612559565b50805161090990609b906020840190612559565b6109b7828261180d565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6001600160a01b038216611e595760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b03821660009081526097602052604090205481811015611ee85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b6001600160a01b0383166000908152609760205260408120838303905560998054849290611f17908490612b00565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006001600160a01b0384163b611f7b575060006108b9565b6040516307b04a2d60e41b81526000906001600160a01b03861690637b04a2d090611fae90339088908890600401612a8e565b602060405180830381600087803b158015611fc857600080fd5b505af1158015611fdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200091906128ce565b6001600160e01b0319166307b04a2d60e41b149150509392505050565b60006001600160e01b031982167f7965db0b0000000000000000000000000000000000000000000000000000000014806107ed57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316146107ed565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff166109b7576120c2816001600160a01b031660146121f4565b6120cd8360206121f4565b6040516020016120de9291906129d1565b60408051601f198184030181529082905262461bcd60e51b82526109a491600401612ab6565b6001600160a01b0381163b6121815760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016109a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6121d8836123d5565b6000825111806121e55750805b15610909576115e68383612415565b60606000612203836002612ae1565b61220e906002612ac9565b67ffffffffffffffff81111561222657612226612bc1565b6040519080825280601f01601f191660200182016040528015612250576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061228757612287612bab565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106122d2576122d2612bab565b60200101906001600160f81b031916908160001a90535060006122f6846002612ae1565b612301906001612ac9565b90505b6001811115612386577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061234257612342612bab565b1a60f81b82828151811061235857612358612bab565b60200101906001600160f81b031916908160001a90535060049490941c9361237f81612b43565b9050612304565b5083156108b95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109a4565b6123de81612104565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6124945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016109a4565b600080846001600160a01b0316846040516124af91906129b5565b600060405180830381855af49150503d80600081146124ea576040519150601f19603f3d011682016040523d82523d6000602084013e6124ef565b606091505b50915091506125178282604051806060016040528060278152602001612bee60279139612520565b95945050505050565b6060831561252f5750816108b9565b82511561253f5782518084602001fd5b8160405162461bcd60e51b81526004016109a49190612ab6565b82805461256590612b5a565b90600052602060002090601f01602090048101928261258757600085556125cd565b82601f106125a057805160ff19168380011785556125cd565b828001600101855582156125cd579182015b828111156125cd5782518255916020019190600101906125b2565b506125d99291506125dd565b5090565b5b808211156125d957600081556001016125de565b80356001600160a01b038116811461260957600080fd5b919050565b600082601f83011261261f57600080fd5b813567ffffffffffffffff8082111561263a5761263a612bc1565b604051601f8301601f19908116603f0116810190828211818310171561266257612662612bc1565b8160405283815286602085880101111561267b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156126ad57600080fd5b6108b9826125f2565b600080604083850312156126c957600080fd5b6126d2836125f2565b91506126e0602084016125f2565b90509250929050565b6000806000606084860312156126fe57600080fd5b612707846125f2565b9250612715602085016125f2565b9150604084013590509250925092565b6000806000806080858703121561273b57600080fd5b612744856125f2565b9350612752602086016125f2565b925060408501359150606085013567ffffffffffffffff81111561277557600080fd5b6127818782880161260e565b91505092959194509250565b600080604083850312156127a057600080fd5b6127a9836125f2565b9150602083013567ffffffffffffffff8111156127c557600080fd5b6127d18582860161260e565b9150509250929050565b600080604083850312156127ee57600080fd5b6127f7836125f2565b946020939093013593505050565b60008060006060848603121561281a57600080fd5b612823846125f2565b925060208401359150604084013567ffffffffffffffff81111561284657600080fd5b6128528682870161260e565b9150509250925092565b60006020828403121561286e57600080fd5b5035919050565b60006020828403121561288757600080fd5b5051919050565b600080604083850312156128a157600080fd5b823591506126e0602084016125f2565b6000602082840312156128c357600080fd5b81356108b981612bd7565b6000602082840312156128e057600080fd5b81516108b981612bd7565b60008060008060008060c0878903121561290457600080fd5b863567ffffffffffffffff8082111561291c57600080fd5b6129288a838b0161260e565b9750602089013591508082111561293e57600080fd5b5061294b89828a0161260e565b95505060408701359350612961606088016125f2565b925061296f608088016125f2565b915061297d60a088016125f2565b90509295509295509295565b600081518084526129a1816020860160208601612b17565b601f01601f19169290920160200192915050565b600082516129c7818460208701612b17565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612a09816017850160208801612b17565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612a46816028840160208801612b17565b01602801949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a846080830184612989565b9695505050505050565b6001600160a01b03841681528260208201526060604082015260006125176060830184612989565b6020815260006108b96020830184612989565b60008219821115612adc57612adc612b95565b500190565b6000816000190483118215151615612afb57612afb612b95565b500290565b600082821015612b1257612b12612b95565b500390565b60005b83811015612b32578181015183820152602001612b1a565b838111156115e65750506000910152565b600081612b5257612b52612b95565b506000190190565b600181811c90821680612b6e57607f821691505b60208210811415612b8f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b3457600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209ed395967b2d77621ea80f8010946bfe625fa8f6089a567ce14aa48da105964364736f6c63430008070033608060405234801561001057600080fd5b5060405161052f38038061052f83398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101c71760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b61039f806101906000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063715018a611610050578063715018a6146100aa5780638da5cb5b146100b2578063f2fde38b146100c357600080fd5b80633659cfe61461006c5780635c60da1b14610081575b600080fd5b61007f61007a366004610339565b6100d6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61007f61011e565b6000546001600160a01b031661008e565b61007f6100d1366004610339565b610132565b6100de6101d6565b6100e781610230565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101266101d6565b61013060006102dc565b565b61013a6101d6565b6001600160a01b0381166101bb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101c4816102dc565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101b2565b6001600160a01b0381163b6102ad5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e74726163740000000000000000000000000060648201526084016101b2565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561034b57600080fd5b81356001600160a01b038116811461036257600080fd5b939250505056fea26469706673582212205856144c03351936dafb065d7b203a08a79a882a1fa05f6156dd53052caa495164736f6c63430008070033a2646970667358221220c1118fbd897fcedb6d74c3fcdba91ada496dff096a93bf3087d1979f4b23608d64736f6c63430008070033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/TalentTokenV3.json b/abis/TalentTokenV3.json new file mode 100644 index 0000000..1cd40e0 --- /dev/null +++ b/abis/TalentTokenV3.json @@ -0,0 +1,1025 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TalentTokenV3", + "sourceName": "contracts/season3/TalentTokenV3.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "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": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "talent", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "proposedTalent", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "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" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_SUPPLY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ROLE_MINTER", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ROLE_TALENT", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newMinter", + "type": "address" + } + ], + "name": "addNewMinter", + "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": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claimTalentOwnership", + "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": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_initialSupply", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_talent", + "type": "address" + }, + { + "internalType": "address", + "name": "_minter", + "type": "address" + }, + { + "internalType": "address", + "name": "_admin", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "mintingAvailability", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mintingFinishedAt", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_proposedTalent", + "type": "address" + } + ], + "name": "proposeTalent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proposedTalent", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oldMinter", + "type": "address" + } + ], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newFactory", + "type": "address" + } + ], + "name": "setFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "talent", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferAndCall", + "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": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "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" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferFromAndCall", + "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": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161323761004c60003960008181610b3d01528181610bc201528181610e0f01528181610e940152610f7a01526132376000f3fe6080604052600436106102e75760003560e01c80635bb4780811610184578063aafa9371116100d6578063d547741f1161008a578063e05162c911610064578063e05162c914610882578063f6e04edc146108a2578063fcd38b02146108b757600080fd5b8063d547741f146107fc578063d8fbe9941461081c578063dd62ed3e1461083c57600080fd5b8063c45a0155116100bb578063c45a015514610784578063c4daa593146107bc578063cae9ca51146107dc57600080fd5b8063aafa93711461074e578063c1d34b891461076457600080fd5b806392afc33a11610138578063a217fddf11610112578063a217fddf146106f9578063a457c2d71461070e578063a9059cbb1461072e57600080fd5b806392afc33a1461069057806395d89b41146106c45780639dc29fac146106d957600080fd5b806370a082311161016957806370a08231146105e05780637a12083a1461061657806391d148541461064a57600080fd5b80635bb47808146105a05780636ef7626c146105c057600080fd5b806332cb6b0c1161023d5780634000aea0116101f157806352d1902d116101cb57806352d1902d1461055757806354fd4d501461056c57806357b81b871461058057600080fd5b80634000aea01461050457806340c10f19146105245780634f1ef2861461054457600080fd5b80633659cfe6116102225780633659cfe6146104ae57806339509351146104ce5780633e0075a1146104ee57600080fd5b806332cb6b0c1461047057806336568abe1461048e57600080fd5b806323b872dd1161029f5780633092afd5116102795780633092afd514610414578063313ce567146104345780633177029f1461045057600080fd5b806323b872dd146103a2578063248a9ca3146103c25780632f2ff15d146103f257600080fd5b8063095ea7b3116102d0578063095ea7b3146103435780631296ee621461036357806318160ddd1461038357600080fd5b806301ffc9a7146102ec57806306fdde0314610321575b600080fd5b3480156102f857600080fd5b5061030c610307366004612b02565b6108d7565b60405190151581526020015b60405180910390f35b34801561032d57600080fd5b50610336610936565b6040516103189190612b6f565b34801561034f57600080fd5b5061030c61035e366004612b9e565b6109c8565b34801561036f57600080fd5b5061030c61037e366004612b9e565b6109e0565b34801561038f57600080fd5b506099545b604051908152602001610318565b3480156103ae57600080fd5b5061030c6103bd366004612bc8565b610a03565b3480156103ce57600080fd5b506103946103dd366004612c04565b60009081526065602052604090206001015490565b3480156103fe57600080fd5b5061041261040d366004612c1d565b610a27565b005b34801561042057600080fd5b5061041261042f366004612c49565b610a51565b34801561044057600080fd5b5060405160128152602001610318565b34801561045c57600080fd5b5061030c61046b366004612b9e565b610a8a565b34801561047c57600080fd5b5061039469d3c21bcecceda100000081565b34801561049a57600080fd5b506104126104a9366004612c1d565b610aa6565b3480156104ba57600080fd5b506104126104c9366004612c49565b610b33565b3480156104da57600080fd5b5061030c6104e9366004612b9e565b610cae565b3480156104fa57600080fd5b5061039460fb5481565b34801561051057600080fd5b5061030c61051f366004612d07565b610ced565b34801561053057600080fd5b5061041261053f366004612b9e565b610d60565b610412610552366004612d5e565b610e05565b34801561056357600080fd5b50610394610f6d565b34801561057857600080fd5b506003610394565b34801561058c57600080fd5b5061041261059b366004612c49565b611032565b3480156105ac57600080fd5b506104126105bb366004612c49565b611067565b3480156105cc57600080fd5b506104126105db366004612dac565b611095565b3480156105ec57600080fd5b506103946105fb366004612c49565b6001600160a01b031660009081526097602052604090205490565b34801561062257600080fd5b506103947f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9481565b34801561065657600080fd5b5061030c610665366004612c1d565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561069c57600080fd5b506103947ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b3480156106d057600080fd5b506103366111d4565b3480156106e557600080fd5b506104126106f4366004612b9e565b6111e3565b34801561070557600080fd5b50610394600081565b34801561071a57600080fd5b5061030c610729366004612b9e565b611231565b34801561073a57600080fd5b5061030c610749366004612b9e565b6112db565b34801561075a57600080fd5b5061039460fa5481565b34801561077057600080fd5b5061030c61077f366004612e4a565b6112e9565b34801561079057600080fd5b5060fe546107a4906001600160a01b031681565b6040516001600160a01b039091168152602001610318565b3480156107c857600080fd5b5060fc546107a4906001600160a01b031681565b3480156107e857600080fd5b5061030c6107f7366004612d07565b611365565b34801561080857600080fd5b50610412610817366004612c1d565b6113ee565b34801561082857600080fd5b5061030c610837366004612bc8565b611413565b34801561084857600080fd5b50610394610857366004612eb2565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b34801561088e57600080fd5b5061041261089d366004612c49565b611430565b3480156108ae57600080fd5b506104126114d5565b3480156108c357600080fd5b5060fd546107a4906001600160a01b031681565b60006001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000148061092157506001600160e01b0319821663b0202a1160e01b145b80610930575061093082611694565b92915050565b6060609a805461094590612edc565b80601f016020809104026020016040519081016040528092919081815260200182805461097190612edc565b80156109be5780601f10610993576101008083540402835291602001916109be565b820191906000526020600020905b8154815290600101906020018083116109a157829003601f168201915b5050505050905090565b6000336109d68185856116b9565b5060019392505050565b60006109fc838360405180602001604052806000815250610ced565b9392505050565b600033610a11858285611811565b610a1c8585856118a3565b506001949350505050565b600082815260656020526040902060010154610a4281611a97565b610a4c8383611aa1565b505050565b6000610a5c81611a97565b610a867ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9836113ee565b5050565b60006109fc838360405180602001604052806000815250611365565b6001600160a01b0381163314610b295760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a868282611b43565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bc05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610b20565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c1b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610c865760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610b20565b610c8f81611bc6565b60408051600080825260208201909252610cab91839190611bd1565b50565b3360008181526098602090815260408083206001600160a01b03871684529091528120549091906109d69082908690610ce8908790612f2c565b6116b9565b6000610cf984846112db565b50610d0633858585611d71565b6109d65760405162461bcd60e51b815260206004820152602560248201527f455243313336333a2072656365697665722072657475726e65642077726f6e67604482015264206461746160d81b6064820152608401610b20565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9610d8a81611a97565b8160fa541015610ddc5760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f756768206d696e74696e6720617661696c6162696c697479006044820152606401610b20565b8160fa54610dea9190612f3f565b60fa819055600003610dfb574260fb555b610a4c8383611f2a565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e925760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610b20565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eed7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610f585760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610b20565b610f6182611bc6565b610a8682826001611bd1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461100d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610b20565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061103d81611a97565b610a867ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc983610a27565b600061107281611a97565b5060fe80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156110b55750600054600160ff909116105b806110cf5750303b1580156110cf575060005460ff166001145b6111415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b20565b6000805460ff191660011790558015611164576000805461ff0019166101001790555b611172878787878787611feb565b60fe80546001600160a01b0319163317905580156111cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050505050565b6060609b805461094590612edc565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961120d81611a97565b60fa5415611227578160fa546112239190612f2c565b60fa555b610a4c83836121b9565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190838110156112ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610b20565b610a1c82868684036116b9565b6000336109d68185856118a3565b60006112f6858585610a03565b5061130385858585611d71565b610a1c5760405162461bcd60e51b815260206004820152602560248201527f455243313336333a2072656365697665722072657475726e65642077726f6e67604482015264206461746160d81b6064820152608401610b20565b949350505050565b600061137184846109c8565b5061137d848484612324565b6109d65760405162461bcd60e51b8152602060048201526024808201527f455243313336333a207370656e6465722072657475726e65642077726f6e672060448201527f64617461000000000000000000000000000000000000000000000000000000006064820152608401610b20565b60008281526065602052604090206001015461140981611a97565b610a4c8383611b43565b600061135d848484604051806020016040528060008152506112e9565b7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9461145a81611a97565b6001600160a01b03821633036114b25760405162461bcd60e51b815260206004820152601b60248201527f74616c656e7420697320616c726561647920746865206f776e657200000000006044820152606401610b20565b5060fd80546001600160a01b0319166001600160a01b0392909216919091179055565b60fd546001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601c60248201527f74616c656e74206973206e6f742070726f706f736564206f776e6572000000006044820152606401610b20565b60fe5460fc5460fd546040517f8611fc5c0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911690638611fc5c90604401600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505060fd546115eb92507f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9491506001600160a01b0316611aa1565b60fc54611622907f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94906001600160a01b0316611b43565b60fc5460fd54604080516001600160a01b0393841681529290911660208301527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a160fd805460fc80546001600160a01b03199081166001600160a01b03841617909155169055565b60006001600160e01b0319821663b0202a1160e01b14806109305750610930826124d3565b6001600160a01b0383166117345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0382166117b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260986020908152604080832093861683529290522054600019811461189d57818110156118905760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b20565b61189d84848484036116b9565b50505050565b6001600160a01b03831661191f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03821661199b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03831660009081526097602052604090205481811015611a2a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a8a9086815260200190565b60405180910390a361189d565b610cab813361253a565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610a865760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611aff3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff1615610a865760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a8681611a97565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0457610a4c836125af565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5e575060408051601f3d908101601f19168201909252611c5b91810190612f52565b60015b611cd05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610b20565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d655760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610b20565b50610a4c83838361266d565b60006001600160a01b0384163b611df05760405162461bcd60e51b815260206004820152602960248201527f455243313336333a207472616e7366657220746f206e6f6e20636f6e7472616360448201527f74206164647265737300000000000000000000000000000000000000000000006064820152608401610b20565b604051632229f29760e21b81526001600160a01b038516906388a7ca5c90611e22903390899088908890600401612f6b565b6020604051808303816000875af1925050508015611e5d575060408051601f3d908101601f19168201909252611e5a91810190612f9d565b60015b611f10573d808015611e8b576040519150601f19603f3d011682016040523d82523d6000602084013e611e90565b606091505b508051600003611f085760405162461bcd60e51b815260206004820152603460248201527f455243313336333a207472616e7366657220746f206e6f6e204552433133363360448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610b20565b805181602001fd5b6001600160e01b031916632229f29760e21b14905061135d565b6001600160a01b038216611f805760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b20565b8060996000828254611f929190612f2c565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600054610100900460ff161580801561200b5750600054600160ff909116105b806120255750303b158015612025575060005460ff166001145b6120975760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b20565b6000805460ff1916600117905580156120ba576000805461ff0019166101001790555b6120c2612692565b6120ca612692565b6120d487876126ff565b6120dc612692565b60fc80546001600160a01b0319166001600160a01b038616179055612102600083611aa1565b61212c7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9485611aa1565b6121567ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc984611aa1565b6121608486611f2a565b6121748569d3c21bcecceda1000000612f3f565b60fa5580156111cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016111c2565b6001600160a01b0382166122355760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b038216600090815260976020526040902054818110156122c45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160a01b0384163b6123a35760405162461bcd60e51b815260206004820152602760248201527f455243313336333a20617070726f76652061206e6f6e20636f6e74726163742060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610b20565b6040516307b04a2d60e41b81526001600160a01b03851690637b04a2d0906123d390339087908790600401612fba565b6020604051808303816000875af192505050801561240e575060408051601f3d908101601f1916820190925261240b91810190612f9d565b60015b6124b9573d80801561243c576040519150601f19603f3d011682016040523d82523d6000602084013e612441565b606091505b508051600003611f085760405162461bcd60e51b815260206004820152603160248201527f455243313336333a20617070726f76652061206e6f6e2045524331333633537060448201527f656e64657220696d706c656d656e7465720000000000000000000000000000006064820152608401610b20565b6001600160e01b0319166307b04a2d60e41b1490506109fc565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061093057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610930565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610a865761256d81612783565b612578836020612795565b604051602001612589929190612feb565b60408051601f198184030181529082905262461bcd60e51b8252610b2091600401612b6f565b6001600160a01b0381163b61262c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610b20565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b61267683612976565b6000825111806126835750805b15610a4c5761189d83836129b6565b600054610100900460ff166126fd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b20565b565b600054610100900460ff1661276a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b20565b609a61277683826130ba565b50609b610a4c82826130ba565b60606109306001600160a01b03831660145b606060006127a483600261317a565b6127af906002612f2c565b67ffffffffffffffff8111156127c7576127c7612c64565b6040519080825280601f01601f1916602001820160405280156127f1576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061282857612828613191565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061287357612873613191565b60200101906001600160f81b031916908160001a905350600061289784600261317a565b6128a2906001612f2c565b90505b6001811115612927577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106128e3576128e3613191565b1a60f81b8282815181106128f9576128f9613191565b60200101906001600160f81b031916908160001a90535060049490941c93612920816131a7565b90506128a5565b5083156109fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b20565b61297f816125af565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606109fc83836040518060600160405280602781526020016131db602791396060600080856001600160a01b0316856040516129f391906131be565b600060405180830381855af49150503d8060008114612a2e576040519150601f19603f3d011682016040523d82523d6000602084013e612a33565b606091505b5091509150612a4486838387612a4e565b9695505050505050565b60608315612abd578251600003612ab6576001600160a01b0385163b612ab65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b20565b508161135d565b61135d8383815115612ad25781518083602001fd5b8060405162461bcd60e51b8152600401610b209190612b6f565b6001600160e01b031981168114610cab57600080fd5b600060208284031215612b1457600080fd5b81356109fc81612aec565b60005b83811015612b3a578181015183820152602001612b22565b50506000910152565b60008151808452612b5b816020860160208601612b1f565b601f01601f19169290920160200192915050565b6020815260006109fc6020830184612b43565b80356001600160a01b0381168114612b9957600080fd5b919050565b60008060408385031215612bb157600080fd5b612bba83612b82565b946020939093013593505050565b600080600060608486031215612bdd57600080fd5b612be684612b82565b9250612bf460208501612b82565b9150604084013590509250925092565b600060208284031215612c1657600080fd5b5035919050565b60008060408385031215612c3057600080fd5b82359150612c4060208401612b82565b90509250929050565b600060208284031215612c5b57600080fd5b6109fc82612b82565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612c8b57600080fd5b813567ffffffffffffffff80821115612ca657612ca6612c64565b604051601f8301601f19908116603f01168101908282118183101715612cce57612cce612c64565b81604052838152866020858801011115612ce757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612d1c57600080fd5b612d2584612b82565b925060208401359150604084013567ffffffffffffffff811115612d4857600080fd5b612d5486828701612c7a565b9150509250925092565b60008060408385031215612d7157600080fd5b612d7a83612b82565b9150602083013567ffffffffffffffff811115612d9657600080fd5b612da285828601612c7a565b9150509250929050565b60008060008060008060c08789031215612dc557600080fd5b863567ffffffffffffffff80821115612ddd57600080fd5b612de98a838b01612c7a565b97506020890135915080821115612dff57600080fd5b50612e0c89828a01612c7a565b95505060408701359350612e2260608801612b82565b9250612e3060808801612b82565b9150612e3e60a08801612b82565b90509295509295509295565b60008060008060808587031215612e6057600080fd5b612e6985612b82565b9350612e7760208601612b82565b925060408501359150606085013567ffffffffffffffff811115612e9a57600080fd5b612ea687828801612c7a565b91505092959194509250565b60008060408385031215612ec557600080fd5b612ece83612b82565b9150612c4060208401612b82565b600181811c90821680612ef057607f821691505b602082108103612f1057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561093057610930612f16565b8181038181111561093057610930612f16565b600060208284031215612f6457600080fd5b5051919050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a446080830184612b43565b600060208284031215612faf57600080fd5b81516109fc81612aec565b6001600160a01b0384168152826020820152606060408201526000612fe26060830184612b43565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613023816017850160208801612b1f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613060816028840160208801612b1f565b01602801949350505050565b601f821115610a4c57600081815260208120601f850160051c810160208610156130935750805b601f850160051c820191505b818110156130b25782815560010161309f565b505050505050565b815167ffffffffffffffff8111156130d4576130d4612c64565b6130e8816130e28454612edc565b8461306c565b602080601f83116001811461311d57600084156131055750858301515b600019600386901b1c1916600185901b1785556130b2565b600085815260208120601f198616915b8281101561314c5788860151825594840194600190910190840161312d565b508582101561316a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808202811582820484141761093057610930612f16565b634e487b7160e01b600052603260045260246000fd5b6000816131b6576131b6612f16565b506000190190565b600082516131d0818460208701612b1f565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207ceeaf2fa4d4e6c536335cad51387ea972d4061784df7c4f0467d0e13f7e79bf64736f6c63430008110033", + "deployedBytecode": "0x6080604052600436106102e75760003560e01c80635bb4780811610184578063aafa9371116100d6578063d547741f1161008a578063e05162c911610064578063e05162c914610882578063f6e04edc146108a2578063fcd38b02146108b757600080fd5b8063d547741f146107fc578063d8fbe9941461081c578063dd62ed3e1461083c57600080fd5b8063c45a0155116100bb578063c45a015514610784578063c4daa593146107bc578063cae9ca51146107dc57600080fd5b8063aafa93711461074e578063c1d34b891461076457600080fd5b806392afc33a11610138578063a217fddf11610112578063a217fddf146106f9578063a457c2d71461070e578063a9059cbb1461072e57600080fd5b806392afc33a1461069057806395d89b41146106c45780639dc29fac146106d957600080fd5b806370a082311161016957806370a08231146105e05780637a12083a1461061657806391d148541461064a57600080fd5b80635bb47808146105a05780636ef7626c146105c057600080fd5b806332cb6b0c1161023d5780634000aea0116101f157806352d1902d116101cb57806352d1902d1461055757806354fd4d501461056c57806357b81b871461058057600080fd5b80634000aea01461050457806340c10f19146105245780634f1ef2861461054457600080fd5b80633659cfe6116102225780633659cfe6146104ae57806339509351146104ce5780633e0075a1146104ee57600080fd5b806332cb6b0c1461047057806336568abe1461048e57600080fd5b806323b872dd1161029f5780633092afd5116102795780633092afd514610414578063313ce567146104345780633177029f1461045057600080fd5b806323b872dd146103a2578063248a9ca3146103c25780632f2ff15d146103f257600080fd5b8063095ea7b3116102d0578063095ea7b3146103435780631296ee621461036357806318160ddd1461038357600080fd5b806301ffc9a7146102ec57806306fdde0314610321575b600080fd5b3480156102f857600080fd5b5061030c610307366004612b02565b6108d7565b60405190151581526020015b60405180910390f35b34801561032d57600080fd5b50610336610936565b6040516103189190612b6f565b34801561034f57600080fd5b5061030c61035e366004612b9e565b6109c8565b34801561036f57600080fd5b5061030c61037e366004612b9e565b6109e0565b34801561038f57600080fd5b506099545b604051908152602001610318565b3480156103ae57600080fd5b5061030c6103bd366004612bc8565b610a03565b3480156103ce57600080fd5b506103946103dd366004612c04565b60009081526065602052604090206001015490565b3480156103fe57600080fd5b5061041261040d366004612c1d565b610a27565b005b34801561042057600080fd5b5061041261042f366004612c49565b610a51565b34801561044057600080fd5b5060405160128152602001610318565b34801561045c57600080fd5b5061030c61046b366004612b9e565b610a8a565b34801561047c57600080fd5b5061039469d3c21bcecceda100000081565b34801561049a57600080fd5b506104126104a9366004612c1d565b610aa6565b3480156104ba57600080fd5b506104126104c9366004612c49565b610b33565b3480156104da57600080fd5b5061030c6104e9366004612b9e565b610cae565b3480156104fa57600080fd5b5061039460fb5481565b34801561051057600080fd5b5061030c61051f366004612d07565b610ced565b34801561053057600080fd5b5061041261053f366004612b9e565b610d60565b610412610552366004612d5e565b610e05565b34801561056357600080fd5b50610394610f6d565b34801561057857600080fd5b506003610394565b34801561058c57600080fd5b5061041261059b366004612c49565b611032565b3480156105ac57600080fd5b506104126105bb366004612c49565b611067565b3480156105cc57600080fd5b506104126105db366004612dac565b611095565b3480156105ec57600080fd5b506103946105fb366004612c49565b6001600160a01b031660009081526097602052604090205490565b34801561062257600080fd5b506103947f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9481565b34801561065657600080fd5b5061030c610665366004612c1d565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561069c57600080fd5b506103947ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b3480156106d057600080fd5b506103366111d4565b3480156106e557600080fd5b506104126106f4366004612b9e565b6111e3565b34801561070557600080fd5b50610394600081565b34801561071a57600080fd5b5061030c610729366004612b9e565b611231565b34801561073a57600080fd5b5061030c610749366004612b9e565b6112db565b34801561075a57600080fd5b5061039460fa5481565b34801561077057600080fd5b5061030c61077f366004612e4a565b6112e9565b34801561079057600080fd5b5060fe546107a4906001600160a01b031681565b6040516001600160a01b039091168152602001610318565b3480156107c857600080fd5b5060fc546107a4906001600160a01b031681565b3480156107e857600080fd5b5061030c6107f7366004612d07565b611365565b34801561080857600080fd5b50610412610817366004612c1d565b6113ee565b34801561082857600080fd5b5061030c610837366004612bc8565b611413565b34801561084857600080fd5b50610394610857366004612eb2565b6001600160a01b03918216600090815260986020908152604080832093909416825291909152205490565b34801561088e57600080fd5b5061041261089d366004612c49565b611430565b3480156108ae57600080fd5b506104126114d5565b3480156108c357600080fd5b5060fd546107a4906001600160a01b031681565b60006001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000148061092157506001600160e01b0319821663b0202a1160e01b145b80610930575061093082611694565b92915050565b6060609a805461094590612edc565b80601f016020809104026020016040519081016040528092919081815260200182805461097190612edc565b80156109be5780601f10610993576101008083540402835291602001916109be565b820191906000526020600020905b8154815290600101906020018083116109a157829003601f168201915b5050505050905090565b6000336109d68185856116b9565b5060019392505050565b60006109fc838360405180602001604052806000815250610ced565b9392505050565b600033610a11858285611811565b610a1c8585856118a3565b506001949350505050565b600082815260656020526040902060010154610a4281611a97565b610a4c8383611aa1565b505050565b6000610a5c81611a97565b610a867ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9836113ee565b5050565b60006109fc838360405180602001604052806000815250611365565b6001600160a01b0381163314610b295760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610a868282611b43565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bc05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610b20565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c1b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610c865760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610b20565b610c8f81611bc6565b60408051600080825260208201909252610cab91839190611bd1565b50565b3360008181526098602090815260408083206001600160a01b03871684529091528120549091906109d69082908690610ce8908790612f2c565b6116b9565b6000610cf984846112db565b50610d0633858585611d71565b6109d65760405162461bcd60e51b815260206004820152602560248201527f455243313336333a2072656365697665722072657475726e65642077726f6e67604482015264206461746160d81b6064820152608401610b20565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9610d8a81611a97565b8160fa541015610ddc5760405162461bcd60e51b815260206004820152601f60248201527f6e6f7420656e6f756768206d696e74696e6720617661696c6162696c697479006044820152606401610b20565b8160fa54610dea9190612f3f565b60fa819055600003610dfb574260fb555b610a4c8383611f2a565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e925760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608401610b20565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eed7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610f585760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608401610b20565b610f6182611bc6565b610a8682826001611bd1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461100d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610b20565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600061103d81611a97565b610a867ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc983610a27565b600061107281611a97565b5060fe80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16158080156110b55750600054600160ff909116105b806110cf5750303b1580156110cf575060005460ff166001145b6111415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b20565b6000805460ff191660011790558015611164576000805461ff0019166101001790555b611172878787878787611feb565b60fe80546001600160a01b0319163317905580156111cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050505050565b6060609b805461094590612edc565b7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc961120d81611a97565b60fa5415611227578160fa546112239190612f2c565b60fa555b610a4c83836121b9565b3360008181526098602090815260408083206001600160a01b0387168452909152812054909190838110156112ce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610b20565b610a1c82868684036116b9565b6000336109d68185856118a3565b60006112f6858585610a03565b5061130385858585611d71565b610a1c5760405162461bcd60e51b815260206004820152602560248201527f455243313336333a2072656365697665722072657475726e65642077726f6e67604482015264206461746160d81b6064820152608401610b20565b949350505050565b600061137184846109c8565b5061137d848484612324565b6109d65760405162461bcd60e51b8152602060048201526024808201527f455243313336333a207370656e6465722072657475726e65642077726f6e672060448201527f64617461000000000000000000000000000000000000000000000000000000006064820152608401610b20565b60008281526065602052604090206001015461140981611a97565b610a4c8383611b43565b600061135d848484604051806020016040528060008152506112e9565b7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9461145a81611a97565b6001600160a01b03821633036114b25760405162461bcd60e51b815260206004820152601b60248201527f74616c656e7420697320616c726561647920746865206f776e657200000000006044820152606401610b20565b5060fd80546001600160a01b0319166001600160a01b0392909216919091179055565b60fd546001600160a01b0316331461152f5760405162461bcd60e51b815260206004820152601c60248201527f74616c656e74206973206e6f742070726f706f736564206f776e6572000000006044820152606401610b20565b60fe5460fc5460fd546040517f8611fc5c0000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201529082166024820152911690638611fc5c90604401600060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505060fd546115eb92507f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9491506001600160a01b0316611aa1565b60fc54611622907f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c94906001600160a01b0316611b43565b60fc5460fd54604080516001600160a01b0393841681529290911660208301527f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0910160405180910390a160fd805460fc80546001600160a01b03199081166001600160a01b03841617909155169055565b60006001600160e01b0319821663b0202a1160e01b14806109305750610930826124d3565b6001600160a01b0383166117345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0382166117b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0383811660008181526098602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260986020908152604080832093861683529290522054600019811461189d57818110156118905760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b20565b61189d84848484036116b9565b50505050565b6001600160a01b03831661191f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03821661199b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03831660009081526097602052604090205481811015611a2a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b0380851660008181526097602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a8a9086815260200190565b60405180910390a361189d565b610cab813361253a565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610a865760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611aff3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff1615610a865760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a8681611a97565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0457610a4c836125af565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5e575060408051601f3d908101601f19168201909252611c5b91810190612f52565b60015b611cd05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610b20565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611d655760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610b20565b50610a4c83838361266d565b60006001600160a01b0384163b611df05760405162461bcd60e51b815260206004820152602960248201527f455243313336333a207472616e7366657220746f206e6f6e20636f6e7472616360448201527f74206164647265737300000000000000000000000000000000000000000000006064820152608401610b20565b604051632229f29760e21b81526001600160a01b038516906388a7ca5c90611e22903390899088908890600401612f6b565b6020604051808303816000875af1925050508015611e5d575060408051601f3d908101601f19168201909252611e5a91810190612f9d565b60015b611f10573d808015611e8b576040519150601f19603f3d011682016040523d82523d6000602084013e611e90565b606091505b508051600003611f085760405162461bcd60e51b815260206004820152603460248201527f455243313336333a207472616e7366657220746f206e6f6e204552433133363360448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610b20565b805181602001fd5b6001600160e01b031916632229f29760e21b14905061135d565b6001600160a01b038216611f805760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b20565b8060996000828254611f929190612f2c565b90915550506001600160a01b0382166000818152609760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600054610100900460ff161580801561200b5750600054600160ff909116105b806120255750303b158015612025575060005460ff166001145b6120975760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610b20565b6000805460ff1916600117905580156120ba576000805461ff0019166101001790555b6120c2612692565b6120ca612692565b6120d487876126ff565b6120dc612692565b60fc80546001600160a01b0319166001600160a01b038616179055612102600083611aa1565b61212c7f8fad061cdace53638a92e8940b81545ab8169bcf17f044b6ab490075da827c9485611aa1565b6121567ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc984611aa1565b6121608486611f2a565b6121748569d3c21bcecceda1000000612f3f565b60fa5580156111cb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016111c2565b6001600160a01b0382166122355760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b038216600090815260976020526040902054818110156122c45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610b20565b6001600160a01b03831660008181526097602090815260408083208686039055609980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60006001600160a01b0384163b6123a35760405162461bcd60e51b815260206004820152602760248201527f455243313336333a20617070726f76652061206e6f6e20636f6e74726163742060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610b20565b6040516307b04a2d60e41b81526001600160a01b03851690637b04a2d0906123d390339087908790600401612fba565b6020604051808303816000875af192505050801561240e575060408051601f3d908101601f1916820190925261240b91810190612f9d565b60015b6124b9573d80801561243c576040519150601f19603f3d011682016040523d82523d6000602084013e612441565b606091505b508051600003611f085760405162461bcd60e51b815260206004820152603160248201527f455243313336333a20617070726f76652061206e6f6e2045524331333633537060448201527f656e64657220696d706c656d656e7465720000000000000000000000000000006064820152608401610b20565b6001600160e01b0319166307b04a2d60e41b1490506109fc565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061093057507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610930565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610a865761256d81612783565b612578836020612795565b604051602001612589929190612feb565b60408051601f198184030181529082905262461bcd60e51b8252610b2091600401612b6f565b6001600160a01b0381163b61262c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610b20565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b61267683612976565b6000825111806126835750805b15610a4c5761189d83836129b6565b600054610100900460ff166126fd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b20565b565b600054610100900460ff1661276a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b20565b609a61277683826130ba565b50609b610a4c82826130ba565b60606109306001600160a01b03831660145b606060006127a483600261317a565b6127af906002612f2c565b67ffffffffffffffff8111156127c7576127c7612c64565b6040519080825280601f01601f1916602001820160405280156127f1576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061282857612828613191565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061287357612873613191565b60200101906001600160f81b031916908160001a905350600061289784600261317a565b6128a2906001612f2c565b90505b6001811115612927577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106128e3576128e3613191565b1a60f81b8282815181106128f9576128f9613191565b60200101906001600160f81b031916908160001a90535060049490941c93612920816131a7565b90506128a5565b5083156109fc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b20565b61297f816125af565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606109fc83836040518060600160405280602781526020016131db602791396060600080856001600160a01b0316856040516129f391906131be565b600060405180830381855af49150503d8060008114612a2e576040519150601f19603f3d011682016040523d82523d6000602084013e612a33565b606091505b5091509150612a4486838387612a4e565b9695505050505050565b60608315612abd578251600003612ab6576001600160a01b0385163b612ab65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b20565b508161135d565b61135d8383815115612ad25781518083602001fd5b8060405162461bcd60e51b8152600401610b209190612b6f565b6001600160e01b031981168114610cab57600080fd5b600060208284031215612b1457600080fd5b81356109fc81612aec565b60005b83811015612b3a578181015183820152602001612b22565b50506000910152565b60008151808452612b5b816020860160208601612b1f565b601f01601f19169290920160200192915050565b6020815260006109fc6020830184612b43565b80356001600160a01b0381168114612b9957600080fd5b919050565b60008060408385031215612bb157600080fd5b612bba83612b82565b946020939093013593505050565b600080600060608486031215612bdd57600080fd5b612be684612b82565b9250612bf460208501612b82565b9150604084013590509250925092565b600060208284031215612c1657600080fd5b5035919050565b60008060408385031215612c3057600080fd5b82359150612c4060208401612b82565b90509250929050565b600060208284031215612c5b57600080fd5b6109fc82612b82565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612c8b57600080fd5b813567ffffffffffffffff80821115612ca657612ca6612c64565b604051601f8301601f19908116603f01168101908282118183101715612cce57612cce612c64565b81604052838152866020858801011115612ce757600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612d1c57600080fd5b612d2584612b82565b925060208401359150604084013567ffffffffffffffff811115612d4857600080fd5b612d5486828701612c7a565b9150509250925092565b60008060408385031215612d7157600080fd5b612d7a83612b82565b9150602083013567ffffffffffffffff811115612d9657600080fd5b612da285828601612c7a565b9150509250929050565b60008060008060008060c08789031215612dc557600080fd5b863567ffffffffffffffff80821115612ddd57600080fd5b612de98a838b01612c7a565b97506020890135915080821115612dff57600080fd5b50612e0c89828a01612c7a565b95505060408701359350612e2260608801612b82565b9250612e3060808801612b82565b9150612e3e60a08801612b82565b90509295509295509295565b60008060008060808587031215612e6057600080fd5b612e6985612b82565b9350612e7760208601612b82565b925060408501359150606085013567ffffffffffffffff811115612e9a57600080fd5b612ea687828801612c7a565b91505092959194509250565b60008060408385031215612ec557600080fd5b612ece83612b82565b9150612c4060208401612b82565b600181811c90821680612ef057607f821691505b602082108103612f1057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561093057610930612f16565b8181038181111561093057610930612f16565b600060208284031215612f6457600080fd5b5051919050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612a446080830184612b43565b600060208284031215612faf57600080fd5b81516109fc81612aec565b6001600160a01b0384168152826020820152606060408201526000612fe26060830184612b43565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613023816017850160208801612b1f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613060816028840160208801612b1f565b01602801949350505050565b601f821115610a4c57600081815260208120601f850160051c810160208610156130935750805b601f850160051c820191505b818110156130b25782815560010161309f565b505050505050565b815167ffffffffffffffff8111156130d4576130d4612c64565b6130e8816130e28454612edc565b8461306c565b602080601f83116001811461311d57600084156131055750858301515b600019600386901b1c1916600185901b1785556130b2565b600085815260208120601f198616915b8281101561314c5788860151825594840194600190910190840161312d565b508582101561316a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808202811582820484141761093057610930612f16565b634e487b7160e01b600052603260045260246000fd5b6000816131b6576131b6612f16565b506000190190565b600082516131d0818460208701612b1f565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207ceeaf2fa4d4e6c536335cad51387ea972d4061784df7c4f0467d0e13f7e79bf64736f6c63430008110033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/package.json b/package.json index e9b428f..4bb16e6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 talent-protocol" }, "dependencies": { - "@graphprotocol/graph-cli": "0.22.0", - "@graphprotocol/graph-ts": "0.22.0" + "@graphprotocol/graph-cli": "0.40.0", + "@graphprotocol/graph-ts": "0.29.3" } } diff --git a/src/mapping.ts b/src/mapping.ts index e587c6e..f175cff 100644 --- a/src/mapping.ts +++ b/src/mapping.ts @@ -1,12 +1,12 @@ import { BigInt, BigDecimal } from "@graphprotocol/graph-ts" -import { TalentFactory, TalentToken, Supporter, SupporterTalentToken, TalentTokenDayData } from "../generated/schema" -import * as TalentTokenTemplates from "../generated/templates/TalentToken/TalentToken" +import { TalentFactory, Supporter, TalentToken, SupporterTalentToken, TalentTokenDayData } from "../generated/schema" +import * as TalentTokenTemplates from "../generated/templates/TalentToken/TalentTokenV3" import * as Templates from "../generated/templates" -import { TalentCreated } from "../generated/TalentFactory/TalentFactory" -import { Transfer } from "../generated/templates/TalentToken/TalentToken" -import { Stake, Unstake, RewardClaim } from "../generated/Staking/Staking" +import { TalentCreated } from "../generated/TalentFactory/TalentFactoryV3" +import { Transfer } from "../generated/templates/TalentToken/TalentTokenV3" +import { Stake, Unstake, RewardClaim } from "../generated/Staking/StakingMigrationV2" -const FACTORY_ADDRESS = '0xa902DA7a40a671B84bA3Dd0BdBA6FD9d2D888246' +const FACTORY_ADDRESS = '0xA91b75E8aA2Dc62B2957333B1a1412532444FdE0' const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000' const ZERO_BI = BigInt.fromI32(0) const ONE_BI = BigInt.fromI32(1) @@ -43,7 +43,7 @@ export function handleTalentTokenCreated(event: TalentCreated): void { } export function handleTransfer(event: Transfer): void { - let contract = TalentTokenTemplates.TalentToken.bind(event.address) + let contract = TalentTokenTemplates.TalentTokenV3.bind(event.address) let talentToken = TalentToken.load(event.address.toHex()) if(talentToken === null) { diff --git a/subgraph.yaml b/subgraph.yaml index 38bbdd1..7194520 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -1,67 +1,65 @@ -specVersion: 0.0.2 +specVersion: 0.0.4 schema: file: ./schema.graphql dataSources: - kind: ethereum/contract name: TalentFactory - network: celo-alfajores + network: matic source: - address: "0xE6A0829535C76bA3d1A69a27381Ee08c772Cb837" - abi: TalentFactory - startBlock: 7497000 + address: "0xA91b75E8aA2Dc62B2957333B1a1412532444FdE0" + abi: TalentFactoryV3 + startBlock: 40612607 mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.6 language: wasm/assemblyscript entities: - Talent abis: - - name: TalentFactory - file: ./abis/TalentFactory.json + - name: TalentFactoryV3 + file: ./abis/TalentFactoryV3.json eventHandlers: - event: TalentCreated(indexed address,indexed address) handler: handleTalentTokenCreated file: ./src/mapping.ts - kind: ethereum/contract name: Staking - network: celo-alfajores + network: matic source: - address: "0x3c9260F62679b3D08648346223572A8BF3f89fA8" - abi: Staking - startBlock: 7497000 + address: "0xEa998Ff9c0c075cD035b25095D1833E5aF0aF873" + abi: StakingMigrationV2 + startBlock: 40823976 mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.6 language: wasm/assemblyscript entities: - Talent abis: - - name: Staking - file: ./abis/Staking.json + - name: StakingMigrationV2 + file: ./abis/StakingMigrationV2.json eventHandlers: - event: Stake(indexed address,indexed address,uint256,bool) handler: handleStake - event: Unstake(indexed address,indexed address,uint256) handler: handleUnstake - - event: RewardClaim(indexed address,indexed address,uint256,uint256) - handler: handleRewardClaim file: ./src/mapping.ts templates: - name: TalentToken kind: ethereum/contract - network: celo-alfajores + network: matic source: - abi: TalentToken + abi: TalentTokenV3 mapping: kind: ethereum/events - apiVersion: 0.0.5 + apiVersion: 0.0.6 language: wasm/assemblyscript file: ./src/mapping.ts entities: - - TalentToken + - TalentTokenV3 abis: - - name: TalentToken - file: ./abis/TalentToken.json + - name: TalentTokenV3 + file: ./abis/TalentTokenV3.json eventHandlers: - event: Transfer(indexed address,indexed address,uint256) handler: handleTransfer diff --git a/yarn.lock b/yarn.lock index 818d76b..0a16d6f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,42 +23,257 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@graphprotocol/graph-cli@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.22.0.tgz#ce1dec89105814df5a283c307fc4c90197e0ca4d" - integrity sha512-SlB70KW3g7vC9wVwBp9BBO9qojxIp8JvOSiFv/Ql776J+mfvBurbp9Mz7WaSn453dL1jB2t8MpFyjiOgBH7/oQ== - dependencies: - assemblyscript "0.19.10" +"@babel/runtime@^7.9.2": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.0.4": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@float-capital/float-subgraph-uncrashable@^0.0.0-alpha.4": + version "0.0.0-internal-testing.5" + resolved "https://registry.yarnpkg.com/@float-capital/float-subgraph-uncrashable/-/float-subgraph-uncrashable-0.0.0-internal-testing.5.tgz#060f98440f6e410812766c5b040952d2d02e2b73" + integrity sha512-yZ0H5e3EpAYKokX/AbtplzlvSxEJY7ZfpvQyDzyODkks0hakAAlDG6fQu1SlDJMWorY7bbq1j7fCiFeTWci6TA== + dependencies: + "@rescript/std" "9.0.0" + graphql "^16.6.0" + graphql-import-node "^0.0.5" + js-yaml "^4.1.0" + +"@graphprotocol/graph-cli@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.40.0.tgz#31e9116ec6fa213754f257e7e846fd7a3cfed11a" + integrity sha512-bNhdyrYLyad+UXz2LnFKFBRWl+Tmpa7DqM0NK8WV1sozdbovI2NUVn5xkbSIgKVd55qn06V0FclOV/o/Fy+K5A== + dependencies: + "@float-capital/float-subgraph-uncrashable" "^0.0.0-alpha.4" + assemblyscript "0.19.23" binary-install-raw "0.0.13" - chalk "^3.0.0" - chokidar "^3.0.2" - debug "^4.1.1" - docker-compose "^0.23.2" - dockerode "^2.5.8" - fs-extra "^9.0.0" - glob "^7.1.2" - gluegun "^4.3.1" - graphql "^15.5.0" - immutable "^3.8.2" - ipfs-http-client "^34.0.0" - jayson "^3.0.2" - js-yaml "^3.13.1" - node-fetch "^2.3.0" - pkginfo "^0.4.1" - prettier "^1.13.5" - request "^2.88.0" + chalk "3.0.0" + chokidar "3.5.1" + debug "4.3.1" + docker-compose "0.23.4" + dockerode "2.5.8" + fs-extra "9.0.0" + glob "7.1.6" + gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" + graphql "15.5.0" + immutable "4.2.1" + ipfs-http-client "34.0.0" + jayson "3.6.6" + js-yaml "3.13.1" + node-fetch "2.6.0" + prettier "1.19.1" + request "2.88.2" semver "7.3.5" - tmp-promise "^3.0.2" + sync-request "6.1.0" + tmp-promise "3.0.2" + web3-eth-abi "1.7.0" which "2.0.2" - yaml "^1.5.1" + yaml "1.9.2" -"@graphprotocol/graph-ts@0.22.0": - version "0.22.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.22.0.tgz#5280513d1c8a162077f82ce7f9a492bb5783d6f4" - integrity sha512-kJIBL73xBxj0+NJdRABukAtcrc3Mb8jt31s0tCLPe6c57rQXEf7KR9oYrFdzE1ZsJCP6j+MX+A2+sj1Pj3aJtQ== +"@graphprotocol/graph-ts@0.29.3": + version "0.29.3" + resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.29.3.tgz#f0a664790e966f5fb9bce317a8861e84ec1f3394" + integrity sha512-FXBLGlunOSwjiUXYEz1J9J/I2D/myldyib/9v0R+gn/NJaYqUkXD39UmIuRxqj9cBzB/FYojHzoHidIG5nYZDw== dependencies: assemblyscript "0.19.10" +"@rescript/std@9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@rescript/std/-/std-9.0.0.tgz#df53f3fa5911cb4e85bd66b92e9e58ddf3e4a7e1" + integrity sha512-zGzFsgtZ44mgL4Xef2gOy1hrRVdrs9mcxCOOKZrIPsmbZW14yTkaF591GXxpQvjXiHtgZ/iA9qLyWH6oSReIxQ== + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + "@types/connect@^3.4.33": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -75,6 +290,13 @@ "@types/qs" "*" "@types/range-parser" "*" +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + "@types/lodash@^4.14.159": version "4.14.175" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.175.tgz#b78dfa959192b01fae0ad90e166478769b215f45" @@ -85,17 +307,34 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.2.tgz#5764ca9aa94470adb4e1185fe2e9f19458992b2e" integrity sha512-zCclL4/rx+W5SQTzFs9wyvvyCwoK9QtBpratqz2IYJ3O8Umrn0m3nsTv0wQBk9sRGpvUe9CwPDrQFB10f1FIjQ== +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + "@types/node@^12.12.54": version "12.20.27" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.27.tgz#4141fcad57c332a120591de883e26fe4bb14aaea" integrity sha512-qZdePUDSLAZRXXV234bLBEUM0nAQjoxbcSwp1rqSMUe1rZ47mwU6OjciR/JvF1Oo8mc0ys6GE0ks0HGgqAZoGg== +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/qs@*": +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/qs@*", "@types/qs@^6.2.31": version "6.9.7" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== @@ -105,6 +344,13 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + "@types/ws@^7.4.4": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -174,20 +420,20 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +anymatch@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -apisauce@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-2.1.1.tgz#0b8bc7f2544e6ef710a6fa1d6f49583856940dd2" - integrity sha512-P4SsLvmsH8BLLruBn/nsO+65j+ChZlGQ2zC5avCIjbWstYS4PgjxeVWtbeVwFGEWX7dEkLp85OvdapGXy1zS8g== +apisauce@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" + integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== dependencies: - axios "^0.21.1" + axios "^0.21.2" ramda "^0.25.0" app-module-path@^2.2.0: @@ -202,6 +448,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + asmcrypto.js@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" @@ -232,6 +488,15 @@ assemblyscript@0.19.10: binaryen "101.0.0-nightly.20210723" long "^4.0.0" +assemblyscript@0.19.23: + version "0.19.23" + resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.23.tgz#16ece69f7f302161e2e736a0f6a474e6db72134c" + integrity sha512-fwOQNZVTMga5KRsfY80g7cpOl4PsFQczMwHzdtgoqLXaYhkhavufKb0sB0l3T1DUxpAufA0KNhlbpuuhZUwxMA== + dependencies: + binaryen "102.0.0-nightly.20211028" + long "^5.2.0" + source-map-support "^0.5.20" + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" @@ -264,7 +529,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.21.1: +axios@^0.21.1, axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== @@ -319,6 +584,11 @@ binaryen@101.0.0-nightly.20210723: resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== +binaryen@102.0.0-nightly.20211028: + version "102.0.0-nightly.20211028" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-102.0.0-nightly.20211028.tgz#8f1efb0920afd34509e342e37f84313ec936afb2" + integrity sha512-GCJBVB5exbxzzvyt8MGDv/MeUjs6gkXDvf4xOIItRBptYl0Tz5sm1o/uG95YK0L0VeG5ajDu3hRtkBP2kzqC5w== + bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -362,11 +632,21 @@ blakejs@^1.1.0: resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + bn.js@^4.0.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + borc@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" @@ -412,13 +692,22 @@ browserify-aes@^1.0.6, browserify-aes@^1.2.0: inherits "^2.0.1" safe-buffer "^5.0.1" -bs58@^4.0.1: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -486,11 +775,19 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caseless@~0.12.0: +caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@3.0.0, chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -500,28 +797,20 @@ chalk@^2.0.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.0.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: - anymatch "~3.1.2" + anymatch "~3.1.1" braces "~3.0.2" - glob-parent "~5.1.2" + glob-parent "~5.1.0" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.6.0" + readdirp "~3.5.0" optionalDependencies: - fsevents "~2.3.2" + fsevents "~2.3.1" chownr@^1.0.1: version "1.1.4" @@ -619,7 +908,12 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colors@^1.1.2, colors@^1.3.3: +colors@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -641,14 +935,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -"concat-stream@github:hugomrdias/concat-stream#feat/smaller": - version "2.0.0" - resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" - dependencies: - inherits "^2.0.3" - readable-stream "^3.0.2" - -concat-stream@~1.6.2: +concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -658,6 +945,13 @@ concat-stream@~1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +"concat-stream@github:hugomrdias/concat-stream#feat/smaller": + version "2.0.0" + resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" + dependencies: + inherits "^2.0.3" + readable-stream "^3.0.2" + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -690,7 +984,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.4: +create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -718,6 +1012,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -725,7 +1026,7 @@ debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -764,12 +1065,10 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -docker-compose@^0.23.2: - version "0.23.13" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.13.tgz#77d37bd05b6a966345f631e6d05e961c79514f06" - integrity sha512-/9fYC4g3AO+qsqxIZhmbVnFvJJPcYEV2yJbAPPXH+6AytU3urIY8lUAXOlvY8sl4u25pdKu1JrOfAmWC7lJDJg== - dependencies: - yaml "^1.10.2" +docker-compose@0.23.4: + version "0.23.4" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.4.tgz#43bcabcde55a6ba2873b52fe0ccd99dd8fdceba8" + integrity sha512-yWdXby9uQ8o4syOfvoSJ9ZlTnLipvUmDn59uaYY5VGIUSUAfMPPGqE1DE3pOCnfSg9Tl9UOOFO0PCSAzuIHmuA== docker-modem@^1.0.8: version "1.0.9" @@ -781,7 +1080,7 @@ docker-modem@^1.0.8: readable-stream "~1.0.26-4" split-ca "^1.0.0" -dockerode@^2.5.8: +dockerode@2.5.8: version "2.5.8" resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== @@ -812,7 +1111,7 @@ ejs@^2.6.1: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== -elliptic@^6.5.2: +elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -878,6 +1177,53 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereumjs-util@^7.1.0: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -969,6 +1315,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -983,15 +1338,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^2.0.0" + universalify "^1.0.0" fs-jetpack@^2.2.2: version "2.4.0" @@ -1013,7 +1368,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.3.2: +fsevents@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -1032,6 +1387,11 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -1046,14 +1406,26 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@~5.1.2: +glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.1.2, glob@^7.1.3: +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -1065,15 +1437,14 @@ glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -gluegun@^4.3.1: - version "4.7.0" - resolved "https://registry.yarnpkg.com/gluegun/-/gluegun-4.7.0.tgz#d1e88828ec6737d966619fff07c04f7e689dc59e" - integrity sha512-St+J/rly0FoWLeISgBGDuymwF3/b8OdmxBCbSvK1hXEoRbaaATiRpPepJSJWuRYR7cGR7Hy9drgQwGFBAolhbQ== +"gluegun@https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep": + version "4.3.1" + resolved "https://github.com/edgeandnode/gluegun#b34b9003d7bf556836da41b57ef36eb21570620a" dependencies: - apisauce "^2.0.1" + apisauce "^1.0.1" app-module-path "^2.2.0" cli-table3 "~0.5.0" - colors "^1.3.3" + colors "1.3.3" cosmiconfig "6.0.0" cross-spawn "^7.0.0" ejs "^2.6.1" @@ -1107,10 +1478,20 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -graphql@^15.5.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.6.0.tgz#e69323c6a9780a1a4b9ddf7e35ca8904bb04df02" - integrity sha512-WJR872Zlc9hckiEPhXgyUftXH48jp2EjO5tgBBOyNMRJZ9fviL2mJBD6CAysk6N5S0r9BTs09Qk39nnJBkvOXQ== +graphql-import-node@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/graphql-import-node/-/graphql-import-node-0.0.5.tgz#caf76a6cece10858b14f27cce935655398fc1bf0" + integrity sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q== + +graphql@15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" + integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== + +graphql@^16.6.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== har-schema@^2.0.0: version "2.0.0" @@ -1156,7 +1537,7 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -1178,6 +1559,23 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1197,10 +1595,10 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +immutable@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.1.tgz#8a4025691018c560a40c67e43d698f816edc44d4" + integrity sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ== import-fresh@^3.1.0: version "3.3.0" @@ -1246,7 +1644,7 @@ ipfs-block@~0.8.1: cids "~0.7.0" class-is "^1.1.0" -ipfs-http-client@^34.0.0: +ipfs-http-client@34.0.0: version "34.0.0" resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== @@ -1393,6 +1791,11 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -1503,10 +1906,10 @@ iterable-ndjson@^1.1.0: dependencies: string_decoder "^1.2.0" -jayson@^3.0.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.4.tgz#9e9d1ba2a75d811f254bceff61a096772fa04832" - integrity sha512-GH63DsRFFlodS8krFgAhxwYvQFmSwjsFxKnPrHQtp+BJj/tpeSj3hyBGGqmTkuq043U1Gn6u8VdsVRFZX1EEiQ== +jayson@3.6.6: + version "3.6.6" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.6.tgz#189984f624e398f831bd2be8e8c80eb3abf764a1" + integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ== dependencies: "@types/connect" "^3.4.33" "@types/express-serve-static-core" "^4.17.9" @@ -1521,10 +1924,10 @@ jayson@^3.0.2: isomorphic-ws "^4.0.1" json-stringify-safe "^5.0.1" lodash "^4.17.20" - uuid "^3.4.0" + uuid "^8.3.2" ws "^7.4.5" -js-sha3@^0.8.0, js-sha3@~0.8.0: +js-sha3@0.8.0, js-sha3@^0.8.0, js-sha3@~0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== @@ -1534,14 +1937,21 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1608,6 +2018,15 @@ just-map-keys@^1.1.0: resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.1.0.tgz#9663c9f971ba46e17f2b05e66fec81149375f230" integrity sha512-oNKi+4y7fr8lXnhKYpBbCkiwHRVkAnx0VDkCeTDtKKMzGr1Lz1Yym+RSieKUTKim68emC5Yxrb4YmiF9STDO+g== +keccak@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keypair@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.3.tgz#4314109d94052a0acfd6b885695026ad29529c80" @@ -1762,6 +2181,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +long@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f" + integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== + looper@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" @@ -2041,6 +2465,16 @@ nan@^2.14.0, nan@^2.14.2: split2 "^3.1.0" through2 "^3.0.0" +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-fetch@^2.3.0: version "2.6.5" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" @@ -2053,6 +2487,11 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-gyp-build@^4.2.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + nodeify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" @@ -2073,6 +2512,14 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -2140,6 +2587,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -2165,6 +2617,17 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + peer-id@~0.12.2, peer-id@~0.12.3: version "0.12.5" resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" @@ -2202,17 +2665,12 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -pkginfo@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -prettier@^1.13.5: +prettier@1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== @@ -2227,6 +2685,13 @@ promise-nodeify@^3.0.1: resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + promise@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" @@ -2297,6 +2762,13 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +qs@^6.4.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + qs@^6.5.2: version "6.10.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" @@ -2326,6 +2798,13 @@ ramdasauce@^2.1.0: dependencies: ramda "^0.24.1" +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + "readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -2358,14 +2837,19 @@ readable-stream@~1.0.26-4: isarray "0.0.1" string_decoder "~0.10.x" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" -request@^2.88.0: +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +request@2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -2426,6 +2910,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + rsa-pem-to-jwk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" @@ -2441,7 +2932,7 @@ rsa-unpack@0.0.6: dependencies: optimist "~0.3.5" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2456,6 +2947,11 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + secp256k1@^3.6.2: version "3.8.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" @@ -2470,6 +2966,15 @@ secp256k1@^3.6.2: nan "^2.14.0" safe-buffer "^5.1.2" +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + semver@7.3.5, semver@^7.0.0: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -2477,6 +2982,11 @@ semver@7.3.5, semver@^7.0.0: dependencies: lru-cache "^6.0.0" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -2518,6 +3028,19 @@ signed-varint@^2.0.1: dependencies: varint "~5.0.0" +source-map-support@^0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + split-ca@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" @@ -2609,6 +3132,13 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2623,6 +3153,22 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +sync-request@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + tar-fs@~1.16.3: version "1.16.3" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" @@ -2669,6 +3215,23 @@ tar@^6.1.0: mkdirp "^1.0.3" yallist "^4.0.0" +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + through2@^3.0.0, through2@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" @@ -2682,7 +3245,7 @@ through2@^3.0.0, through2@^3.0.1: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tmp-promise@^3.0.2: +tmp-promise@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== @@ -2748,6 +3311,11 @@ unique-by@^1.0.0: resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" integrity sha1-UiDIa6e8Vy+3E610ZRRwy2RCEr0= +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -2768,16 +3336,26 @@ ursa-optional@~0.10.0: bindings "^1.5.0" nan "^2.14.2" +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + varint@^5.0.0, varint@~5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" @@ -2799,6 +3377,27 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web3-eth-abi@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.0.tgz#4fac9c7d9e5a62b57f8884b37371f515c766f3f4" + integrity sha512-heqR0bWxgCJwjWIhq2sGyNj9bwun5+Xox/LdZKe+WMyTSy0cXDXEAgv3XKNkXC4JqdDt/ZlbTEx4TWak4TRMSg== + dependencies: + "@ethersproject/abi" "5.0.7" + web3-utils "1.7.0" + +web3-utils@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.0.tgz#c59f0fd43b2449357296eb54541810b99b1c771c" + integrity sha512-O8Tl4Ky40Sp6pe89Olk2FsaUkgHyb5QAXuaKo38ms3CxZZ4d3rPGfjP9DNKGm5+IUgAZBNpF1VmlSmNCqfDI1w== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -2849,7 +3448,14 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2, yaml@^1.5.1, yaml@^1.7.2: +yaml@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" + integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== + dependencies: + "@babel/runtime" "^7.9.2" + +yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== From 766e6850c851263b2d717c0eb6a738d6b8c9a78f Mon Sep 17 00:00:00 2001 From: Frederico Moura Date: Thu, 27 Apr 2023 10:47:08 +0100 Subject: [PATCH 2/3] New contracts --- data.md | 12 ++--- src/mapping.ts | 122 ++++++++++++++++++++----------------------------- subgraph.yaml | 22 +++++---- 3 files changed, 68 insertions(+), 88 deletions(-) diff --git a/data.md b/data.md index fb6c1e9..bc3e2f4 100644 --- a/data.md +++ b/data.md @@ -16,22 +16,22 @@ Staking network celo-alfajores startBlock - 7497000 + 17392581 TalentFactory - 0x8ee4f3044Ef0166A6DB12b0e9Eeb1735f1Fc7cc9 + 0xc3115863Fa759b0BC833c59FA123eBCEf6BA9148 Staking - 0xfc35754091D1540cE605Db87e5284369D766F0bF + 0xA9e7eBc23859EE5Fdc0F483C36F2aF50Cc73a271 ## Mumbai network mumbai startBlock - 27780000 + 34766222 TalentFactory - 0x228D74bCf10b9ad89600E70DE265653C9Da1B514 + 0x33f8FB8C3cA4465Ca02899145b4489b8eDf3A2FD Staking - 0x3678cE749b0ffa5C62dd9b300148259d2DFAE572 + 0x4C1A1DaaEc0a1660359F83D76571f4b000eC7DA6 ## Matic diff --git a/src/mapping.ts b/src/mapping.ts index f175cff..8e1172b 100644 --- a/src/mapping.ts +++ b/src/mapping.ts @@ -1,12 +1,12 @@ -import { BigInt, BigDecimal } from "@graphprotocol/graph-ts" +import { BigInt, BigDecimal, Address } from "@graphprotocol/graph-ts" import { TalentFactory, Supporter, TalentToken, SupporterTalentToken, TalentTokenDayData } from "../generated/schema" import * as TalentTokenTemplates from "../generated/templates/TalentToken/TalentTokenV3" import * as Templates from "../generated/templates" import { TalentCreated } from "../generated/TalentFactory/TalentFactoryV3" import { Transfer } from "../generated/templates/TalentToken/TalentTokenV3" -import { Stake, Unstake, RewardClaim } from "../generated/Staking/StakingMigrationV2" +import { Stake, Unstake } from "../generated/Staking/StakingV3" -const FACTORY_ADDRESS = '0xA91b75E8aA2Dc62B2957333B1a1412532444FdE0' +const FACTORY_ADDRESS = '0x33f8FB8C3cA4465Ca02899145b4489b8eDf3A2FD' const ADDRESS_ZERO = '0x0000000000000000000000000000000000000000' const ZERO_BI = BigInt.fromI32(0) const ONE_BI = BigInt.fromI32(1) @@ -15,31 +15,11 @@ const INITIAL_SUPPLY_BI = BigInt.fromString("10000000000000000000000") const ZERO_BD = BigDecimal.fromString('0') export function handleTalentTokenCreated(event: TalentCreated): void { - let factory = TalentFactory.load(FACTORY_ADDRESS) - // load factory - if (factory === null) { - factory = new TalentFactory(FACTORY_ADDRESS) - factory.talentCount = ZERO_BI - factory.owner = ADDRESS_ZERO - } + const token = event.params.token + const owner = event.params.talent.toHex() + const timestamp = event.block.timestamp - factory.talentCount = factory.talentCount.plus(ONE_BI) - factory.save() - - let talentToken = new TalentToken(event.params.token.toHex()) - talentToken.owner = event.params.talent.toHex() - talentToken.supporterCounter = ZERO_BI - talentToken.txCount = ZERO_BI - talentToken.totalValueLocked = INITIAL_SUPPLY_BI - talentToken.marketCap = INITIAL_SUPPLY_BI.div(FIVE_BI) - talentToken.rewardsReady = ZERO_BD - talentToken.rewardsClaimed = ZERO_BD - talentToken.createdAtTimestamp = event.block.timestamp; - - Templates.TalentToken.create(event.params.token) - - talentToken.save() - factory.save() + initializeFactoryAndTalentToken(token, owner, timestamp) } export function handleTransfer(event: Transfer): void { @@ -65,12 +45,23 @@ export function handleTransfer(event: Transfer): void { export function handleStake(event: Stake): void { let talentToken = TalentToken.load(event.params.talentToken.toHex()) if(talentToken === null) { - talentToken = new TalentToken(event.params.talentToken.toHex()) + const token = event.params.talentToken + let contract = TalentTokenTemplates.TalentTokenV3.bind(token) + const owner = contract.talent().toHex() + const timestamp = event.block.timestamp + + talentToken = initializeFactoryAndTalentToken(token, owner, timestamp) + talentToken.supporterCounter = ZERO_BI talentToken.totalValueLocked = INITIAL_SUPPLY_BI talentToken.marketCap = INITIAL_SUPPLY_BI.div(FIVE_BI) talentToken.rewardsReady = ZERO_BD talentToken.rewardsClaimed = ZERO_BD + talentToken.symbol = contract.symbol() + talentToken.decimals = BigInt.fromI32(contract.decimals()) + talentToken.name = contract.name() + talentToken.maxSupply = contract.MAX_SUPPLY() + talentToken.totalSupply = contract.totalSupply() } talentToken.totalValueLocked = talentToken.totalValueLocked.plus(event.params.talAmount) @@ -149,50 +140,6 @@ export function handleUnstake(event: Unstake): void { supporterTalentRelationship.save() } -export function handleRewardClaim(event: RewardClaim): void { - let talentToken = TalentToken.load(event.params.talentToken.toHex()) - if(talentToken === null) { - talentToken = new TalentToken(event.params.talentToken.toHex()) - talentToken.supporterCounter = ONE_BI - talentToken.totalValueLocked = INITIAL_SUPPLY_BI - talentToken.rewardsReady = ZERO_BD - talentToken.rewardsClaimed = ZERO_BD - } - - talentToken.totalValueLocked = talentToken.totalValueLocked.plus(event.params.stakerReward) - talentToken.marketCap = talentToken.marketCap.plus(event.params.stakerReward.div(FIVE_BI)) - - let supporter = Supporter.load(event.params.owner.toHex()) - if(supporter === null) { - supporter = new Supporter(event.params.owner.toHex()) - supporter.totalAmount = ZERO_BD - supporter.rewardsClaimed = ZERO_BD - } - - supporter.totalAmount = supporter.totalAmount.plus(BigDecimal.fromString(event.params.stakerReward.toString())) - supporter.rewardsClaimed = supporter.rewardsClaimed.plus(BigDecimal.fromString(event.params.stakerReward.toString())) - - talentToken.rewardsReady = talentToken.rewardsReady.plus(BigDecimal.fromString(event.params.talentReward.toString())) - - let relationshipID = event.params.owner.toHexString() + "-" + event.params.talentToken.toHexString() - let supporterTalentRelationship = SupporterTalentToken.load(relationshipID) - if (supporterTalentRelationship === null) { - supporterTalentRelationship = new SupporterTalentToken(relationshipID) - supporterTalentRelationship.supporter = supporter.id - supporterTalentRelationship.talent = talentToken.id - supporterTalentRelationship.amount = ZERO_BD - supporterTalentRelationship.firstTimeBoughtAt = event.block.timestamp - talentToken.supporterCounter = talentToken.supporterCounter.plus(ONE_BI) - } - supporterTalentRelationship.talAmount = supporterTalentRelationship.talAmount.plus(BigDecimal.fromString(event.params.stakerReward.toString())) - supporterTalentRelationship.amount = supporterTalentRelationship.amount.plus(BigDecimal.fromString(event.params.stakerReward.div(FIVE_BI).toString())) - supporterTalentRelationship.lastTimeBoughtAt = event.block.timestamp - - talentToken.save() - supporter.save() - supporterTalentRelationship.save() -} - function updateTalentDayData(event: Transfer): void { let timestamp = event.block.timestamp.toI32(); let dayID = timestamp / 86400; @@ -217,3 +164,34 @@ function updateTalentDayData(event: Transfer): void { talentDayData.dailySupply = talentToken.totalSupply; talentDayData.save(); } + +function initializeFactoryAndTalentToken(token: Address, owner: string, timestamp: BigInt): TalentToken { + let factory = TalentFactory.load(FACTORY_ADDRESS) + // load factory + if (factory === null) { + factory = new TalentFactory(FACTORY_ADDRESS) + factory.talentCount = ZERO_BI + factory.owner = ADDRESS_ZERO + } + + factory.talentCount = factory.talentCount.plus(ONE_BI) + factory.save() + + let talentToken = new TalentToken(token.toHex()) + + talentToken.supporterCounter = ZERO_BI + talentToken.txCount = ZERO_BI + talentToken.totalValueLocked = INITIAL_SUPPLY_BI + talentToken.marketCap = INITIAL_SUPPLY_BI.div(FIVE_BI) + talentToken.rewardsReady = ZERO_BD + talentToken.rewardsClaimed = ZERO_BD + talentToken.createdAtTimestamp = timestamp + talentToken.owner = owner + + Templates.TalentToken.create(token) + + talentToken.save() + factory.save() + + return talentToken +} diff --git a/subgraph.yaml b/subgraph.yaml index 7194520..c6391ff 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -4,11 +4,11 @@ schema: dataSources: - kind: ethereum/contract name: TalentFactory - network: matic + network: mumbai source: - address: "0xA91b75E8aA2Dc62B2957333B1a1412532444FdE0" + address: "0x33f8FB8C3cA4465Ca02899145b4489b8eDf3A2FD" abi: TalentFactoryV3 - startBlock: 40612607 + startBlock: 34766222 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -24,11 +24,11 @@ dataSources: file: ./src/mapping.ts - kind: ethereum/contract name: Staking - network: matic + network: mumbai source: - address: "0xEa998Ff9c0c075cD035b25095D1833E5aF0aF873" - abi: StakingMigrationV2 - startBlock: 40823976 + address: "0x4C1A1DaaEc0a1660359F83D76571f4b000eC7DA6" + abi: StakingV3 + startBlock: 34766222 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -36,8 +36,10 @@ dataSources: entities: - Talent abis: - - name: StakingMigrationV2 - file: ./abis/StakingMigrationV2.json + - name: StakingV3 + file: ./abis/StakingV3.json + - name: TalentTokenV3 + file: ./abis/TalentTokenV3.json eventHandlers: - event: Stake(indexed address,indexed address,uint256,bool) handler: handleStake @@ -47,7 +49,7 @@ dataSources: templates: - name: TalentToken kind: ethereum/contract - network: matic + network: mumbai source: abi: TalentTokenV3 mapping: From fbb2839fd25ef6913d5727563fe3ce7def6fe985 Mon Sep 17 00:00:00 2001 From: Frederico Moura Date: Wed, 7 Jun 2023 16:59:19 +0100 Subject: [PATCH 3/3] Update data with new smart contracts addresses --- data.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/data.md b/data.md index bc3e2f4..6769933 100644 --- a/data.md +++ b/data.md @@ -7,9 +7,9 @@ network startBlock 7497000 TalentFactory - 0xa902DA7a40a671B84bA3Dd0BdBA6FD9d2D888246 + 0xE072455F02Ed15bdEEB95165FF4200a8b0C72E1A Staking - 0x5a6eF881E3707AAf7201dDb7c198fc94B4b12636 + 0x4C9ca5956C4E39ac489081F8b0d85e987c55dB08 ## Alfajores @@ -18,9 +18,9 @@ network startBlock 17392581 TalentFactory - 0xc3115863Fa759b0BC833c59FA123eBCEf6BA9148 + 0xd15Dbc6b4BeA37f7A134B78092EB418e45FcD2A9 Staking - 0xA9e7eBc23859EE5Fdc0F483C36F2aF50Cc73a271 + 0x0af4603de5F98f6C5ba6cCbc1Facf04942E10084 ## Mumbai @@ -29,9 +29,9 @@ network startBlock 34766222 TalentFactory - 0x33f8FB8C3cA4465Ca02899145b4489b8eDf3A2FD + 0x6633d99c035AFb90b073A57EE06F9E46e06D3f88 Staking - 0x4C1A1DaaEc0a1660359F83D76571f4b000eC7DA6 + 0x38D0760d77A42740183e5C4DA876B6493DC53272 ## Matic @@ -40,6 +40,6 @@ network startBlock 32847300 TalentFactory - 0x8Db20Bc35b3AB78CbCC27c1674a26780cBB80918 + 0x7cc5182F85e316E0AafF86797D59Eb79A776Fabe Staking - 0xb477A9BD2547ad61f4Ac22113172Dd909E5B2331 + 0xFa236a656A8FBD82801Fe5bA7b127FBbC4B0ed11