@daostack/arc-experimental
Version:
A platform for building DAOs
608 lines • 58.6 kB
JSON
{
"contractName": "Join",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
}
],
"name": "FundedBeforeDeadline",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "string",
"name": "_descriptionHash",
"type": "string"
},
{
"indexed": false,
"internalType": "address",
"name": "_proposedMember",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_feeAmount",
"type": "uint256"
}
],
"name": "JoinInProposal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "int256",
"name": "_decision",
"type": "int256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_avatar",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "RedeemReputation",
"type": "event"
},
{
"inputs": [],
"name": "FUNDED_BEFORE_DEADLINE_KEY",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "FUNDED_BEFORE_DEADLINE_VALUE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "contract Avatar",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_stakingToken",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "balanceOfStakingToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "burnReputation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
},
{
"internalType": "int256",
"name": "_decision",
"type": "int256"
}
],
"name": "executeProposal",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "fundingGoal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundingGoalDeadline",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fundingToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "getTotalReputationSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract Avatar",
"name": "_avatar",
"type": "address"
},
{
"internalType": "contract IntVoteInterface",
"name": "_votingMachine",
"type": "address"
},
{
"internalType": "uint256[11]",
"name": "_votingParams",
"type": "uint256[11]"
},
{
"internalType": "address",
"name": "_voteOnBehalf",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_voteParamsHash",
"type": "bytes32"
},
{
"internalType": "contract IERC20",
"name": "_fundingToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_minFeeToJoin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_memberReputation",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_fundingGoal",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_fundingGoalDeadline",
"type": "uint256"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "memberReputation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "membersState",
"outputs": [
{
"internalType": "enum Join.MemberState",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minFeeToJoin",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "mintReputation",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "address",
"name": "proposedMember",
"type": "address"
},
{
"internalType": "uint256",
"name": "funding",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "proposalsBlockNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_descriptionHash",
"type": "string"
},
{
"internalType": "uint256",
"name": "_feeAmount",
"type": "uint256"
}
],
"name": "proposeToJoin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "redeemReputation",
"outputs": [
{
"internalType": "uint256",
"name": "reputation",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "reputationOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "setFundingGoalReachedFlag",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "_stakingToken",
"type": "address"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_proposalId",
"type": "bytes32"
}
],
"name": "stakingTokenTransfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalDonation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "voteParamsHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "votingMachine",
"outputs": [
{
"internalType": "contract IntVoteInterface",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50612c65806100206000396000f3fe6080604052600436106101665760003560e01c80637a5cb92c116100d1578063b551c3731161008a578063d29b5d2f11610064578063d29b5d2f14610620578063e4392dbb1461065f578063ee2ac05f14610674578063f81f8bf61461068957610166565b8063b551c37314610583578063bea75f28146105ad578063c7916cf9146105f657610166565b80637a5cb92c146104285780637ae5644a1461045257806393df91a1146104675780639537ba0c1461047c5780639588378e146105065780639d4c162d1461053f57610166565b80635368e556116101235780635368e556146103215780635aef7de61461039b5780636b8eb403146103b05780637350dbd1146103e957806378065f27146103fe5780637a3a0e841461041357610166565b8063187a9e4b1461016b57806332ed5b12146102255780633edf7ca11461027257806345c3dffa146102a35780634ea2c7ec146102b8578063505ae62b146102cd575b600080fd5b6102136004803603604081101561018157600080fd5b81019060208101813564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460018302840111640100000000831117156101d057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106c8915050565b60408051918252519081900360200190f35b34801561023157600080fd5b5061024f6004803603602081101561024857600080fd5b5035610c9c565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561027e57600080fd5b50610287610cc1565b604080516001600160a01b039092168252519081900360200190f35b3480156102af57600080fd5b50610213610cd0565b3480156102c457600080fd5b50610213610cd6565b3480156102d957600080fd5b50610300600480360360208110156102f057600080fd5b50356001600160a01b0316610cdc565b6040518082600481111561031057fe5b815260200191505060405180910390f35b34801561032d57600080fd5b50610399600480360361028081101561034557600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0810135909116906102008101359061022081013590610240810135906102600135610cf1565b005b3480156103a757600080fd5b50610287610d5f565b3480156103bc57600080fd5b50610213600480360360408110156103d357600080fd5b506001600160a01b038135169060200135610d6e565b3480156103f557600080fd5b50610399610e48565b34801561040a57600080fd5b506102876113b0565b34801561041f57600080fd5b506102136113bf565b34801561043457600080fd5b506102136004803603602081101561044b57600080fd5b50356113c5565b34801561045e57600080fd5b506102136113d7565b34801561047357600080fd5b506102136113dd565b34801561048857600080fd5b506104916113e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104cb5781810151838201526020016104b3565b50505050905090810190601f1680156104f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051257600080fd5b506102136004803603604081101561052957600080fd5b506001600160a01b038135169060200135611403565b34801561054b57600080fd5b5061056f6004803603604081101561056257600080fd5b5080359060200135611534565b604080519115158252519081900360200190f35b34801561058f57600080fd5b50610213600480360360208110156105a657600080fd5b50356119f2565b3480156105b957600080fd5b5061056f600480360360808110156105d057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611c89565b34801561060257600080fd5b506102136004803603602081101561061957600080fd5b5035611ded565b34801561062c57600080fd5b5061056f6004803603606081101561064357600080fd5b508035906001600160a01b0360208201351690604001356120d8565b34801561066b57600080fd5b50610491612233565b34801561068057600080fd5b50610213612265565b34801561069557600080fd5b5061056f600480360360608110156106ac57600080fd5b508035906001600160a01b03602082013516906040013561226b565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561070d57600080fd5b505afa158015610721573d6000803e3d6000fd5b505050506040513d602081101561073757600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d60208110156107ab57600080fd5b50516107f9576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b3360008181526038602052604090205460019060ff16600481111561081a57fe5b141561086d576040805162461bcd60e51b815260206004820152601f60248201527f70726f706f73657220697320616c726561647920612063616e64696461746500604482015290519081900360640190fd5b60026001600160a01b03821660009081526038602052604090205460ff16600481111561089657fe5b14156108d35760405162461bcd60e51b8152600401808060200182810382526029815260200180612b386029913960400191505060405180910390fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561092157600080fd5b505afa158015610935573d6000803e3d6000fd5b505050506040513d602081101561094b57600080fd5b5051604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561099757600080fd5b505afa1580156109ab573d6000803e3d6000fd5b505050506040513d60208110156109c157600080fd5b505115610a15576040805162461bcd60e51b815260206004820152601c60248201527f70726f706f73657220697320616c72656164792061206d656d62657200000000604482015290519081900360640190fd5b603a54831015610a565760405162461bcd60e51b815260040180806020018281038252602d815260200180612be1602d913960400191505060405180910390fd5b6001600160a01b038181166000908152603860205260409020805460ff1916600117905560395416610ac557348314610ac05760405162461bcd60e51b8152600401808060200182810382526028815260200180612b616028913960400191505060405180910390fd5b610add565b603954610add906001600160a01b0316823086612391565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093526001600160a01b03858116604485015291821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610b4a57600080fd5b505af1158015610b5e573d6000803e3d6000fd5b505050506040513d6020811015610b7457600080fd5b50519050610b80612b20565b506040805180820182526001600160a01b038481168083526020808401898152600087815260378352868120865181546001600160a01b03191690871617815591516001909201919091556033548651808401949094529583018a905260608084528b51908401528a51949587959416937fda76b8228e4eb3d710f6cddb20dccd29250b738750d145adb879de9bc87ab236938c938a938d938392608084019290880191908190849084905b83811015610c44578181015183820152602001610c2c565b50505050905090810190601f168015610c715780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060008181526036602052604090204390559150505b92915050565b603760205260009081526040902080546001909101546001600160a01b039091169082565b6034546001600160a01b031681565b603a5481565b60355481565b60386020526000908152604090205460ff1681565b610d288a8a888b600b806020026040519081016040528092919082600b602002808284376000920191909152508d91506123f19050565b603980546001600160a01b0319166001600160a01b039690961695909517909455603a92909255603b55603c55603d555050505050565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610dc7576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b158015610e1457600080fd5b505afa158015610e28573d6000803e3d6000fd5b505050506040513d6020811015610e3e57600080fd5b5051949350505050565b6039546000906001600160a01b0316610ee657603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b50516001600160a01b0316319050610f65565b603954603354604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b158015610f3657600080fd5b505afa158015610f4a573d6000803e3d6000fd5b505050506040513d6020811015610f6057600080fd5b505190505b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051611150966001600160a01b03909316946358cb548b949293839260449092019180838360005b8381101561100b578181015183820152602001610ff3565b50505050905090810190601f1680156110385780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561109257600080fd5b81019080805160405193929190846401000000008211156110b257600080fd5b9083019060208201858111156110c757600080fd5b82516401000000008111828201881017156110e157600080fd5b82525081516020918201929091019080838360005b8381101561110e5781810151838201526020016110f6565b50505050905090810190601f16801561113b5780820380516001836020036101000a031916815260200191505b5060405250505061265e90919063ffffffff16565b15801561115f5750603c548110155b801561116c5750603d5442105b156113ad57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d60208110156111e957600080fd5b5051604080518082018252601681527546554e4445445f4245464f52455f444541444c494e4560501b6020828101918252835180850185526004808252635452554560e01b928201929092528451634e4e399360e11b81529182019485528351604483015283516001600160a01b0390961695639c9c732695919391928392602482019260649092019180838360005b83811015611291578181015183820152602001611279565b50505050905090810190601f1680156112be5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156112f15781810151838201526020016112d9565b50505050905090810190601f16801561131e5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561133f57600080fd5b505af1158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b505161137457600080fd5b6033546040516001600160a01b03909116907f0640f71d45326639d6b83950c3933726d23f87a54e4a1853104d6f88e99c8aea90600090a25b50565b6039546001600160a01b031681565b603c5481565b60366020526000908152604090205481565b603d5481565b603b5481565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b0316331461145c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156114aa57600080fd5b505afa1580156114be573d6000803e3d6000fd5b505050506040513d60208110156114d457600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b158015610e1457600080fd5b60345460009083906001600160a01b0316331461158d576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b611595612b20565b50600084815260376020908152604091829020825180840190935280546001600160a01b031680845260019091015491830191909152611613576040805162461bcd60e51b81526020600482015260146024820152731b9bdd0818481d985b1a59081c1c9bdc1bdcd85b60621b604482015290519081900360640190fd5b600181516001600160a01b031660009081526038602052604090205460ff16600481111561163d57fe5b1461168f576040805162461bcd60e51b815260206004820152601960248201527f6d656d626572206973206e6f7420612063616e64696461746500000000000000604482015290519081900360640190fd5b60008460011480156117905750603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b50518251604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b5051155b156118c05781516001600160a01b03166000908152603860209081526040909120805460ff19166002179055820151603e546117cb91612755565b603e556039546001600160a01b03166118905760335460208301516040516001600160a01b0390921691600081818185875af1925050503d806000811461182e576040519150601f19603f3d011682016040523d82523d6000602084013e611833565b606091505b5050809150508061188b576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b6118b3565b60335460208301516039546118b3926001600160a01b03918216929116906127b6565b6118bb610e48565b6119a3565b81516001600160a01b039081166000908152603860205260409020805460ff191660031790556039541661198457815160208301516040516001600160a01b0390921691600081818185875af1925050503d806000811461193d576040519150601f19603f3d011682016040523d82523d6000602084013e611942565b606091505b505080915050806118bb5760405162461bcd60e51b8152600401808060200182810382526022815260200180612c0e6022913960400191505060405180910390fd5b815160208301516039546119a3926001600160a01b03909116916127b6565b60335460408051878152905188926001600160a01b0316917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc0919081900360200190a350600195945050505050565b60345460009082906001600160a01b03163314611a4b576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b158015611b0d57600080fd5b505afa158015611b21573d6000803e3d6000fd5b505050506040513d6020811015611b3757600080fd5b5051611b85576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015611bd357600080fd5b505afa158015611be7573d6000803e3d6000fd5b505050506040513d6020811015611bfd57600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b158015611c5657600080fd5b505afa158015611c6a573d6000803e3d6000fd5b505050506040513d6020811015611c8057600080fd5b50519392505050565b60345460009082906001600160a01b03163314611ce2576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3057600080fd5b505afa158015611d44573d6000803e3d6000fd5b505050506040513d6020811015611d5a57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b158015611db757600080fd5b505af1158015611dcb573d6000803e3d6000fd5b505050506040513d6020811015611de157600080fd5b50519695505050505050565b6000611df7612b20565b50600082815260376020908152604091829020825180840190935280546001600160a01b031680845260019091015491830191909152611e74576040805162461bcd60e51b81526020600482015260136024820152726e6f206d656d62657220746f2072656465656d60681b604482015290519081900360640190fd5b600281516001600160a01b031660009081526038602052604090205460ff166004811115611e9e57fe5b14611ee6576040805162461bcd60e51b81526020600482015260136024820152721b595b58995c881b9bdd081858d8d95c1d1959606a1b604482015290519081900360640190fd5b600083815260376020908152604080832080546001600160a01b031916905583516001600160a01b0316835260389091529020805460ff19166004179055603b54611f375780602001519150611f3d565b603b5491505b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8b57600080fd5b505afa158015611f9f573d6000803e3d6000fd5b505050506040513d6020811015611fb557600080fd5b505181516040805163dea9e24d60e01b8152600481018690526001600160a01b0392831660248201529051919092169163dea9e24d9160448083019260209291908290030181600087803b15801561200c57600080fd5b505af1158015612020573d6000803e3d6000fd5b505050506040513d602081101561203657600080fd5b5051612089576040805162461bcd60e51b815260206004820152601960248201527f6661696c656420746f206d696e742072657075746174696f6e00000000000000604482015290519081900360640190fd5b80516033546040805185815290516001600160a01b0393841693879316917fa23744d636594bf9b6875314ae23191b2096248670a007d1e6209b35e21dd55d919081900360200190a450919050565b60345460009082906001600160a01b03163314612131576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561217f57600080fd5b505afa158015612193573d6000803e3d6000fd5b505050506040513d60208110156121a957600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b1580156121fe57600080fd5b505af1158015612212573d6000803e3d6000fd5b505050506040513d602081101561222857600080fd5b505195945050505050565b6040518060400160405280601681526020017546554e4445445f4245464f52455f444541444c494e4560501b81525081565b603e5481565b60345460009082906001600160a01b031633146122c4576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231257600080fd5b505afa158015612326573d6000803e3d6000fd5b505050506040513d602081101561233c57600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b1580156121fe57600080fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526123eb90859061280d565b50505050565b6001600160a01b03841661244c576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b612455856129c5565b603480546001600160a01b0319166001600160a01b03861617905582612651576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156124bf5781810151838201526020016124a7565b50505050905001826001600160a01b031681526020019250505060206040518083038186803b1580156124f157600080fd5b505afa158015612505573d6000803e3d6000fd5b505050506040513d602081101561251b57600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d6101a081101561259857600080fd5b505190508061264a57604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b838110156125e95781810151838201526020016125d1565b50505050905001826001600160a01b0316815260200192505050602060405180830381600087803b15801561261d57600080fd5b505af1158015612631573d6000803e3d6000fd5b505050506040513d602081101561264757600080fd5b50505b5050612657565b60358390555b5050505050565b6000815183511461267157506000610c96565b816040516020018082805190602001908083835b602083106126a45780518252601f199092019160209182019101612685565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106127125780518252601f1990920191602091820191016126f3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120149050610c96565b6000828201838110156127af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261280890849061280d565b505050565b61281f826001600160a01b0316612ade565b612870576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106128ae5780518252601f19909201916020918201910161288f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612910576040519150601f19603f3d011682016040523d82523d6000602084013e612915565b606091505b50915091508161296c576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156123eb5780806020019051602081101561298857600080fd5b50516123eb5760405162461bcd60e51b815260040180806020018281038252602a815260200180612bb7602a913960400191505060405180910390fd5b600054610100900460ff16806129de57506129de612b1a565b806129ec575060005460ff16155b612a275760405162461bcd60e51b815260040180806020018281038252602e815260200180612b89602e913960400191505060405180910390fd5b600054610100900460ff16158015612a52576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216612aad576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b0384161790558015612ada576000805461ff00191690555b5050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612b1257508115155b949350505050565b303b1590565b60408051808201909152600080825260208201529056fe70726f706f73657220697320616363657074656420616e64206e6f742072656465656d6564207965744554482072656365697665642073686f756c64206d6174636820746865205f666565416d6f756e74436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645f666565416d6f756e742073686f756c64206265203e3d207468616e20746865206d696e466565546f4a6f696e73656e644574686572206261636b20746f2063616e646964617465206661696c6564a26469706673582212201632109cce88e304d546627b6a6ee5819335ceb92daf2da4792b26a99b03201064736f6c634300060c0033",
"deployedBytecode": "0x6080604052600436106101665760003560e01c80637a5cb92c116100d1578063b551c3731161008a578063d29b5d2f11610064578063d29b5d2f14610620578063e4392dbb1461065f578063ee2ac05f14610674578063f81f8bf61461068957610166565b8063b551c37314610583578063bea75f28146105ad578063c7916cf9146105f657610166565b80637a5cb92c146104285780637ae5644a1461045257806393df91a1146104675780639537ba0c1461047c5780639588378e146105065780639d4c162d1461053f57610166565b80635368e556116101235780635368e556146103215780635aef7de61461039b5780636b8eb403146103b05780637350dbd1146103e957806378065f27146103fe5780637a3a0e841461041357610166565b8063187a9e4b1461016b57806332ed5b12146102255780633edf7ca11461027257806345c3dffa146102a35780634ea2c7ec146102b8578063505ae62b146102cd575b600080fd5b6102136004803603604081101561018157600080fd5b81019060208101813564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460018302840111640100000000831117156101d057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506106c8915050565b60408051918252519081900360200190f35b34801561023157600080fd5b5061024f6004803603602081101561024857600080fd5b5035610c9c565b604080516001600160a01b03909316835260208301919091528051918290030190f35b34801561027e57600080fd5b50610287610cc1565b604080516001600160a01b039092168252519081900360200190f35b3480156102af57600080fd5b50610213610cd0565b3480156102c457600080fd5b50610213610cd6565b3480156102d957600080fd5b50610300600480360360208110156102f057600080fd5b50356001600160a01b0316610cdc565b6040518082600481111561031057fe5b815260200191505060405180910390f35b34801561032d57600080fd5b50610399600480360361028081101561034557600080fd5b506001600160a01b038135811691602081013582169160408201916101a08101358216916101c0820135916101e0810135909116906102008101359061022081013590610240810135906102600135610cf1565b005b3480156103a757600080fd5b50610287610d5f565b3480156103bc57600080fd5b50610213600480360360408110156103d357600080fd5b506001600160a01b038135169060200135610d6e565b3480156103f557600080fd5b50610399610e48565b34801561040a57600080fd5b506102876113b0565b34801561041f57600080fd5b506102136113bf565b34801561043457600080fd5b506102136004803603602081101561044b57600080fd5b50356113c5565b34801561045e57600080fd5b506102136113d7565b34801561047357600080fd5b506102136113dd565b34801561048857600080fd5b506104916113e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104cb5781810151838201526020016104b3565b50505050905090810190601f1680156104f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051257600080fd5b506102136004803603604081101561052957600080fd5b506001600160a01b038135169060200135611403565b34801561054b57600080fd5b5061056f6004803603604081101561056257600080fd5b5080359060200135611534565b604080519115158252519081900360200190f35b34801561058f57600080fd5b50610213600480360360208110156105a657600080fd5b50356119f2565b3480156105b957600080fd5b5061056f600480360360808110156105d057600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611c89565b34801561060257600080fd5b506102136004803603602081101561061957600080fd5b5035611ded565b34801561062c57600080fd5b5061056f6004803603606081101561064357600080fd5b508035906001600160a01b0360208201351690604001356120d8565b34801561066b57600080fd5b50610491612233565b34801561068057600080fd5b50610213612265565b34801561069557600080fd5b5061056f600480360360608110156106ac57600080fd5b508035906001600160a01b03602082013516906040013561226b565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b15801561070d57600080fd5b505afa158015610721573d6000803e3d6000fd5b505050506040513d602081101561073757600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561078157600080fd5b505afa158015610795573d6000803e3d6000fd5b505050506040513d60208110156107ab57600080fd5b50516107f9576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b3360008181526038602052604090205460019060ff16600481111561081a57fe5b141561086d576040805162461bcd60e51b815260206004820152601f60248201527f70726f706f73657220697320616c726561647920612063616e64696461746500604482015290519081900360640190fd5b60026001600160a01b03821660009081526038602052604090205460ff16600481111561089657fe5b14156108d35760405162461bcd60e51b8152600401808060200182810382526029815260200180612b386029913960400191505060405180910390fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561092157600080fd5b505afa158015610935573d6000803e3d6000fd5b505050506040513d602081101561094b57600080fd5b5051604080516370a0823160e01b81526001600160a01b038481166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561099757600080fd5b505afa1580156109ab573d6000803e3d6000fd5b505050506040513d60208110156109c157600080fd5b505115610a15576040805162461bcd60e51b815260206004820152601c60248201527f70726f706f73657220697320616c72656164792061206d656d62657200000000604482015290519081900360640190fd5b603a54831015610a565760405162461bcd60e51b815260040180806020018281038252602d815260200180612be1602d913960400191505060405180910390fd5b6001600160a01b038181166000908152603860205260409020805460ff1916600117905560395416610ac557348314610ac05760405162461bcd60e51b8152600401808060200182810382526028815260200180612b616028913960400191505060405180910390fd5b610add565b603954610add906001600160a01b0316823086612391565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093526001600160a01b03858116604485015291821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b158015610b4a57600080fd5b505af1158015610b5e573d6000803e3d6000fd5b505050506040513d6020811015610b7457600080fd5b50519050610b80612b20565b506040805180820182526001600160a01b038481168083526020808401898152600087815260378352868120865181546001600160a01b03191690871617815591516001909201919091556033548651808401949094529583018a905260608084528b51908401528a51949587959416937fda76b8228e4eb3d710f6cddb20dccd29250b738750d145adb879de9bc87ab236938c938a938d938392608084019290880191908190849084905b83811015610c44578181015183820152602001610c2c565b50505050905090810190601f168015610c715780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a35060008181526036602052604090204390559150505b92915050565b603760205260009081526040902080546001909101546001600160a01b039091169082565b6034546001600160a01b031681565b603a5481565b60355481565b60386020526000908152604090205460ff1681565b610d288a8a888b600b806020026040519081016040528092919082600b602002808284376000920191909152508d91506123f19050565b603980546001600160a01b0319166001600160a01b039690961695909517909455603a92909255603b55603c55603d555050505050565b6033546001600160a01b031681565b60345460009082906001600160a01b03163314610dc7576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b158015610e1457600080fd5b505afa158015610e28573d6000803e3d6000fd5b505050506040513d6020811015610e3e57600080fd5b5051949350505050565b6039546000906001600160a01b0316610ee657603360009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b50516001600160a01b0316319050610f65565b603954603354604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b158015610f3657600080fd5b505afa158015610f4a573d6000803e3d6000fd5b505050506040513d6020811015610f6057600080fd5b505190505b6040805180820182526004808252635452554560e01b60208084019190915260335484518086018652601681527546554e4445445f4245464f52455f444541444c494e4560501b81840190815295516358cb548b60e01b8152938401928352805160248501528051611150966001600160a01b03909316946358cb548b949293839260449092019180838360005b8381101561100b578181015183820152602001610ff3565b50505050905090810190601f1680156110385780820380516001836020036101000a031916815260200191505b509250505060006040518083038186803b15801561105557600080fd5b505afa158015611069573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561109257600080fd5b81019080805160405193929190846401000000008211156110b257600080fd5b9083019060208201858111156110c757600080fd5b82516401000000008111828201881017156110e157600080fd5b82525081516020918201929091019080838360005b8381101561110e5781810151838201526020016110f6565b50505050905090810190601f16801561113b5780820380516001836020036101000a031916815260200191505b5060405250505061265e90919063ffffffff16565b15801561115f5750603c548110155b801561116c5750603d5442105b156113ad57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bf57600080fd5b505afa1580156111d3573d6000803e3d6000fd5b505050506040513d60208110156111e957600080fd5b5051604080518082018252601681527546554e4445445f4245464f52455f444541444c494e4560501b6020828101918252835180850185526004808252635452554560e01b928201929092528451634e4e399360e11b81529182019485528351604483015283516001600160a01b0390961695639c9c732695919391928392602482019260649092019180838360005b83811015611291578181015183820152602001611279565b50505050905090810190601f1680156112be5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156112f15781810151838201526020016112d9565b50505050905090810190601f16801561131e5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561133f57600080fd5b505af1158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b505161137457600080fd5b6033546040516001600160a01b03909116907f0640f71d45326639d6b83950c3933726d23f87a54e4a1853104d6f88e99c8aea90600090a25b50565b6039546001600160a01b031681565b603c5481565b60366020526000908152604090205481565b603d5481565b603b5481565b604051806040016040528060048152602001635452554560e01b81525081565b60345460009082906001600160a01b0316331461145c576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156114aa57600080fd5b505afa1580156114be573d6000803e3d6000fd5b505050506040513d60208110156114d457600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b158015610e1457600080fd5b60345460009083906001600160a01b0316331461158d576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b611595612b20565b50600084815260376020908152604091829020825180840190935280546001600160a01b031680845260019091015491830191909152611613576040805162461bcd60e51b81526020600482015260146024820152731b9bdd0818481d985b1a59081c1c9bdc1bdcd85b60621b604482015290519081900360640190fd5b600181516001600160a01b031660009081526038602052604090205460ff16600481111561163d57fe5b1461168f576040805162461bcd60e51b815260206004820152601960248201527f6d656d626572206973206e6f7420612063616e64696461746500000000000000604482015290519081900360640190fd5b60008460011480156117905750603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d602081101561171457600080fd5b50518251604080516370a0823160e01b81526001600160a01b039283166004820152905191909216916370a08231916024808301926020929190829003018186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d602081101561178c57600080fd5b5051155b156118c05781516001600160a01b03166000908152603860209081526040909120805460ff19166002179055820151603e546117cb91612755565b603e556039546001600160a01b03166118905760335460208301516040516001600160a01b0390921691600081818185875af1925050503d806000811461182e576040519150601f19603f3d011682016040523d82523d6000602084013e611833565b606091505b5050809150508061188b576040805162461bcd60e51b815260206004820152601a60248201527f73656e64457468657220746f20617661746172206661696c6564000000000000604482015290519081900360640190fd5b6118b3565b60335460208301516039546118b3926001600160a01b03918216929116906127b6565b6118bb610e48565b6119a3565b81516001600160a01b039081166000908152603860205260409020805460ff191660031790556039541661198457815160208301516040516001600160a01b0390921691600081818185875af1925050503d806000811461193d576040519150601f19603f3d011682016040523d82523d6000602084013e611942565b606091505b505080915050806118bb5760405162461bcd60e51b8152600401808060200182810382526022815260200180612c0e6022913960400191505060405180910390fd5b815160208301516039546119a3926001600160a01b03909116916127b6565b60335460408051878152905188926001600160a01b0316917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc0919081900360200190a350600195945050505050565b60345460009082906001600160a01b03163314611a4b576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9957600080fd5b505afa158015611aad573d6000803e3d6000fd5b505050506040513d6020811015611ac357600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b158015611b0d57600080fd5b505afa158015611b21573d6000803e3d6000fd5b505050506040513d6020811015611b3757600080fd5b5051611b85576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b15801561