@project-monarch/contracts
Version:
Arch Token + 🧑🌾 Liquidity Mining contracts for Project Monarch & the Monarch Protocol
992 lines • 274 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint256",
"name": "cap_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_manualMintLimit",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_lockFromBlock",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_lockToBlock",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "fromDelegate",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "toDelegate",
"type": "address"
}
],
"name": "DelegateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "delegate",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "previousBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newBalance",
"type": "uint256"
}
],
"name": "DelegateVotesChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Lock",
"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": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "DELEGATION_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_toAdd",
"type": "address"
}
],
"name": "addAuthorized",
"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": "",
"type": "address"
}
],
"name": "authorized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"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": "_holder",
"type": "address"
}
],
"name": "canUnlockAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cap",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newCap",
"type": "uint256"
}
],
"name": "capUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "checkpoints",
"outputs": [
{
"internalType": "uint32",
"name": "fromBlock",
"type": "uint32"
},
{
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "circulatingSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
}
],
"name": "delegate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegatee",
"type": "address"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiry",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "delegateBySig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "delegator",
"type": "address"
}
],
"name": "delegates",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getCurrentVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "blockNumber",
"type": "uint256"
}
],
"name": "getPriorVotes",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_holder",
"type": "address"
}
],
"name": "lastUnlockBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_holder",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "lock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lockFromBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newLockFrom",
"type": "uint256"
}
],
"name": "lockFromUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_holder",
"type": "address"
}
],
"name": "lockOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lockToBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_newLockTo",
"type": "uint256"
}
],
"name": "lockToUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lockedSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "manualMint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "manualMintLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "manualMinted",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "numCheckpoints",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"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": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_holder",
"type": "address"
}
],
"name": "totalBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalLock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "transferAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unlock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unlockedSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"evm": {
"bytecode": {
"linkReferences": {},
"object": "60806040526000600c553480156200001657600080fd5b506040516200370438038062003704833981810160405260c08110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82516401000000008111828201881017156200008e57600080fd5b82525081516020918201929091019080838360005b83811015620000bd578181015183820152602001620000a3565b50505050905090810190601f168015620000eb5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b50604090815260208281015191830151606084015160809094015188519396509094509187918791620001d791600391908501906200027e565b508051620001ed9060049060208401906200027e565b50506005805460ff19166012179055506000620002096200027a565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600793909355600b91909155600955600a55506200031a9050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002c157805160ff1916838001178555620002f1565b82800160010185558215620002f1579182015b82811115620002f1578251825591602001919060010190620002d4565b50620002ff92915062000303565b5090565b5b80821115620002ff576000815560010162000304565b6133da806200032a6000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80637ecebe00116101a7578063c38533c6116100ee578063e6b2fb4a11610097578063f2fde38b11610071578063f2fde38b14610ab4578063f85b84a414610ae7578063fd3d27b814610aef57610320565b8063e6b2fb4a14610a45578063e7a324dc14610a4d578063f1127ed814610a5557610320565b8063cf1c316a116100c8578063cf1c316a1461099e578063dd62ed3e146109d1578063e4c5ff4614610a0c57610320565b8063c38533c614610925578063c3cda52014610942578063ca5c7b911461099657610320565b8063a3a7e7f311610150578063a9059cbb1161012a578063a9059cbb14610886578063b4b5ea57146108bf578063b9181611146108f257610320565b8063a3a7e7f314610812578063a457c2d714610845578063a69df4b51461087e57610320565b80638e875e1a116101815780638e875e1a146107fa5780639358928b1461080257806395d89b411461080a57610320565b80637ecebe001461078c57806389a2867c146107bf5780638da5cb5b146107f257610320565b806340346c491161026b5780635c19a95c1161021457806370a08231116101ee57806370a0823114610718578063715018a61461074b578063782d6fe11461075357610320565b80635c19a95c1461069157806366fc237b146106c45780636fcfff45146106cc57610320565b80634b0ee02a116102455780634b0ee02a146105cf578063587cde1e146106025780635a46d3b51461065e57610320565b806340346c491461054657806340c10f1914610563578063485d7d941461059c57610320565b806323b872dd116102cd578063355274ea116102a7578063355274ea146104fd57806339509351146105055780633a1aae351461053e57610320565b806323b872dd14610463578063282d3fdf146104a6578063313ce567146104df57610320565b806318160ddd116102fe57806318160ddd1461040e578063202b17601461042857806320606b701461045b57610320565b806306fdde0314610325578063095ea7b3146103a25780630cb285e2146103ef575b600080fd5b61032d610af7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561036757818101518382015260200161034f565b50505050905090810190601f1680156103945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103db600480360360408110156103b857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610bab565b604080519115158252519081900360200190f35b61040c6004803603602081101561040557600080fd5b5035610bc9565b005b610416610c11565b60408051918252519081900360200190f35b6104166004803603602081101561043e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c17565b610416610d11565b6103db6004803603606081101561047957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610d35565b61040c600480360360408110156104bc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610dd6565b6104e7611091565b6040805160ff9092168252519081900360200190f35b61041661109a565b6103db6004803603604081101561051b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356110a0565b6104166110fb565b61040c6004803603602081101561055c57600080fd5b5035611101565b61040c6004803603604081101561057957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611149565b61040c600480360360208110156105b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611231565b610416600480360360208110156105e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611348565b6106356004803603602081101561061857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611382565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6104166004803603602081101561067457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113ad565b61040c600480360360208110156106a757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113d5565b6104166113e2565b6106ff600480360360208110156106e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e8565b6040805163ffffffff9092168252519081900360200190f35b6104166004803603602081101561072e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611400565b61040c611428565b6104166004803603604081101561076957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611544565b610416600480360360208110156107a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661180e565b610416600480360360208110156107d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611820565b610635611848565b610416611869565b61041661186f565b61032d61187e565b61040c6004803603602081101561082857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118fd565b6103db6004803603604081101561085b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a2c565b61040c611aa1565b6103db6004803603604081101561089c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611b9b565b610416600480360360208110156108d557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611baf565b6103db6004803603602081101561090857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611c4b565b61040c6004803603602081101561093b57600080fd5b5035611c60565b61040c600480360360c081101561095857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060ff6060820135169060808101359060a00135611ca8565b610416611fe7565b61040c600480360360208110156109b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ff1565b610416600480360360408110156109e757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166120e8565b61040c60048036036040811015610a2257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612120565b61041661220f565b610416612215565b610a9460048036036040811015610a6b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16612239565b6040805163ffffffff909316835260208301919091528051918290030190f35b61040c60048036036020811015610aca57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612266565b610416612412565b610416612418565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b6000610bbf610bb861242e565b8484612432565b5060015b92915050565b3360009081526006602052604090205460ff1680610c03575033610beb611848565b73ffffffffffffffffffffffffffffffffffffffff16145b610c0c57600080fd5b600a55565b60025490565b6000600954431015610c2b57506000610d0c565b600a544310610c60575073ffffffffffffffffffffffffffffffffffffffff81166000908152600d6020526040902054610d0c565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600e6020526040812054610c91904390612579565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600e6020526040812054600a549293509091610cc891612579565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600d6020526040902054909150610d07908290610d0190856125f0565b90612663565b925050505b919050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610d428484846126e4565b610dcc84610d4e61242e565b610dc7856040518060600160405280602881526020016132de6028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610d9961242e565b73ffffffffffffffffffffffffffffffffffffffff1681526020810191909152604001600020549190612733565b612432565b5060019392505050565b610dde61242e565b73ffffffffffffffffffffffffffffffffffffffff16610dfc611848565b73ffffffffffffffffffffffffffffffffffffffff1614610e7e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216610f0057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610f0982611400565b811115610f7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206c6f636b20616d6f756e74206f7665722062616c616e636500604482015290519081900360640190fd5b610f828230836126e4565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040902054610fb290826127e4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600d6020526040902055600854610fe590826127e4565b60085560095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e602052604090205410156110415760095473ffffffffffffffffffffffffffffffffffffffff83166000908152600e60205260409020555b60408051828152905173ffffffffffffffffffffffffffffffffffffffff8416917f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d427919081900360200190a25050565b60055460ff1690565b60075490565b6000610bbf6110ad61242e565b84610dc785600160006110be61242e565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c1681529252902054906127e4565b60085490565b3360009081526006602052604090205460ff168061113b575033611123611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61114457600080fd5b600755565b61115161242e565b73ffffffffffffffffffffffffffffffffffffffff1661116f611848565b73ffffffffffffffffffffffffffffffffffffffff16146111f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6111fb8282612858565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205461122d921683612989565b5050565b61123961242e565b73ffffffffffffffffffffffffffffffffffffffff16611257611848565b73ffffffffffffffffffffffffffffffffffffffff16146112d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81163314156112fc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6000610bc361135683611400565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054906127e4565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600f60205260409020541690565b73ffffffffffffffffffffffffffffffffffffffff166000908152600d602052604090205490565b6113df3382612b6a565b50565b60095481565b60116020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61143061242e565b73ffffffffffffffffffffffffffffffffffffffff1661144e611848565b73ffffffffffffffffffffffffffffffffffffffff16146114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600554604051600091610100900473ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff169055565b600043821061159e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061312d6032913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604090205463ffffffff16806115d9576000915050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061169e5773ffffffffffffffffffffffffffffffffffffffff841660009081526010602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff16835292905220600101549050610bc3565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832083805290915290205463ffffffff168310156116e6576000915050610bc3565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff1611156117ca57600282820363ffffffff16048103611736613115565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260106020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152908714156117a557602001519450610bc39350505050565b805163ffffffff168711156117bc578193506117c3565b6001820392505b505061170c565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff9094168352929052206001015491505092915050565b60126020526000908152604090205481565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1690565b600a5481565b6000611879610c11565b905090565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ba15780601f10610b7657610100808354040283529160200191610ba1565b336000908152600d60205260408082205473ffffffffffffffffffffffffffffffffffffffff84168352912054611933916127e4565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020908152604080832093909355600954600e90915291902054101561199b5760095473ffffffffffffffffffffffffffffffffffffffff82166000908152600e60205260409020555b336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff8416835291205410156119fc57336000908152600e60205260408082205473ffffffffffffffffffffffffffffffffffffffff841683529120555b336000818152600d60209081526040808320839055600e9091528120556113df9082611a2782611400565b6126e4565b6000610bbf611a3961242e565b84610dc7856040518060600160405280602581526020016133806025913960016000611a6361242e565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d16815292529020549190612733565b336000908152600d6020526040902054611b1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f45524332303a2063616e6e6f7420756e6c6f636b000000000000000000000000604482015290519081900360640190fd5b6000611b2733610c17565b9050611b3230611400565b811115611b4557611b4230611400565b90505b611b503033836126e4565b336000908152600d6020526040902054611b6a9082612579565b336000908152600d6020908152604080832093909355600e905220439055600854611b959082612579565b60085550565b6000610bbf611ba861242e565b84846126e4565b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604081205463ffffffff1680611be7576000611c44565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011684529091529020600101545b9392505050565b60066020526000908152604090205460ff1681565b3360009081526006602052604090205460ff1680611c9a575033611c82611848565b73ffffffffffffffffffffffffffffffffffffffff16145b611ca357600080fd5b600955565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611cd3610af7565b80519060200120611ce2612c31565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c084015273ffffffffffffffffffffffffffffffffffffffff8b1660e084015261010083018a90526101208084018a905282518085039091018152610140840183528051908501207f19010000000000000000000000000000000000000000000000000000000000006101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a905261022286018990529351929650909492939092600192610242808401937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301929081900390910190855afa158015611e5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806133066031913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090208054600181019091558914611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061315f602d913960400191505060405180910390fd5b87421115611fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061328c6031913960400191505060405180910390fd5b611fda818b612b6a565b505050505b505050505050565b60006118796110fb565b611ff961242e565b73ffffffffffffffffffffffffffffffffffffffff16612017611848565b73ffffffffffffffffffffffffffffffffffffffff161461209957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3360009081526006602052604090205460ff168061215a575033612142611848565b73ffffffffffffffffffffffffffffffffffffffff16145b61216357600080fd5b600b54600c54106121bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061325c6030913960400191505060405180910390fd5b6121c98282612858565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f60205260408120546121fb921683612989565b600c5461220890826127e4565b600c555050565b600c5481565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60106020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b61226e61242e565b73ffffffffffffffffffffffffffffffffffffffff1661228c611848565b73ffffffffffffffffffffffffffffffffffffffff161461230e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661237a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806131ee6026913960400191505060405180910390fd5b60055460405173ffffffffffffffffffffffffffffffffffffffff80841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b600b5481565b6000611879600854612428610c11565b90612579565b3390565b73ffffffffffffffffffffffffffffffffffffffff831661249e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061335c6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661250a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806132146022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000828211156125ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000826125ff57506000610bc3565b8282028284828161260c57fe5b0414611c44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132bd6021913960400191505060405180910390fd5b60008082116126d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816126dc57fe5b049392505050565b6126ef838383612c35565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600f602052604080822054858416835291205461272e92918216911683612989565b505050565b600081848411156127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127a1578181015183820152602001612789565b50505050905090810190601f1680156127ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611c4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166128da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6128e660008383612e05565b6002546128f390826127e4565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461292690826127e4565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129c55750600081115b1561272e5773ffffffffffffffffffffffffffffffffffffffff831615612a9c5773ffffffffffffffffffffffffffffffffffffffff831660009081526011602052604081205463ffffffff169081612a1f576000612a7c565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612a8a8285612579565b9050612a9886848484612ead565b5050505b73ffffffffffffffffffffffffffffffffffffffff82161561272e5773ffffffffffffffffffffffffffffffffffffffff821660009081526011602052604081205463ffffffff169081612af1576000612b4e565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87011684529091529020600101545b90506000612b5c82856127e4565b9050611fdf85848484612ead565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600f602052604081205490911690612b9e84611400565b73ffffffffffffffffffffffffffffffffffffffff8581166000818152600f602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612c2b828483612989565b50505050565b4690565b73ffffffffffffffffffffffffffffffffffffffff8316612ca1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806133376025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216612d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061318c6023913960400191505060405180910390fd5b612d18838383612e05565b612d62816040518060600160405280602681526020016132366026913973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020549190612733565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054612d9e90826127e4565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b612e1083838361272e565b73ffffffffffffffffffffffffffffffffffffffff831661272e57600754612e4082612e3a610c11565b906127e4565b111561272e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6000612ed1436040518060600160405280603f81526020016131af603f913961309d565b905060008463ffffffff16118015612f45575073ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b15612fad5773ffffffffffffffffffffffffffffffffffffffff8516600090815260106020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89011684529091529020600101829055613046565b60408051808201825263ffffffff8084168252602080830186815273ffffffffffffffffffffffffffffffffffffffff8a166000818152601084528681208b861682528452868120955186549086167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000918216178755925160019687015590815260119092529390208054928801909116919092161790555b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff8816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600081640100000000841061310d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156127a1578181015183820152602001612789565b509192915050565b60408051808201909152600080825260208201529056fe476f7665726e616e6365546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a207472616e7366657220746f20746865207a65726f2061646472657373476f7665726e616e6365546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d626572206578636565647320333220626974734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a206d616e75616c4d696e7465642067726561746572207468616e206d616e75616c4d696e744c696d6974476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365476f7665726e616e6365546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369676e617475726545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ecbe652e93b69ec47ce27b22f79bed293716b521758b3e4ee2f59db1368a2f2464736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0xC SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3704 CODESIZE SUB DUP1 PUSH3 0x3704 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0xC0 DUP2 LT ISZERO PUSH3 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xEB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x140 JUMPI PUSH1 0x0 DUP1 REVERT