[ { "inputs": [ { "internalType": "address", "name": "_vemore", "type": "address" }, { "internalType": "address", "name": "roles", "type": "address" } ], "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": false, "internalType": "string", "name": "param", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ParameterUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "param", "type": "string" }, { "indexed": false, "internalType": "address", "name": "subject", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SubjectParameterUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "param", "type": "string" }, { "indexed": false, "internalType": "address", "name": "subject", "type": "address" } ], "name": "SubjectUpdated", "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": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_charactersPlayed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_dependsOnCharacters", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_dependsOnRoles", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "_rolesPlayed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "accounts", "outputs": [ { "internalType": "uint256", "name": "depositAmount", "type": "uint256" }, { "internalType": "uint256", "name": "lastCumulRewardSimple", "type": "uint256" }, { "internalType": "uint256", "name": "lastCumulRewardWeighted", "type": "uint256" }, { "internalType": "uint256", "name": "factor", "type": "uint256" } ], "stateMutability": "view", "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": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "boostedSharePer10k", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "charactersPlayed", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cumulRewardPer1e18Simple", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cumulRewardPer1e18Weighted", "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": [], "name": "dependsOnCharacters", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dependsOnRoles", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "", "type": "uint256" } ], "name": "mainCharacterCache", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "registerReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "roleCache", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "roles", "outputs": [ { "internalType": "contract Roles", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rolesPlayed", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newBoostedShare", "type": "uint256" } ], "name": "setBoostedSharePer10k", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalWeights", "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": "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": "user", "type": "address" }, { "internalType": "uint256", "name": "veBalance", "type": "uint256" } ], "name": "updateFactor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "role", "type": "uint256" } ], "name": "updateMainCharacterCache", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "role", "type": "uint256" }, { "internalType": "address", "name": "contr", "type": "address" } ], "name": "updateRoleCache", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "incoming", "type": "uint256" } ], "name": "viewPendingReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "incoming", "type": "uint256" } ], "name": "viewUpdatedCumulRewards", "outputs": [ { "internalType": "uint256", "name": "_cumulRewardPer1e18Simple", "type": "uint256" }, { "internalType": "uint256", "name": "_cumulRewardPer1e18Weighted", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101a06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140526001600d819055600e556113886010553480156200004757600080fd5b506040516200292e3803806200292e8339810160408190526200006a9162000367565b604080518082018252600680825265694d6f6e657960d01b60208084018290528451808601865260018152603160f81b81830152855180870187528481528083018481528751808901909852948752918601929092528051869585949091620000d691600391620002a4565b508051620000ec906004906020840190620002a4565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060601b60c0526101205250505050506001600160a01b038116620001ea5760405162461bcd60e51b815260206004820152602260248201527f506c656173652070726f766964652076616c696420726f6c6573206164647265604482015261737360f01b606482015260840160405180910390fd5b6001600160601b0319606091821b81166101605260088054600181810190925560667ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390910155600980548083019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01819055600b8054918201815560005260027f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99091015592901b9091166101805250620003db565b828054620002b2906200039e565b90600052602060002090601f016020900481019282620002d6576000855562000321565b82601f10620002f157805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032157825182559160200191906001019062000304565b506200032f92915062000333565b5090565b5b808211156200032f576000815560010162000334565b80516001600160a01b03811681146200036257600080fd5b919050565b600080604083850312156200037a578182fd5b62000385836200034a565b915062000395602084016200034a565b90509250929050565b600181811c90821680620003b357607f821691505b60208210811415620003d557634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160601c60e0516101005161012051610140516101605160601c6101805160601c6124bd620004716000396000610b060152600081816102b80152818161061b015281816109e5015281816117df015261187201526000610e440152600061196b015260006119ba01526000611995015260006118ec015260006119160152600061194001526124bd6000f3fe608060405234801561001057600080fd5b50600436106101e35760003560e01c806306fdde03146101e8578063071060a614610206578063095ea7b31461021b57806318160ddd1461023e57806323b872dd146102505780632e1a7d4d146102635780632f4f21e2146102765780632fbab40514610289578063313ce5671461029c5780633644e515146102ab578063392f5f64146102b357806339509351146102e7578063447d52ba146102fa5780634a7a7f411461030d5780634f00a93e146103225780635e5c06e2146103355780636902cc091461038a5780636caa9c111461039357806370a08231146103a65780637a1a04df146103b95780637dad209b146103e75780637ecebe00146103ef578063926323d51461040257806395d89b411461040b578063a457c2d714610413578063a9059cbb14610426578063abcbc4fc14610439578063aeb38d8b1461044c578063b6b55f251461045f578063bf184ea414610472578063c6fbc68214610485578063d505accf1461048e578063d98b3f9b146104a1578063db518db2146104b4578063dc94cb7d146104c7578063dd62ed3e146104cf578063e8ea4fae14610508578063e9c3f77d14610510578063ec58744c14610539578063ee91da8214610541578063f806637814610569575b600080fd5b6101f0610572565b6040516101fd9190612301565b60405180910390f35b61021961021436600461223c565b610605565b005b61022e6102293660046121f1565b6106cb565b60405190151581526020016101fd565b6002545b6040519081526020016101fd565b61022e61025e36600461213c565b6106e1565b61021961027136600461223c565b610790565b6102196102843660046121f1565b610806565b61021961029736600461223c565b6108a2565b604051601281526020016101fd565b610242610983565b6102da7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101fd9190612290565b61022e6102f53660046121f1565b610992565b61021961030836600461226c565b6109ce565b610315610aa4565b6040516101fd91906122bd565b6102196103303660046121f1565b610afb565b61036a6103433660046120cc565b600c6020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101fd565b610242600d5481565b6102426103a136600461223c565b610be2565b6102426103b43660046120cc565b610c03565b61022e6103c73660046121f1565b600760209081526000928352604080842090915290825290205460ff1681565b610315610c22565b6102426103fd3660046120cc565b610c78565b610242600f5481565b6101f0610c98565b61022e6104213660046121f1565b610ca7565b61022e6104343660046121f1565b610d40565b61024261044736600461223c565b610d4d565b61024261045a36600461223c565b610d5d565b61021961046d36600461223c565b610d6d565b61024261048036600461223c565b610de0565b61024260105481565b61021961049c36600461217c565b610df0565b6102426104af3660046121f1565b610f54565b6102196104c23660046121f1565b61103a565b6103156110d2565b6102426104dd366004612104565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610315611128565b6102da61051e36600461223c565b6006602052600090815260409020546001600160a01b031681565b61021961117e565b61055461054f36600461223c565b611295565b604080519283526020830191909152016101fd565b610242600e5481565b60606003805461058190612407565b80601f01602080910402602001604051908101604052809291908181526020018280546105ad90612407565b80156105fa5780601f106105cf576101008083540402835291602001916105fa565b820191906000526020600020905b8154815290600101906020018083116105dd57829003601f168201915b505050505090505b90565b60405163b4ed0b6d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b4ed0b6d9060240160206040518083038186803b15801561066557600080fd5b505afa158015610679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069d91906120e8565b60009182526006602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b60006106d8338484611349565b50600192915050565b60006106ee84848461146d565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156107785760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107858533858403611349565b506001949350505050565b61079861162a565b6001600160a01b03166340c10f1933836040518363ffffffff1660e01b81526004016107c59291906122a4565b600060405180830381600087803b1580156107df57600080fd5b505af11580156107f3573d6000803e3d6000fd5b5050505061080333600083611662565b50565b61080f336117b1565b61082b5760405162461bcd60e51b815260040161076f90612354565b61083361162a565b6001600160a01b0316639dc29fac83836040518363ffffffff1660e01b81526004016108609291906122a4565b600060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b5050505061089e82826000611662565b5050565b336108ab6117db565b6001600160a01b031614806108cf5750336108c461186e565b6001600160a01b0316145b61092e5760405162461bcd60e51b815260206004820152602a60248201527f526f6c65733a2063616c6c6572206973206e6f7420746865206f776e6572206f604482015269391032bc32b1baba37b960b11b606482015260840161076f565b80612710101561097e5760405162461bcd60e51b815260206004820152601b60248201527a426f6f73746564207368617265206f7574206f6620626f756e647360281b604482015260640161076f565b601055565b600061098d6118df565b905090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106d89185906109c9908690612399565b611349565b60405163f0723d9760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f0723d9790610a1c90849086906004016122a4565b60206040518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c919061221c565b6001600160a01b0391909116600090815260076020908152604080832094835293905291909120805460ff1916911515919091179055565b606060098054806020026020016040519081016040528092919081815260200182805480156105fa57602002820191906000526020600020905b815481526020019060010190808311610ade575050505050905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b735760405162461bcd60e51b815260206004820152601e60248201527f4e6f74206175746f72697a656420746f2075706461746520666163746f720000604482015260640161076f565b610b7f82600080611662565b6001600160a01b0382166000908152600c6020526040902060038101548154610bb091610bab916123d1565b611a0a565b8154610bc190610bab9085906123d1565b600f54610bce9190612399565b610bd891906123f0565b600f556003015550565b600b8181548110610bf257600080fd5b600091825260209091200154905081565b6001600160a01b0381166000908152602081905260409020545b919050565b6060600a8054806020026020016040519081016040528092919081815260200182805480156105fa5760200282019190600052602060002090815481526020019060010190808311610ade575050505050905090565b6001600160a01b0381166000908152600560205260408120545b92915050565b60606004805461058190612407565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610d295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076f565b610d363385858403611349565b5060019392505050565b60006106d833848461146d565b60088181548110610bf257600080fd5b600a8181548110610bf257600080fd5b610d7561162a565b6001600160a01b0316639dc29fac33836040518363ffffffff1660e01b8152600401610da29291906122a4565b600060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b5050505061080333826000611662565b60098181548110610bf257600080fd5b83421115610e405760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161076f565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610e6f8c611a79565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610eca82611aa1565b90506000610eda82878787611aef565b9050896001600160a01b0316816001600160a01b031614610f3d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161076f565b610f488a8a8a611349565b50505050505050505050565b6001600160a01b0382166000908152600c602090815260408083208151608081018352815481526001820154938101939093526002810154918301919091526003015460608201526110339083610fa961162a565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610fd49190612290565b60206040518083038186803b158015610fec57600080fd5b505afa158015611000573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110249190612254565b61102e9190612399565b611b17565b9392505050565b611043336117b1565b61105f5760405162461bcd60e51b815260040161076f90612354565b61106761162a565b6001600160a01b03166340c10f1983836040518363ffffffff1660e01b81526004016110949291906122a4565b600060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b5050505061089e82600083611662565b606060088054806020026020016040519081016040528092919081815260200182805480156105fa5760200282019190600052602060002090815481526020019060010190808311610ade575050505050905090565b6060600b8054806020026020016040519081016040528092919081815260200182805480156105fa5760200282019190600052602060002090815481526020019060010190808311610ade575050505050905090565b600061118960025490565b111561129357600061119961162a565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016111c99190612290565b60206040518083038186803b1580156111e157600080fd5b505afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112199190612254565b9050801561089e57604051632770a7eb60e21b81526001600160a01b03831690639dc29fac9061124f90309085906004016122a4565b600060405180830381600087803b15801561126957600080fd5b505af115801561127d573d6000803e3d6000fd5b5050505061128a81611295565b600e55600d5550505b565b600d54600e5482158015906112b2575060006112b060025490565b115b1561134457600f5415611318576000612710601054856112d291906123d1565b6112dc91906123b1565b600f549091506112f482670de0b6b3a76400006123d1565b6112fe91906123b1565b6113089083612399565b915061131481856123f0565b9350505b60025461132d84670de0b6b3a76400006123d1565b61133791906123b1565b6113419083612399565b91505b915091565b6001600160a01b0383166113ab5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076f565b6001600160a01b03821661140c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114d15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076f565b6001600160a01b0382166115335760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076f565b6001600160a01b038316600090815260208190526040902054818110156115ab5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076f565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906115e2908490612399565b92505081905550826001600160a01b0316846001600160a01b03166000805160206124688339815191528460405161161c91815260200190565b60405180910390a350505050565b606660005260066020527f702cd40275723fbecf854291f1eca58b5a0de7d378ea31ec006833fd99382dea546001600160a01b031690565b61166a61117e565b6001600160a01b0383166000908152600c602052604081208054600382015491929161169991610bab916123d1565b604080516080810182528454815260018501546020820152600285015491810191909152600384015460608201529091506116d5906000611b17565b6116df9085612399565b9350838311156116fe576116f384846123f0565b92506000935061170f565b61170883856123f0565b9350600092505b831561173e57838260000160008282546117299190612399565b9091555061173990508585611be1565b611768565b8215611768578282600001600082825461175891906123f0565b9091555061176890508584611caf565b8061178083600301548460000154610bab91906123d1565b600f5461178d9190612399565b61179791906123f0565b600f5550600d546001820155600e54600290910155505050565b6001600160a01b031660009081526007602090815260408083206001845290915290205460ff1690565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183657600080fd5b505afa15801561184a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098d91906120e8565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c34c08e56040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156118cb57600080fd5b505af115801561184a573d6000803e3d6000fd5b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561193857507f000000000000000000000000000000000000000000000000000000000000000046145b1561196457507f0000000000000000000000000000000000000000000000000000000000000000610602565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c09092019092528051910120610602565b60006003821115611a6b5750806000611a246002836123b1565b611a2f906001612399565b90505b81811015611a6557905080600281611a4a81866123b1565b611a549190612399565b611a5e91906123b1565b9050611a32565b50610c1d565b8115610c1d57506001919050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b6000610c92611aae6118df565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611b0087878787611deb565b91509150611b0d81611ece565b5095945050505050565b6000806000611b2584611295565b915091506000611b4286600001518760600151610bab91906123d1565b905060008087604001511115611b8c57670de0b6b3a7640000876040015184611b6b91906123f0565b611b7590846123d1565b611b7f91906123b1565b611b899082612399565b90505b602087015115611bd257670de0b6b3a7640000876020015185611baf91906123f0565b8851611bbb91906123d1565b611bc591906123b1565b611bcf9082612399565b90505b9695505050505050565b505050565b6001600160a01b038216611c375760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161076f565b8060026000828254611c499190612399565b90915550506001600160a01b03821660009081526020819052604081208054839290611c76908490612399565b90915550506040518181526001600160a01b038316906000906000805160206124688339815191529060200160405180910390a361089e565b6001600160a01b038216611d0f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161076f565b6001600160a01b03821660009081526020819052604090205481811015611d835760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161076f565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611db29084906123f0565b90915550506040518281526000906001600160a01b038516906000805160206124688339815191529060200160405180910390a3611bdc565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115611e185750600090506003611ec5565b8460ff16601b14158015611e3057508460ff16601c14155b15611e415750600090506004611ec5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611e95573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611ebe57600060019250925050611ec5565b9150600090505b94509492505050565b6000816004811115611ef057634e487b7160e01b600052602160045260246000fd5b1415611efb57610803565b6001816004811115611f1d57634e487b7160e01b600052602160045260246000fd5b1415611f665760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161076f565b6002816004811115611f8857634e487b7160e01b600052602160045260246000fd5b1415611fd65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161076f565b6003816004811115611ff857634e487b7160e01b600052602160045260246000fd5b14156120515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161076f565b600481600481111561207357634e487b7160e01b600052602160045260246000fd5b14156108035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161076f565b6000602082840312156120dd578081fd5b813561103381612452565b6000602082840312156120f9578081fd5b815161103381612452565b60008060408385031215612116578081fd5b823561212181612452565b9150602083013561213181612452565b809150509250929050565b600080600060608486031215612150578081fd5b833561215b81612452565b9250602084013561216b81612452565b929592945050506040919091013590565b600080600080600080600060e0888a031215612196578283fd5b87356121a181612452565b965060208801356121b181612452565b95506040880135945060608801359350608088013560ff811681146121d4578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612203578182fd5b823561220e81612452565b946020939093013593505050565b60006020828403121561222d578081fd5b81518015158114611033578182fd5b60006020828403121561224d578081fd5b5035919050565b600060208284031215612265578081fd5b5051919050565b6000806040838503121561227e578182fd5b82359150602083013561213181612452565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156122f5578351835292840192918401916001016122d9565b50909695505050505050565b6000602080835283518082850152825b8181101561232d57858101830151858201604001528201612311565b8181111561233e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f4e6f7420617574686f72697a656420746f207472616e7366657220757365722060408201526466756e647360d81b606082015260800190565b600082198211156123ac576123ac61243c565b500190565b6000826123cc57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156123eb576123eb61243c565b500290565b6000828210156124025761240261243c565b500390565b600181811c9082168061241b57607f821691505b60208210811415611a9b57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461080357600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122036b328349b3cf6566cfee6038d4010236673547f342849e0bdc5d0d23038199564736f6c634300080300330000000000000000000000007aea97ba3d91117ea53be2599c6c6c60e1c7ccbc0000000000000000000000009e1ee00d45252aa58623f7d771fb414aa38f0878