@gooddollar/goodprotocol
Version:
GoodDollar Protocol
707 lines • 60.2 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "InvitesV2",
"sourceName": "contracts/invite/InvitesV2.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
}
],
"name": "InviteeJoined",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bountyPaid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "inviterLevel",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "earnedLevel",
"type": "bool"
}
],
"name": "InviterBounty",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "active",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "bountyFor",
"outputs": [
{
"internalType": "uint256",
"name": "bounty",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "canCollectBountyFor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "codeToUser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectBounties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "dao",
"outputs": [
{
"internalType": "contract Controller",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "end",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getIdentity",
"outputs": [
{
"internalType": "contract IIdentityV2",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingBounties",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "goodDollar",
"outputs": [
{
"internalType": "contract cERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract INameService",
"name": "_ns",
"type": "address"
},
{
"internalType": "uint256",
"name": "_level0Bounty",
"type": "uint256"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_myCode",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_inviterCode",
"type": "bytes32"
}
],
"name": "join",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "levelExpirationEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "levels",
"outputs": [
{
"internalType": "uint256",
"name": "toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "daysToComplete",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minimumClaims",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minimumDays",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nameService",
"outputs": [
{
"internalType": "contract INameService",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nativeToken",
"outputs": [
{
"internalType": "contract IGoodDollar",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_active",
"type": "bool"
}
],
"name": "setActive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_code",
"type": "bytes32"
}
],
"name": "setCampaignCode",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_lvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_daysToComplete",
"type": "uint256"
}
],
"name": "setLevel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isEnabled",
"type": "bool"
}
],
"name": "setLevelExpirationEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "_minClaims",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "_minDays",
"type": "uint8"
}
],
"name": "setMinimums",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stats",
"outputs": [
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalBountiesPaid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalInvited",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "updateAvatar",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "users",
"outputs": [
{
"internalType": "address",
"name": "invitedBy",
"type": "address"
},
{
"internalType": "bytes32",
"name": "inviteCode",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "bountyPaid",
"type": "bool"
},
{
"internalType": "uint256",
"name": "level",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "levelStarted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalEarned",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "joinedAt",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bountyAtJoin",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612c3861004c600039600081816108e20152818161092201528181610b6601528181610ba60152610c220152612c386000f3fe6080604052600436106101945760003560e01c806302fb0c5e14610199578063119e5bf3146101cf57806313af4035146101fc5780631b3c90a81461021e57806321132aad146102335780633659cfe61461025357806336afc6fa146102735780633e6326fc1461028857806341155d5e146102a85780634162169f146102d657806347826c82146102f65780634f1ef2861461031657806352d1902d1461032957806354fd4d501461033e5780635aef7de6146103705780635b419a65146103905780636d619ef8146103b05780638da5cb5b146103d0578063a1df6fd3146103f0578063a87430ba1461040a578063acec338a146104d2578063af6346b0146104f2578063b2596a6714610507578063b6567cd51461055e578063b9fb2d181461057e578063ba6f56801461059e578063c121cb92146105d4578063c350a1b514610600578063d80528ae14610620578063df0dca041461063f578063e1758bd81461065e578063e951a3aa14610673578063e9881a5e146106a0578063efbe1c1c146106c0578063f14b8649146106d5575b600080fd5b3480156101a557600080fd5b50609e546101ba90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101db57600080fd5b50609e546101ef906001600160a01b031681565b6040516101c69190612604565b34801561020857600080fd5b5061021c61021736600461262d565b6106f5565b005b34801561022a57600080fd5b5061021c61075f565b34801561023f57600080fd5b5061021c61024e366004612658565b610886565b34801561025f57600080fd5b5061021c61026e36600461262d565b6108d8565b34801561027f57600080fd5b506101ef6109a0565b34801561029457600080fd5b506067546101ef906001600160a01b031681565b3480156102b457600080fd5b506102c86102c336600461262d565b610a2c565b6040519081526020016101c6565b3480156102e257600080fd5b506065546101ef906001600160a01b031681565b34801561030257600080fd5b5061021c610311366004612686565b610af9565b61021c6103243660046126cf565b610b5c565b34801561033557600080fd5b506102c8610c15565b34801561034a57600080fd5b5060408051808201825260038152620c8b8d60ea1b602082015290516101c691906127b6565b34801561037c57600080fd5b506066546101ef906001600160a01b031681565b34801561039c57600080fd5b5061021c6103ab3660046127e9565b610cc3565b3480156103bc57600080fd5b506101ba6103cb36600461262d565b610ff4565b3480156103dc57600080fd5b50609d546101ef906001600160a01b031681565b3480156103fc57600080fd5b5060a7546101ba9060ff1681565b34801561041657600080fd5b5061047e61042536600461262d565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e0830191909152610100820152610120016101c6565b3480156104de57600080fd5b5061021c6104ed366004612658565b6112e9565b3480156104fe57600080fd5b5061021c611346565b34801561051357600080fd5b5061054361052236600461280b565b609c6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101c6565b34801561056a57600080fd5b506102c861057936600461262d565b611549565b34801561058a57600080fd5b5061021c610599366004612824565b6115dd565b3480156105aa57600080fd5b506101ef6105b936600461280b565b609a602052600090815260409020546001600160a01b031681565b3480156105e057600080fd5b5060a9546105ee9060ff1681565b60405160ff90911681526020016101c6565b34801561060c57600080fd5b5061021c61061b366004612856565b61163c565b34801561062c57600080fd5b50609f5460a05460a15461054392919083565b34801561064b57600080fd5b5060a9546105ee90610100900460ff1681565b34801561066a57600080fd5b506101ef61175a565b34801561067f57600080fd5b5061069361068e36600461262d565b611789565b6040516101c69190612898565b3480156106ac57600080fd5b506106936106bb36600461262d565b611974565b3480156106cc57600080fd5b5061021c6119ed565b3480156106e157600080fd5b5061021c6106f036600461280b565b611b7b565b609d546001600160a01b031633148061071857506066546001600160a01b031633145b61073d5760405162461bcd60e51b8152600401610734906128e5565b60405180910390fd5b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e69190612931565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108649190612931565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b03163314806108a957506066546001600160a01b031633145b6108c55760405162461bcd60e51b8152600401610734906128e5565b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109205760405162461bcd60e51b81526004016107349061294e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610952611bdf565b6001600160a01b0316146109785760405162461bcd60e51b815260040161073490612988565b61098181611bfb565b6040805160008082526020820190925261099d91839190611c3a565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a279190612931565b905090565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083528493830182828015610a9657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a78575b505050505090506000805b8251811015610af157610acc838281518110610abf57610abf6129c2565b6020026020010151610ff4565b15610adf5781610adb816129ee565b9250505b80610ae9816129ee565b915050610aa1565b509392505050565b609d546001600160a01b0316331480610b1c57506066546001600160a01b031633145b610b385760405162461bcd60e51b8152600401610734906128e5565b60a9805460ff9283166101000261ffff199091169290931691909117919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ba45760405162461bcd60e51b81526004016107349061294e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bd6611bdf565b6001600160a01b031614610bfc5760405162461bcd60e51b815260040161073490612988565b610c0582611bfb565b610c1182826001611c3a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610734565b50600080516020612bbc83398151915290565b609e54600160a01b900460ff16610cec5760405162461bcd60e51b815260040161073490612a07565b6000828152609a60205260409020546001600160a01b03161580610d2657506000828152609a60205260409020546001600160a01b031633145b80610d3957506001600160a01b03821633145b610d825760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610734565b808203610da15760405162461bcd60e51b815260040161073490612a2b565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610e07575060018201541580610e07575081546001600160a01b0316158015610e0757506001600160a01b03811615155b610e495760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610734565b6001820154600003610e885760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610f9d57336001600160a01b03821603610ebf5760405162461bcd60e51b815260040161073490612a2b565b81546001600160a01b0319166001600160a01b03821617825560a1805460019190600090610eee908490612a50565b9091555050306001600160a01b03821603610f265760008052609c602052600080516020612b7c83398151915254600a830155610f9d565b6001600160a01b0381166000908152609b6020908152604080832060038101805460018082018355918652848620018054336001600160a01b03199182168117909255600484018054808501825590885286882001805490911690911790556005909101548452609c9092529091200154600a8301555b610fa633610ff4565b15610fb857610fb6336001611da5565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b602052604080822054606754915163bf40fac160e01b81529293908116926001929091169063bf40fac19061105b90600401602080825260099082015268554249534348454d4560b81b604082015260600190565b602060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c9190612931565b6001600160a01b031663cc054dfc856040518263ffffffff1660e01b81526004016110c79190612604565b602060405180830381865afa925050508015611100575060408051601f3d908101601f191682019092526110fd91810190612a63565b60015b61110c57506001611117565b60a95460ff16111590505b60a95461112f90610100900460ff1662015180612a7c565b6001600160a01b0385166000908152609b602052604090206009015461115a9162ffffff1690612a50565b42101580156111665750805b801561118c57506001600160a01b0384166000908152609b60205260409020600a015415155b80156111b457506001600160a01b0384166000908152609b602052604090206002015460ff16155b801561122f57506111c36109a0565b6001600160a01b0316633af32abf856040518263ffffffff1660e01b81526004016111ee9190612604565b602060405180830381865afa15801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f9190612aa3565b80156112ce57506001600160a01b038216158061125457506001600160a01b03821630145b806112ce57506112626109a0565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b815260040161128d9190612604565b602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce9190612aa3565b80156112e15750466112df856121be565b145b949350505050565b609d546001600160a01b031633148061130c57506066546001600160a01b031633145b6113285760405162461bcd60e51b8152600401610734906128e5565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff1661136f5760405162461bcd60e51b815260040161073490612a07565b336000908152609b6020526040812060040180549091905b80156114c8576202d2a85a106114c8576000836113a5600184612ac0565b815481106113b5576113b56129c2565b6000918252602090912001546001600160a01b031690506113d581610ff4565b156114b557620493e05a10156113eb57506114c8565b6113f6816000611da5565b6114009084612a50565b8454909350849061141390600190612ac0565b81548110611423576114236129c2565b6000918252602090912001546001600160a01b031684611444600185612ac0565b81548110611454576114546129c2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508380548061149257611492612ad3565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806114c081612ae9565b915050611387565b508015610c1157609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115019033908590600401612b00565b6020604051808303816000875af1158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190612aa3565b505050565b609e54600090600160a01b900460ff166115755760405162461bcd60e51b815260040161073490612a07565b61157e82610ff4565b6115ca5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610734565b6115d5826001611da5565b90505b919050565b609d546001600160a01b031633148061160057506066546001600160a01b031633145b61161c5760405162461bcd60e51b8152600401610734906128e5565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff161580801561165c5750600054600160ff909116105b8061167d575061166b30612284565b15801561167d575060005460ff166001145b6116e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610734565b6000805460ff191660011790558015611703576000805461ff0019166101001790555b61170e848484612293565b8015611754576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906109e690600401612b19565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352606094938301828280156117f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117d7575b5050505050905060008060005b835181101561186f57609b6000858381518110611821576118216129c2565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661185d5781611859816129ee565b9250505b80611867816129ee565b915050611802565b506000816001600160401b0381111561188a5761188a6126b9565b6040519080825280602002602001820160405280156118b3578160200160208202803683370190505b50905060005b845181101561196a57609b60008683815181106118d8576118d86129c2565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661195857848181518110611918576119186129c2565b6020026020010151828581518110611932576119326129c2565b6001600160a01b039092166020928302919091019091015283611954816129ee565b9450505b80611962816129ee565b9150506118b9565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156119e157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119c3575b50505050509050919050565b609d546001600160a01b0316331480611a1057506066546001600160a01b031633145b611a2c5760405162461bcd60e51b8152600401610734906128e5565b609e54600160a01b900460ff16611a555760405162461bcd60e51b815260040161073490612a07565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a86903090600401612604565b602060405180830381865afa158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac79190612a63565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90611afa9033908590600401612b00565b6020604051808303816000875af1158015611b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3d9190612aa3565b5060405133904780156108fc02916000818181858888f19350505050158015611b6a573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b0316331480611b9e57506066546001600160a01b031633145b611bba5760405162461bcd60e51b8152600401610734906128e5565b60a88190556000908152609a6020526040902080546001600160a01b03191630179055565b600080516020612bbc833981519152546001600160a01b031690565b609d546001600160a01b0316331480611c1e57506066546001600160a01b031633145b61099d5760405162461bcd60e51b8152600401610734906128e5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c6d57611544836123a6565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cc7575060408051601f3d908101601f19168201909252611cc491810190612a63565b60015b611d2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610734565b600080516020612bbc8339815191528114611d995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610734565b50611544838383612440565b6001600160a01b038083166000908152609b602052604081208054600a909101549192169082308314801590611de357506001600160a01b03831615155b15612079576001600160a01b038681166000908152609b602090815260408083206009015493871683528083206005908101548452609c8352818420825160808101845281548152600182015494810194909452600281015484840152825160a081019384905290926060850192600385019182845b815481526020019060010190808311611e5957505050505081525050905083816020015111611e885783611e8e565b80602001515b93506000808260400151118015611ebf57506001600160a01b0386166000908152609b602052604090206006015483115b8015611f0257506001600160a01b0386166000908152609b60205260409020600601546201518090611ef19085612ac0565b611efb9190612b3d565b8260400151105b6001600160a01b0387166000908152609b602052604081206007018054929350600192909190611f33908490612a50565b90915550506001600160a01b0386166000908152609b602052604081206008018054879290611f63908490612a50565b9091555050815115801590611f94575081516001600160a01b0387166000908152609b602052604090206007015410155b8015611f9e575080155b15611ff8576001600160a01b0386166000908152609b60205260408120600501805460019290611fcf908490612a50565b90915550506001600160a01b0386166000908152609b6020526040902042600690910155600193505b871561207557609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906120309089908990600401612b00565b6020604051808303816000875af115801561204f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120739190612aa3565b505b5050505b6001600160a01b0386166000908152609b60205260408120600201805460ff19166001908117909155609f8054919290916120b5908490612a50565b909155505060a080548391906000906120cf908490612a50565b9091555050609e546001600160a01b031663a9059cbb876120f1600286612b3d565b6040518363ffffffff1660e01b815260040161210e929190612b00565b6020604051808303816000875af115801561212d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121519190612aa3565b506001600160a01b038381166000818152609b602090815260409182902060050154825187815291820152841515818301529051928916927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b9181900360600190a3509150505b92915050565b60008060006121cb6109a0565b6001600160a01b0316846040516024016121e59190612604565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b1790525161221a9190612b5f565b600060405180830381855afa9150503d8060008114612255576040519150601f19603f3d011682016040523d82523d6000602084013e61225a565b606091505b50909250905081151560000361227057466112e1565b808060200190518101906112e19190612a63565b6001600160a01b03163b151590565b61229c83612465565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c602052600080516020612b7c83398151915283905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac19061233590600401612b19565b602060405180830381865afa158015612352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123769190612931565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b6123af81612284565b6124115760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610734565b600080516020612bbc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61244983612488565b6000825111806124565750805b156115445761175483836124c8565b606780546001600160a01b0319166001600160a01b03831617905561099d61075f565b612491816123a6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606124d383612284565b61252e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610734565b600080846001600160a01b0316846040516125499190612b5f565b600060405180830381855af49150503d8060008114612584576040519150601f19603f3d011682016040523d82523d6000602084013e612589565b606091505b50915091506125b18282604051806060016040528060278152602001612bdc602791396125ba565b95945050505050565b606083156125c95750816125d3565b6125d383836125da565b9392505050565b8151156125ea5781518083602001fd5b8060405162461bcd60e51b815260040161073491906127b6565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461099d57600080fd5b60006020828403121561263f57600080fd5b81356125d381612618565b801515811461099d57600080fd5b60006020828403121561266a57600080fd5b81356125d38161264a565b803560ff811681146115d857600080fd5b6000806040838503121561269957600080fd5b6126a283612675565b91506126b060208401612675565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156126e257600080fd5b82356126ed81612618565b915060208301356001600160401b038082111561270957600080fd5b818501915085601f83011261271d57600080fd5b81358181111561272f5761272f6126b9565b604051601f8201601f19908116603f01168101908382118183101715612757576127576126b9565b8160405282815288602084870101111561277057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156127ad578181015183820152602001612795565b50506000910152565b60208152600082518060208401526127d5816040850160208701612792565b601f01601f19169190910160400192915050565b600080604083850312156127fc57600080fd5b50508035926020909101359150565b60006020828403121561281d57600080fd5b5035919050565b6000806000806080858703121561283a57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561286b57600080fd5b833561287681612618565b925060208401359150604084013561288d81612618565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156128d95783516001600160a01b0316835292840192918401916001016128b4565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b60006020828403121561294357600080fd5b81516125d381612618565b6020808252602c90820152600080516020612b9c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b9c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612a0057612a006129d8565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156121b8576121b86129d8565b600060208284031215612a7557600080fd5b5051919050565b62ffffff818116838216028082169190828114612a9b57612a9b6129d8565b505092915050565b600060208284031215612ab557600080fd5b81516125d38161264a565b818103818111156121b8576121b86129d8565b634e487b7160e01b600052603160045260246000fd5b600081612af857612af86129d8565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b600082612b5a57634e487b7160e01b600052601260045260246000fd5b500490565b60008251612b71818460208701612792565b919091019291505056fe21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a9de0e1e547f985e5b923f59b2adee52690d66b2ad5b582065754fb527554b2164736f6c63430008130033",
"deployedBytecode": "0x6080604052600436106101945760003560e01c806302fb0c5e14610199578063119e5bf3146101cf57806313af4035146101fc5780631b3c90a81461021e57806321132aad146102335780633659cfe61461025357806336afc6fa146102735780633e6326fc1461028857806341155d5e146102a85780634162169f146102d657806347826c82146102f65780634f1ef2861461031657806352d1902d1461032957806354fd4d501461033e5780635aef7de6146103705780635b419a65146103905780636d619ef8146103b05780638da5cb5b146103d0578063a1df6fd3146103f0578063a87430ba1461040a578063acec338a146104d2578063af6346b0146104f2578063b2596a6714610507578063b6567cd51461055e578063b9fb2d181461057e578063ba6f56801461059e578063c121cb92146105d4578063c350a1b514610600578063d80528ae14610620578063df0dca041461063f578063e1758bd81461065e578063e951a3aa14610673578063e9881a5e146106a0578063efbe1c1c146106c0578063f14b8649146106d5575b600080fd5b3480156101a557600080fd5b50609e546101ba90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101db57600080fd5b50609e546101ef906001600160a01b031681565b6040516101c69190612604565b34801561020857600080fd5b5061021c61021736600461262d565b6106f5565b005b34801561022a57600080fd5b5061021c61075f565b34801561023f57600080fd5b5061021c61024e366004612658565b610886565b34801561025f57600080fd5b5061021c61026e36600461262d565b6108d8565b34801561027f57600080fd5b506101ef6109a0565b34801561029457600080fd5b506067546101ef906001600160a01b031681565b3480156102b457600080fd5b506102c86102c336600461262d565b610a2c565b6040519081526020016101c6565b3480156102e257600080fd5b506065546101ef906001600160a01b031681565b34801561030257600080fd5b5061021c610311366004612686565b610af9565b61021c6103243660046126cf565b610b5c565b34801561033557600080fd5b506102c8610c15565b34801561034a57600080fd5b5060408051808201825260038152620c8b8d60ea1b602082015290516101c691906127b6565b34801561037c57600080fd5b506066546101ef906001600160a01b031681565b34801561039c57600080fd5b5061021c6103ab3660046127e9565b610cc3565b3480156103bc57600080fd5b506101ba6103cb36600461262d565b610ff4565b3480156103dc57600080fd5b50609d546101ef906001600160a01b031681565b3480156103fc57600080fd5b5060a7546101ba9060ff1681565b34801561041657600080fd5b5061047e61042536600461262d565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e0830191909152610100820152610120016101c6565b3480156104de57600080fd5b5061021c6104ed366004612658565b6112e9565b3480156104fe57600080fd5b5061021c611346565b34801561051357600080fd5b5061054361052236600461280b565b609c6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101c6565b34801561056a57600080fd5b506102c861057936600461262d565b611549565b34801561058a57600080fd5b5061021c610599366004612824565b6115dd565b3480156105aa57600080fd5b506101ef6105b936600461280b565b609a602052600090815260409020546001600160a01b031681565b3480156105e057600080fd5b5060a9546105ee9060ff1681565b60405160ff90911681526020016101c6565b34801561060c57600080fd5b5061021c61061b366004612856565b61163c565b34801561062c57600080fd5b50609f5460a05460a15461054392919083565b34801561064b57600080fd5b5060a9546105ee90610100900460ff1681565b34801561066a57600080fd5b506101ef61175a565b34801561067f57600080fd5b5061069361068e36600461262d565b611789565b6040516101c69190612898565b3480156106ac57600080fd5b506106936106bb36600461262d565b611974565b3480156106cc57600080fd5b5061021c6119ed565b3480156106e157600080fd5b5061021c6106f036600461280b565b611b7b565b609d546001600160a01b031633148061071857506066546001600160a01b031633145b61073d5760405162461bcd60e51b8152600401610734906128e5565b60405180910390fd5b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156107c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e69190612931565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108649190612931565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b03163314806108a957506066546001600160a01b031633145b6108c55760405162461bcd60e51b8152600401610734906128e5565b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109205760405162461bcd60e51b81526004016107349061294e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610952611bdf565b6001600160a01b0316146109785760405162461bcd60e51b815260040161073490612988565b61098181611bfb565b6040805160008082526020820190925261099d91839190611c3a565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa158015610a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a279190612931565b905090565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083528493830182828015610a9657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a78575b505050505090506000805b8251811015610af157610acc838281518110610abf57610abf6129c2565b6020026020010151610ff4565b15610adf5781610adb816129ee565b9250505b80610ae9816129ee565b915050610aa1565b509392505050565b609d546001600160a01b0316331480610b1c57506066546001600160a01b031633145b610b385760405162461bcd60e51b8152600401610734906128e5565b60a9805460ff9283166101000261ffff199091169290931691909117919091179055565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ba45760405162461bcd60e51b81526004016107349061294e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bd6611bdf565b6001600160a01b031614610bfc5760405162461bcd60e51b815260040161073490612988565b610c0582611bfb565b610c1182826001611c3a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610734565b50600080516020612bbc83398151915290565b609e54600160a01b900460ff16610cec5760405162461bcd60e51b815260040161073490612a07565b6000828152609a60205260409020546001600160a01b03161580610d2657506000828152609a60205260409020546001600160a01b031633145b80610d3957506001600160a01b03821633145b610d825760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610734565b808203610da15760405162461bcd60e51b815260040161073490612a2b565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610e07575060018201541580610e07575081546001600160a01b0316158015610e0757506001600160a01b03811615155b610e495760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610734565b6001820154600003610e885760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610f9d57336001600160a01b03821603610ebf5760405162461bcd60e51b815260040161073490612a2b565b81546001600160a01b0319166001600160a01b03821617825560a1805460019190600090610eee908490612a50565b9091555050306001600160a01b03821603610f265760008052609c602052600080516020612b7c83398151915254600a830155610f9d565b6001600160a01b0381166000908152609b6020908152604080832060038101805460018082018355918652848620018054336001600160a01b03199182168117909255600484018054808501825590885286882001805490911690911790556005909101548452609c9092529091200154600a8301555b610fa633610ff4565b15610fb857610fb6336001611da5565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b602052604080822054606754915163bf40fac160e01b81529293908116926001929091169063bf40fac19061105b90600401602080825260099082015268554249534348454d4560b81b604082015260600190565b602060405180830381865afa158015611078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109c9190612931565b6001600160a01b031663cc054dfc856040518263ffffffff1660e01b81526004016110c79190612604565b602060405180830381865afa925050508015611100575060408051601f3d908101601f191682019092526110fd91810190612a63565b60015b61110c57506001611117565b60a95460ff16111590505b60a95461112f90610100900460ff1662015180612a7c565b6001600160a01b0385166000908152609b602052604090206009015461115a9162ffffff1690612a50565b42101580156111665750805b801561118c57506001600160a01b0384166000908152609b60205260409020600a015415155b80156111b457506001600160a01b0384166000908152609b602052604090206002015460ff16155b801561122f57506111c36109a0565b6001600160a01b0316633af32abf856040518263ffffffff1660e01b81526004016111ee9190612604565b602060405180830381865afa15801561120b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122f9190612aa3565b80156112ce57506001600160a01b038216158061125457506001600160a01b03821630145b806112ce57506112626109a0565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b815260040161128d9190612604565b602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce9190612aa3565b80156112e15750466112df856121be565b145b949350505050565b609d546001600160a01b031633148061130c57506066546001600160a01b031633145b6113285760405162461bcd60e51b8152600401610734906128e5565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff1661136f5760405162461bcd60e51b815260040161073490612a07565b336000908152609b6020526040812060040180549091905b80156114c8576202d2a85a106114c8576000836113a5600184612ac0565b815481106113b5576113b56129c2565b6000918252602090912001546001600160a01b031690506113d581610ff4565b156114b557620493e05a10156113eb57506114c8565b6113f6816000611da5565b6114009084612a50565b8454909350849061141390600190612ac0565b81548110611423576114236129c2565b6000918252602090912001546001600160a01b031684611444600185612ac0565b81548110611454576114546129c2565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508380548061149257611492612ad3565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806114c081612ae9565b915050611387565b508015610c1157609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115019033908590600401612b00565b6020604051808303816000875af1158015611520573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115449190612aa3565b505050565b609e54600090600160a01b900460ff166115755760405162461bcd60e51b815260040161073490612a07565b61157e82610ff4565b6115ca5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610734565b6115d5826001611da5565b90505b919050565b609d546001600160a01b031633148061160057506066546001600160a01b031633145b61161c5760405162461bcd60e51b8152600401610734906128e5565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff161580801561165c5750600054600160ff909116105b8061167d575061166b30612284565b15801561167d575060005460ff166001145b6116e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610734565b6000805460ff191660011790558015611703576000805461ff0019166101001790555b61170e848484612293565b8015611754576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906109e690600401612b19565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352606094938301828280156117f557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116117d7575b5050505050905060008060005b835181101561186f57609b6000858381518110611821576118216129c2565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661185d5781611859816129ee565b9250505b806