@project-monarch/contracts
Version:
Arch Token + 🧑🌾 Liquidity Mining contracts for Project Monarch & the Monarch Protocol
1,480 lines • 429 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "contract GovernanceToken",
"name": "_govToken",
"type": "address"
},
{
"internalType": "address",
"name": "_devaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_liquidityaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_comfundaddr",
"type": "address"
},
{
"internalType": "address",
"name": "_founderaddr",
"type": "address"
},
{
"internalType": "uint256",
"name": "_rewardPerBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_startBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_halvingAfterBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_userDepFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_devDepFee",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "_rewardMultiplier",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_blockDeltaStartStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_blockDeltaEndStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_userFeeStage",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "_devFeeStage",
"type": "uint256[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "EmergencyWithdraw",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "lockAmount",
"type": "uint256"
}
],
"name": "SendGovernanceTokenReward",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "pid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"inputs": [],
"name": "FINISH_BONUS_AT_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "HALVING_AT_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_COM",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_DEV",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_FOUNDERS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_FOR_LP",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PERCENT_LOCK_BONUS_REWARD",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "REWARD_MULTIPLIER",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REWARD_PER_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "START_BLOCK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
},
{
"internalType": "contract IERC20",
"name": "_lpToken",
"type": "address"
},
{
"internalType": "bool",
"name": "_withUpdate",
"type": "bool"
}
],
"name": "add",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_toAdd",
"type": "address"
}
],
"name": "addAuthorized",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "authorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "blockDeltaEndStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "blockDeltaStartStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newFinish",
"type": "uint256"
}
],
"name": "bonusFinishUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "claimReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_pids",
"type": "uint256[]"
}
],
"name": "claimRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newCom",
"type": "address"
}
],
"name": "comUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "comfundaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_ref",
"type": "address"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_devaddr",
"type": "address"
}
],
"name": "dev",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "devDepFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "devFeeStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "devaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "emergencyWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newFounder",
"type": "address"
}
],
"name": "founderUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "founderaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getGlobalAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getGlobalRefAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_from",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_to",
"type": "uint256"
}
],
"name": "getMultiplier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "pid1",
"type": "uint256"
}
],
"name": "getNewRewardPerBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_from",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_to",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
}
],
"name": "getPoolReward",
"outputs": [
{
"internalType": "uint256",
"name": "forDev",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forFarmer",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forLP",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forCom",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "forFounders",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "address",
"name": "_user2",
"type": "address"
}
],
"name": "getRefValueOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "getTotalRefs",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "govToken",
"outputs": [
{
"internalType": "contract GovernanceToken",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_newHalving",
"type": "uint256[]"
}
],
"name": "halvingUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "liquidityaddr",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newlock",
"type": "uint256"
}
],
"name": "lockUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newcomlock",
"type": "uint256"
}
],
"name": "lockcomUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newdevlock",
"type": "uint256"
}
],
"name": "lockdevUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newfounderlock",
"type": "uint256"
}
],
"name": "lockfounderUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newlplock",
"type": "uint256"
}
],
"name": "locklpUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newLP",
"type": "address"
}
],
"name": "lpUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "massUpdatePools",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
}
],
"name": "pendingReward",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"name": "poolExistence",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "poolId1",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "poolInfo",
"outputs": [
{
"internalType": "contract IERC20",
"name": "lpToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "allocPoint",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastRewardBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "accGovTokenPerShare",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poolLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "reclaimTokenOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_toRemove",
"type": "address"
}
],
"name": "removeAuthorized",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_block",
"type": "uint256"
}
],
"name": "reviseDeposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "address",
"name": "_user",
"type": "address"
},
{
"internalType": "uint256",
"name": "_block",
"type": "uint256"
}
],
"name": "reviseWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_newMulReward",
"type": "uint256[]"
}
],
"name": "rewardMulUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newReward",
"type": "uint256"
}
],
"name": "rewardUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_allocPoint",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_withUpdate",
"type": "bool"
}
],
"name": "set",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_devDepFees",
"type": "uint256"
}
],
"name": "setDevDepFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_devFees",
"type": "uint256[]"
}
],
"name": "setDevFeeStage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_blockEnds",
"type": "uint256[]"
}
],
"name": "setStageEnds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_blockStarts",
"type": "uint256[]"
}
],
"name": "setStageStarts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_usrDepFees",
"type": "uint256"
}
],
"name": "setUserDepFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256[]",
"name": "_userFees",
"type": "uint256[]"
}
],
"name": "setUserFeeStage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newstarblock",
"type": "uint256"
}
],
"name": "starblockUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalAllocPoint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "updatePool",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "usdOracle",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
}
],
"name": "userDelta",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "userDepFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "userFeeStage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userGlobalInfo",
"outputs": [
{
"internalType": "uint256",
"name": "globalAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalReferals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "globalRefAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userInfo",
"outputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardDebt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardDebtAtBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastWithdrawBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "firstDepositBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "blockdelta",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastDepositBlock",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_pid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_ref",
"type": "address"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040526000601e553480156200001657600080fd5b50604051620053b0380380620053b083398181016040526101e08110156200003d57600080fd5b815160208301516040808501516060860151608087015160a088015160c089015160e08a01516101008b01516101208c01516101408d01805199519b9d9a9c989b979a9699959894979396929591948301929184640100000000821115620000a457600080fd5b908301906020820185811115620000ba57600080fd5b8251866020820283011164010000000082111715620000d857600080fd5b82525081516020918201928201910280838360005b8381101562000107578181015183820152602001620000ed565b50505050905001604052602001805160405193929190846401000000008211156200013157600080fd5b9083019060208201858111156200014757600080fd5b82518660208202830111640100000000821117156200016557600080fd5b82525081516020918201928201910280838360005b83811015620001945781810151838201526020016200017a565b5050505090500160405260200180516040519392919084640100000000821115620001be57600080fd5b908301906020820185811115620001d457600080fd5b8251866020820283011164010000000082111715620001f257600080fd5b82525081516020918201928201910280838360005b838110156200022157818101518382015260200162000207565b50505050905001604052602001805160405193929190846401000000008211156200024b57600080fd5b9083019060208201858111156200026157600080fd5b82518660208202830111640100000000821117156200027f57600080fd5b82525081516020918201928201910280838360005b83811015620002ae57818101518382015260200162000294565b5050505090500160405260200180516040519392919084640100000000821115620002d857600080fd5b908301906020820185811115620002ee57600080fd5b82518660208202830111640100000000821117156200030c57600080fd5b82525081516020918201928201910280838360005b838110156200033b57818101518382015260200162000321565b5050505090500160405250505060006200035a6200060860201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016002819055508e600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d600560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600660006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b600760006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a600860006101000a8154816001600160a01b0302191690836001600160a01b031602179055508960098190555088601381905550866011819055508560128190555084600a9080519060200190620004a3929190620006ce565b508351620004b990600c906020870190620006ce565b508251620004cf90600d906020860190620006ce565b508151620004e590600e906020850190620006ce565b508051620004fb90600f906020840190620006ce565b5060005b600a54600019018110156200058f5760006200054c6001620005388d62000538866001018f6200060c60201b6200410d1790919060201c565b6200067360201b620041871790919060201c565b600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90191909155919091019050620004ff565b50620005b789620005386001600a80549050038b6200060c60201b6200410d1790919060201c565b6010555050600b80546001810182556000919091526000197f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015550620007359b505050505050505050505050565b3390565b6000826200061d575060006200066d565b828202828482816200062b57fe5b04146200066a5760405162461bcd60e51b81526004018080602001828103825260218152602001806200538f6021913960400191505060405180910390fd5b90505b92915050565b6000828201838110156200066a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200070c579160200282015b828111156200070c578251825591602001919060010190620006ef565b506200071a9291506200071e565b5090565b5b808211156200071a57600081556001016200071f565b614c4a80620007456000396000f3fe608060405234801561001057600080fd5b50600436106105145760003560e01c8063847bdaa4116102a1578063c6929e531161016b578063d49e77cd116100e3578063ed9bdeda11610097578063f2fde38b1161007c578063f2fde38b146112b4578063f2ffc22c146112e7578063fb0754331461130457610514565b8063ed9bdeda14611279578063eda670481461128157610514565b8063dd77b9fd116100c8578063dd77b9fd14611219578063de98852414611254578063ec12173d1461127157610514565b8063d49e77cd146111c0578063d9608d8a146111c857610514565b8063cb0b8ca11161013a578063ce2529c91161011f578063ce2529c91461113d578063cf1c316a14611170578063d007db29146111a357610514565b8063cb0b8ca1146110ed578063cbd258b51461110a57610514565b8063c6929e5314611056578063c749d6141461105e578063c8a4271f14611091578063c8ed76801461109957610514565b8063975532dc11610219578063b6066962116101cd578063beff2a53116101b2578063beff2a5314611014578063c56a10ff14611031578063c663baa61461103957610514565b8063b606696214610fb0578063b918161114610fcd57610514565b806398969e82116101fe57806398969e8214610f52578063a02306f914610f8b578063ae169a5014610f9357610514565b8063975532dc14610f42578063980c2a9814610f4a57610514565b80638dbb1e3a11610270578063929c697111610255578063929c697114610e9657806393f1a40b14610ec957806395fdf25814610f3a57610514565b80638dbb1e3a14610e345780638dbdbe6d14610e5757610514565b8063847bdaa414610cb35780638cc883ce14610d565780638d88a90e14610df95780638da5cb5b14610e2c57610514565b80633c9d9267116103e25780635c5e490b1161035a57806364482f791161030e5780637c39c9c9116102f35780637c39c9c914610c4f57806382386d5814610c6c57806382796e9814610cab57610514565b806364482f7914610c1c578063715018a614610c4757610514565b80636066debd1161033f5780636066debd14610bb85780636245f08414610bf7578063630b5ba114610c1457610514565b80635c5e490b14610ae25780635eac623914610b1557610514565b8063485d7d94116103b15780634dbf85ca116103965780634dbf85ca14610a7557806351eb05a614610aa85780635312ea8e14610ac557610514565b8063485d7d941461099f5780634af0e3e1146109d257610514565b80633c9d9267146108ba5780633d479cd5146108c25780634179b4fb146108df57806346664064146108fc57610514565b80631eaaa045116104905780632fda773511610444578063354affb711610429578063354affb7146107dc57806336ebcde61461087f57806339b3e826146108b257610514565b80632fda77351461078c57806330fb8e0e146107a957610514565b8063245b211d11610475578063245b211d146106af57806324b95c3e146106cc5780632a7b0107146106e957610514565b80631eaaa0451461066657806322a376b0146106a757610514565b80630a67d518116104e75780631526fe27116104cc5780631526fe27146105e757806317caf6f1146106415780631d465c821461064957610514565b80630a67d518146105a05780630ad58d2f146105a857610514565b806301b689c01461051957806305268cff14610538578063081e3eda1461056957806309ae4d2c14610583575b600080fd5b6105366004803603602081101561052f57600080fd5b5035611321565b005b610540611369565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610571611385565b60408051918252519081900360200190f35b6105716004803603602081101561059957600080fd5b503561138b565b6105716113c9565b610536600480360360608110156105be57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff166113cf565b610604600480360360208110156105fd57600080fd5b5035611b1a565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352838301919091526060830152519081900360800190f35b610571611b68565b6105716004803603602081101561065f57600080fd5b5035611b6e565b6105366004803603606081101561067c57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff60208201351690604001351515611be1565b610540611f12565b610536600480360360208110156106c557600080fd5b5035611f2e565b610536600480360360208110156106e257600080fd5b5035611f76565b610536600480360360208110156106ff57600080fd5b81019060208101813564010000000081111561071a57600080fd5b82018360208201111561072c57600080fd5b8035906020019184602083028401116401000000008311171561074e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611fbe945050505050565b610571600480360360208110156107a257600080fd5b5035612018565b610536600480360360208110156107bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612036565b610536600480360360208110156107f257600080fd5b81019060208101813564010000000081111561080d57600080fd5b82018360208201111561081f57600080fd5b8035906020019184602083028401116401000000008311171561084157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506120c0945050505050565b6105716004803603602081101561089557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612116565b610571612170565b610540612176565b610536600480360360208110156108d857600080fd5b5035612192565b610571600480360360208110156108f557600080fd5b50356121da565b6105366004803603602081101561091257600080fd5b81019060208101813564010000000081111561092d57600080fd5b82018360208201111561093f57600080fd5b8035906020019184602083028401116401000000008311171561096157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506121e7945050505050565b610536600480360360208110156109b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661223d565b610536600480360360208110156109e857600080fd5b810190602081018135640100000000811115610a0357600080fd5b820183602082011115610a1557600080fd5b80359060200191846020830284011164010000000083111715610a3757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612354945050505050565b61053660048036036020811015610a8b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166123aa565b61053660048036036020811015610abe57600080fd5b5035612434565b61053660048036036020811015610adb57600080fd5b5035612b28565b61057160048036036020811015610af857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612cab565b61053660048036036020811015610b2b57600080fd5b810190602081018135640100000000811115610b4657600080fd5b820183602082011115610b5857600080fd5b80359060200191846020830284011164010000000083111715610b7a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612d03945050505050565b61053660048036036060811015610bce57600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135612d33565b61057160048036036020811015610c0d57600080fd5b5035612dac565b610536612db9565b61053660048036036060811015610c3257600080fd5b50803590602081013590604001351515612dd8565b610536612ef9565b61053660048036036020811015610c6557600080fd5b5035613010565b61053660048036036060811015610c8257600080fd5b5080359073ffffffffffffffffffffffffffffffffffffffff6020820135169060400135613058565b6105716130d1565b61053660048036036020811015610cc957600080fd5b810190602081018135640100000000811115610ce457600080fd5b820183602082011115610cf657600080fd5b80359060200191846020830284011164010000000083111715610d1857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130d7945050505050565b61053660048036036020811015610d6c57600080fd5b810190602081018135640100000000811115610d8757600080fd5b820183602082011115610d9957600080fd5b80359060200191846020830284011164010000000083111715610dbb57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061312d945050505050565b61053660048036036020811015610e0f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613183565b61054061320d565b61057160048036036040811015610e4a57600080fd5b5080359060200135613229565b61053660048036036060811015610e6d57600080fd5b508035906020810135906040013573ffffffffffffffffffffffffffffffffffffffff16613325565b61057160048036036020811015610eac57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661362d565b610f0260048036036040811015610edf57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16613689565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b6105716136d8565b6105716136de565b6105716136e4565b61057160048036036040811015610f6857600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166136ea565b61057161385e565b61053660048036036020811015610fa957600080fd5b5035613864565b61053660048036036020811015610fc657600080fd5b5035613876565b61100060048036036020811015610fe357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166138be565b604080519115158252519081900360200190f35b6105716004803603602081101561102a57600080fd5b50356138d3565b6105716138e0565b6105366004803603602081101561104f57600080fd5b50356138e6565b61057161392e565b6105366004803603602081101561107457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613934565b6105406139be565b6110c2600480360360608110156110af57600080fd5b50803590602081013590604001356139da565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6105716004803603602081101561110357600080fd5b5035613bec565b6110006004803603602081101561112057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613bf9565b6105716004803603602081101561115357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c0e565b6105366004803603602081101561118657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613c20565b610571600480360360208110156111b957600080fd5b5035613d1a565b610540613d27565b6111fb600480360360208110156111de57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613d43565b60408051938452602084019290925282820152519081900360600190f35b6105716004803603604081101561122f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516613d64565b6105366004803603602081101561126a57600080fd5b5035613da0565b610540613de8565b610571613e04565b6105366004803603602081101561129757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613e0a565b610536600480360360208110156112ca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16613edc565b610536600480360360208110156112fd57600080fd5b503561407d565b6105366004803603602081101561131a57600080fd5b50356140c5565b3360009081526001602052604090205460ff168061135b57503361134361320d565b73ffffffffffffffffffffffffffffffffffffffff16145b61136457600080fd5b601455565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60195490565b6000818152601b6020908152604080832033845290915281206003810154156113bb5760030154430390506113c4565b60040154430390505b919050565b60165481565b60028054141561144057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002808190555060006019848154811061145657fe5b60009182526020808320878452601b825260408085203380875290845281862073ffffffffffffffffffffffffffffffffffffffff89168752601c909452818620908652942082546004909402909101945090929186111561151957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d61737465724c6f6f7465723a3a77697468647261773a206e6f7420676f6f64604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8516156115595733600090815260018301602052604090208054879003905560038201805487900390555b8054869003815561156987612434565b611572876141fb565b8515611b0c57825461158490876144f2565b83556003830154156115a1576003830154430360058401556115ae565b6004830154430360058401555b600c6000815481106115bc57fe5b9060005260206000200154836005015414806115db5750826006015443145b15611674576116393361161a6064611614600e6000815481106115fa57fe5b90600052602060002001548b61410d90919063ffffffff16565b90614569565b865473ffffffffffffffffffffffffffffffffffffffff1691906145ea565b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a91606491611614916000906115fa57fe5b611aae565b600c60018154811061168257fe5b90600052602060002001548360050154101580156116bc5750600d6000815481106116a957fe5b9060005260206000200154836005015411155b15611713576116db3361161a6064611614600e6001815481106115fa57fe5b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a916064916116149160019081106115fa57fe5b600c60028154811061172157fe5b906000526020600020015483600501541015801561175b5750600d60018154811061174857fe5b9060005260206000200154836005015411155b156117b25761177a3361161a6064611614600e6002815481106115fa57fe5b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a916064916116149160029081106115fa57fe5b600c6003815481106117c057fe5b90600052602060002001548360050154101580156117fa5750600d6002815481106117e757fe5b9060005260206000200154836005015411155b15611851576118193361161a6064611614600e6003815481106115fa57fe5b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a916064916116149160039081106115fa57fe5b600c60048154811061185f57fe5b90600052602060002001548360050154101580156118995750600d60038154811061188657fe5b9060005260206000200154836005015411155b156118f0576118b83361161a6064611614600e6004815481106115fa57fe5b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a916064916116149160049081106115fa57fe5b600c6005815481106118fe57fe5b90600052602060002001548360050154101580156119385750600d60048154811061192557fe5b9060005260206000200154836005015411155b15611995576119583361161a6103e8611614600e6005815481106115fa57fe5b61166f600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661161a6103e8611614600f6005815481106115fa57fe5b600c6006815481106119a357fe5b90600052602060002001548360050154101580156119dd5750600d6005815481106119ca57fe5b9060005260206000200154836005015411155b15611a36576119fd3361161a612710611614600e6006815481106115fa57fe5b600554600f805461166f9273ffffffffffffffffffffffffffffffffffffffff169161161a91612710916116149160069081106115fa57fe5b600c600781548110611a4457fe5b906000526020600020015483600501541115611aae57611a753361161a612710611614600e6007815481106115fa57fe5b600554600f8054611aae9273ffffffffffffffffffffffffffffffffffffffff169161161a91612710916116149160079081106115fa57fe5b60038401548354611ac99164e8d4a51000916116149161410d565b6001840155604080518781529051889133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a34360038401555b505060016002555050505050565b60198181548110611b2757fe5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b601e5481565b600080611b7e6001430343613229565b905082611b9b57600954611b9390829061410d565b9150506113c4565b611b93601e5461161460196001870381548110611bb457fe5b906000526020600020906004020160010154611bdb6009548661410d90919063ffffffff16565b9061410d565b611be9614677565b73ffffffffffffffffffffffffffffffffffffffff16611c0761320d565b73ffffffffffffffffffffffffffffffffffffffff1614611c8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152601d6020526040902054829060ff1615611d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180614b9c6027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152601a602052604090205415611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180614bed6028913960400191505060405180910390fd5b8115611d9457611d94612db9565b60006013544311611da757601354611da9565b435b601e54909150611db99086614187565b601e556019805473ffffffffffffffffffffffffffffffffffffffff9586166000818152601a6020908152604080832060019586019055601d82528