[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "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": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Claim", "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": "PRECISION", "outputs": [ { "internalType": "uint256", "name": "", "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": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "averageStakedAmounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "claim", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "claimForAccount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "claimable", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimableReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cumulativeRewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "cumulativeRewards", "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": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "depositBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "distributor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gov", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inPrivateClaimingMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inPrivateStakingMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inPrivateTransferMode", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_depositTokens", "type": "address[]" }, { "internalType": "address", "name": "_distributor", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isDepositToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isHandler", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isInitialized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastTimeClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "previousCumulatedRewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "bool", "name": "_isDepositToken", "type": "bool" } ], "name": "setDepositToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_gov", "type": "address" } ], "name": "setGov", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_handler", "type": "address" }, { "internalType": "bool", "name": "_isActive", "type": "bool" } ], "name": "setHandler", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_inPrivateClaimingMode", "type": "bool" } ], "name": "setInPrivateClaimingMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_inPrivateStakingMode", "type": "bool" } ], "name": "setInPrivateStakingMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_inPrivateTransferMode", "type": "bool" } ], "name": "setInPrivateTransferMode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_fundingAccount", "type": "address" }, { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stakeForAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "stakedAmounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensPerInterval", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "totalDepositSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_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": "_depositToken", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "unstake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "unstakeForAccount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405260016000553480156200001657600080fd5b5060405162002e9b38038062002e9b8339810160408190526200003991620001f2565b600180546001600160a01b031916331790558151620000609060029060208501906200007f565b508051620000769060039060208401906200007f565b50505062000299565b8280546200008d906200025c565b90600052602060002090601f016020900481019282620000b15760008555620000fc565b82601f10620000cc57805160ff1916838001178555620000fc565b82800160010185558215620000fc579182015b82811115620000fc578251825591602001919060010190620000df565b506200010a9291506200010e565b5090565b5b808211156200010a57600081556001016200010f565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014d57600080fd5b81516001600160401b03808211156200016a576200016a62000125565b604051601f8301601f19908116603f0116810190828211818310171562000195576200019562000125565b81604052838152602092508683858801011115620001b257600080fd5b600091505b83821015620001d65785820183015181830184015290820190620001b7565b83821115620001e85760008385830101525b9695505050505050565b600080604083850312156200020657600080fd5b82516001600160401b03808211156200021e57600080fd5b6200022c868387016200013b565b935060208501519150808211156200024357600080fd5b5062000252858286016200013b565b9150509250929050565b600181811c908216806200027157607f821691505b602082108114156200029357634e487b7160e01b600052602260045260246000fd5b50919050565b612bf280620002a96000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c80635a47a1a7116101a7578063bfe10928116100ee578063e44b755811610097578063f5fc507611610071578063f5fc50761461077d578063f76033d314610786578063f7c618c11461079957600080fd5b8063e44b75581461071f578063e950342514610732578063f5d9d63e1461075257600080fd5b8063cfad57a2116100c8578063cfad57a2146106c6578063dd62ed3e146106d9578063dfbaefb11461071257600080fd5b8063bfe109281461068e578063c2a672e0146106a1578063c5fa2730146106b457600080fd5b8063a318021711610150578063aaf5eb681161012a578063aaf5eb6814610644578063adc9772e14610658578063b89e45b31461066b57600080fd5b8063a318021714610609578063a8d9362714610629578063a9059cbb1461063157600080fd5b806395d89b411161018157806395d89b41146105ce5780639cb7de4b146105d65780639d98702c146105e957600080fd5b80635a47a1a71461057f57806370a0823114610592578063790b5a6c146105bb57600080fd5b806327e235e31161026b578063402914f51161021457806346ea87af116101ee57806346ea87af14610511578063552ce1dc1461053457806355b6ed5c1461055457600080fd5b8063402914f5146104cb57806344a08411146104de578063462d0b2e146104fe57600080fd5b8063392e53cd11610245578063392e53cd1461048b5780633cd7f700146104b05780633e158b0c146104c357600080fd5b806327e235e314610431578063313ce567146104515780633792def31461046b57600080fd5b806312d43a51116102cd5780631d30d5bc116102a75780631d30d5bc146103f85780631e83409a1461040b57806323b872dd1461041e57600080fd5b806312d43a51146103b157806313e82e7a146103dc57806318160ddd146103ef57600080fd5b8063095ea7b3116102fe578063095ea7b31461034d578063098bf59d1461037057806310c1c1031461038357600080fd5b806301e336671461031a57806306fdde031461032f575b600080fd5b61032d61032836600461265a565b6107a1565b005b610337610819565b60405161034491906126c7565b60405180910390f35b61036061035b366004612718565b6108a7565b6040519015158152602001610344565b61032d61037e366004612744565b6108bd565b6103a3610391366004612797565b600c6020526000908152604090205481565b604051908152602001610344565b6001546103c4906001600160a01b031681565b6040516001600160a01b039091168152602001610344565b6103a36103ea3660046127b4565b610933565b6103a360085481565b61032d6104063660046127fb565b6109a9565b6103a3610419366004612797565b610a3a565b61036061042c36600461265a565b610b26565b6103a361043f366004612797565b60096020526000908152604090205481565b610459601281565b60405160ff9091168152602001610344565b6103a3610479366004612797565b600f6020526000908152604090205481565b6001546103609074010000000000000000000000000000000000000000900460ff1681565b61032d6104be3660046127fb565b610ba5565b61032d610c37565b6103a36104d9366004612797565b610ca0565b6103a36104ec366004612797565b600e6020526000908152604090205481565b61032d61050c366004612847565b610e0c565b61036061051f366004612797565b60136020526000908152604090205460ff1681565b6103a3610542366004612797565b60076020526000908152604090205481565b6103a36105623660046127b4565b600a60209081526000928352604080842090915290825290205481565b61032d61058d3660046127fb565b61101d565b6103a36105a0366004612797565b6001600160a01b031660009081526009602052604090205490565b61032d6105c936600461293c565b6110a8565b610337611113565b61032d6105e436600461298d565b611120565b6103a36105f7366004612797565b60116020526000908152604090205481565b6103a3610617366004612797565b60106020526000908152604090205481565b6103a36111c3565b61036061063f366004612718565b611241565b6103a36c0c9f2c9cd04674edea4000000081565b61032d610666366004612718565b61124e565b610360610679366004612797565b60056020526000908152604090205460ff1681565b6004546103c4906001600160a01b031681565b61032d6106af366004612718565b611338565b60125461036090610100900460ff1681565b61032d6106d4366004612797565b611419565b6103a36106e73660046127b4565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6012546103609060ff1681565b61032d61072d36600461298d565b6114ad565b6103a3610740366004612797565b600d6020526000908152604090205481565b6103a36107603660046127b4565b600660209081526000928352604080842090915290825290205481565b6103a3600b5481565b6012546103609062010000900460ff1681565b6103c4611550565b6001546001600160a01b031633146108005760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064015b60405180910390fd5b6108146001600160a01b03841683836115c9565b505050565b60028054610826906129bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610852906129bb565b801561089f5780601f106108745761010080835404028352916020019161089f565b820191906000526020600020905b81548152906001019060200180831161088257829003601f168201915b505050505081565b60006108b4338484611690565b50600192915050565b60005460011461090f5760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b600260005561091c6117ea565b6109288484848461184b565b505060016000555050565b600080546001146109865760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b60026000556109936117ea565b61099d8383611af9565b60016000559392505050565b6001546001600160a01b03163314610a035760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b60128054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b60008054600114610a8d5760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b600260005560125462010000900460ff1615610b115760405162461bcd60e51b815260206004820152602160248201527f526577617264547261636b65723a20616374696f6e206e6f7420656e61626c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016107f7565b610b1b3383611af9565b600160005592915050565b3360009081526013602052604081205460ff1615610b5157610b49848484611b9c565b506001610b9e565b6001600160a01b0384166000908152600a60209081526040808320338452909152812054610b80908490612a3e565b9050610b8d853383611690565b610b98858585611b9c565b60019150505b9392505050565b6001546001600160a01b03163314610bff5760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b6012805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b600054600114610c895760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b60026000908155610c9990611d48565b6001600055565b6001600160a01b0381166000908152600c602052604081205480610cdb5750506001600160a01b03166000908152600d602052604090205490565b60085460048054604080517feded3fda00000000000000000000000000000000000000000000000000000000815290516000936c0c9f2c9cd04674edea40000000936001600160a01b03169263eded3fda92818301926020928290030181865afa158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d719190612a55565b610d7b9190612a6e565b90506000610d898383612aab565b600b54610d969190612ae6565b6001600160a01b0387166000908152600e60205260409020549091506c0c9f2c9cd04674edea4000000090610dcb9083612a3e565b610dd59086612a6e565b610ddf9190612aab565b6001600160a01b0387166000908152600d6020526040902054610e029190612ae6565b9695505050505050565b6001546001600160a01b03163314610e665760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b60015474010000000000000000000000000000000000000000900460ff1615610ef75760405162461bcd60e51b815260206004820152602260248201527f526577617264547261636b65723a20616c726561647920696e697469616c697a60448201527f656400000000000000000000000000000000000000000000000000000000000060648201526084016107f7565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905560005b8251811015610fb5576000838281518110610f5657610f56612afe565b6020908102919091018101516001600160a01b0316600090815260059091526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555080610fad81612b2d565b915050610f39565b50601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016610101179055600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6001546001600160a01b031633146110775760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000546001146110fa5760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b60026000556111076117ea565b61092884848484611faf565b60038054610826906129bb565b6001546001600160a01b0316331461117a5760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b6001600160a01b0391909116600090815260136020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663a8d936276040518163ffffffff1660e01b8152600401602060405180830381865afa158015611218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c9190612a55565b905090565b60006108b4338484611b9c565b6000546001146112a05760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b6002600055601254610100900460ff16156113235760405162461bcd60e51b815260206004820152602160248201527f526577617264547261636b65723a20616374696f6e206e6f7420656e61626c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016107f7565b61132f33338484611faf565b50506001600055565b60005460011461138a5760405162461bcd60e51b815260206004820152600a60248201527f5245454e5452414e43590000000000000000000000000000000000000000000060448201526064016107f7565b6002600055601254610100900460ff161561140d5760405162461bcd60e51b815260206004820152602160248201527f526577617264547261636b65723a20616374696f6e206e6f7420656e61626c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016107f7565b61132f3383833361184b565b6001546001600160a01b031633146114735760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001546001600160a01b031633146115075760405162461bcd60e51b815260206004820152601560248201527f476f7665726e61626c653a20666f7262696464656e000000000000000000000060448201526064016107f7565b6001600160a01b0391909116600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123c9190612b66565b6040516001600160a01b0383166024820152604481018290526108149084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612165565b6001600160a01b03831661170c5760405162461bcd60e51b815260206004820152602c60248201527f526577617264547261636b65723a20617070726f76652066726f6d207468652060448201527f7a65726f2061646472657373000000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b0382166117885760405162461bcd60e51b815260206004820152602a60248201527f526577617264547261636b65723a20617070726f766520746f20746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b3360009081526013602052604090205460ff166118495760405162461bcd60e51b815260206004820152601860248201527f526577617264547261636b65723a20666f7262696464656e000000000000000060448201526064016107f7565b565b6000821161189b5760405162461bcd60e51b815260206004820152601e60248201527f526577617264547261636b65723a20696e76616c6964205f616d6f756e74000060448201526064016107f7565b6001600160a01b03831660009081526005602052604090205460ff166119285760405162461bcd60e51b8152602060048201526024808201527f526577617264547261636b65723a20696e76616c6964205f6465706f7369745460448201527f6f6b656e0000000000000000000000000000000000000000000000000000000060648201526084016107f7565b61193184611d48565b6001600160a01b0384166000908152600c6020526040902054828110156119c05760405162461bcd60e51b815260206004820152602b60248201527f526577617264547261636b65723a205f616d6f756e742065786365656473207360448201527f74616b6564416d6f756e7400000000000000000000000000000000000000000060648201526084016107f7565b6119ca8382612a3e565b6001600160a01b038087166000908152600c602090815260408083209490945560068152838220928816825291909152205483811015611a725760405162461bcd60e51b815260206004820152602d60248201527f526577617264547261636b65723a205f616d6f756e742065786365656473206460448201527f65706f73697442616c616e63650000000000000000000000000000000000000060648201526084016107f7565b611a7c8482612a3e565b6001600160a01b038088166000908152600660209081526040808320938a168352928152828220939093556007909252902054611aba908590612a3e565b6001600160a01b038616600090815260076020526040902055611add868561224a565b611af16001600160a01b03861684866115c9565b505050505050565b6000611b0483611d48565b6001600160a01b0383166000908152600d6020908152604080832080549084905560119092529091204290558015610b9e57611b538382611b43611550565b6001600160a01b031691906115c9565b604080516001600160a01b0386168152602081018390527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4910160405180910390a19392505050565b6001600160a01b038316611c185760405162461bcd60e51b815260206004820152602d60248201527f526577617264547261636b65723a207472616e736665722066726f6d2074686560448201527f207a65726f20616464726573730000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b038216611c945760405162461bcd60e51b815260206004820152602b60248201527f526577617264547261636b65723a207472616e7366657220746f20746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084016107f7565b60125460ff1615611ca757611ca76117ea565b6001600160a01b03831660009081526009602052604081208054839290611ccf908490612a3e565b90915550506001600160a01b03821660009081526009602052604081208054839290611cfc908490612ae6565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117dd91815260200190565b6000600460009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc39190612a55565b600854600b54919250908115801590611ddc5750600083115b15611e155781611df96c0c9f2c9cd04674edea4000000085612a6e565b611e039190612aab565b611e0d9082612ae6565b600b81905590505b80611e205750505050565b6001600160a01b03841615611fa9576001600160a01b0384166000908152600c6020908152604080832054600e9092528220549091906c0c9f2c9cd04674edea4000000090611e6f9085612a3e565b611e799084612a6e565b611e839190612aab565b6001600160a01b0387166000908152600d602052604081205491925090611eab908390612ae6565b6001600160a01b0388166000908152600d60209081526040808320849055600e909152902085905590508015801590611efb57506001600160a01b0387166000908152600c602052604090205415155b15611fa5576001600160a01b0387166000908152600f6020526040812054611f24908490612ae6565b905080611f318486612a6e565b611f3b9190612aab565b6001600160a01b0389166000908152600f60209081526040808320546010909252909120548391611f6b91612a6e565b611f759190612aab565b611f7f9190612ae6565b6001600160a01b038916600090815260106020908152604080832093909355600f905220555b5050505b50505050565b60008111611fff5760405162461bcd60e51b815260206004820152601e60248201527f526577617264547261636b65723a20696e76616c6964205f616d6f756e74000060448201526064016107f7565b6001600160a01b03821660009081526005602052604090205460ff1661208c5760405162461bcd60e51b8152602060048201526024808201527f526577617264547261636b65723a20696e76616c6964205f6465706f7369745460448201527f6f6b656e0000000000000000000000000000000000000000000000000000000060648201526084016107f7565b6120a16001600160a01b038316853084612352565b6120aa83611d48565b6001600160a01b0383166000908152600c6020526040812080548392906120d2908490612ae6565b90915550506001600160a01b0380841660009081526006602090815260408083209386168352929052908120805483929061210e908490612ae6565b90915550506001600160a01b0382166000908152600760205260408120805483929061213b908490612ae6565b90915550506001600160a01b0383166000908152601160205260409020429055611fa983826123a3565b60006121ba826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166124a39092919063ffffffff16565b80519091501561081457808060200190518101906121d89190612b83565b6108145760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b0382166122c65760405162461bcd60e51b815260206004820152602960248201527f526577617264547261636b65723a206275726e2066726f6d20746865207a657260448201527f6f2061646472657373000000000000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b038216600090815260096020526040812080548392906122ee908490612a3e565b9250508190555080600860008282546123079190612a3e565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611fa99085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161160e565b6001600160a01b03821661241f5760405162461bcd60e51b815260206004820152602760248201527f526577617264547261636b65723a206d696e7420746f20746865207a65726f2060448201527f616464726573730000000000000000000000000000000000000000000000000060648201526084016107f7565b6001600160a01b03821660009081526009602052604081208054839290612447908490612ae6565b9250508190555080600860008282546124609190612ae6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612346565b60606124b284846000856124ba565b949350505050565b6060824710156125325760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107f7565b843b6125805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107f7565b600080866001600160a01b0316858760405161259c9190612ba0565b60006040518083038185875af1925050503d80600081146125d9576040519150601f19603f3d011682016040523d82523d6000602084013e6125de565b606091505b50915091506125ee8282866125f9565b979650505050505050565b60608315612608575081610b9e565b8251156126185782518084602001fd5b8160405162461bcd60e51b81526004016107f791906126c7565b6001600160a01b038116811461264757600080fd5b50565b803561265581612632565b919050565b60008060006060848603121561266f57600080fd5b833561267a81612632565b9250602084013561268a81612632565b929592945050506040919091013590565b60005b838110156126b657818101518382015260200161269e565b83811115611fa95750506000910152565b60208152600082518060208401526126e681604085016020870161269b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806040838503121561272b57600080fd5b823561273681612632565b946020939093013593505050565b6000806000806080858703121561275a57600080fd5b843561276581612632565b9350602085013561277581612632565b925060408501359150606085013561278c81612632565b939692955090935050565b6000602082840312156127a957600080fd5b8135610b9e81612632565b600080604083850312156127c757600080fd5b82356127d281612632565b915060208301356127e281612632565b809150509250929050565b801515811461264757600080fd5b60006020828403121561280d57600080fd5b8135610b9e816127ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561285a57600080fd5b823567ffffffffffffffff8082111561287257600080fd5b818501915085601f83011261288657600080fd5b813560208282111561289a5761289a612818565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811086821117156128dd576128dd612818565b6040529283528183019350848101820192898411156128fb57600080fd5b948201945b83861015612920576129118661264a565b85529482019493820193612900565b965061292f905087820161264a565b9450505050509250929050565b6000806000806080858703121561295257600080fd5b843561295d81612632565b9350602085013561296d81612632565b9250604085013561297d81612632565b9396929550929360600135925050565b600080604083850312156129a057600080fd5b82356129ab81612632565b915060208301356127e2816127ed565b600181811c908216806129cf57607f821691505b60208210811415612a09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612a5057612a50612a0f565b500390565b600060208284031215612a6757600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612aa657612aa6612a0f565b500290565b600082612ae1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115612af957612af9612a0f565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612b5f57612b5f612a0f565b5060010190565b600060208284031215612b7857600080fd5b8151610b9e81612632565b600060208284031215612b9557600080fd5b8151610b9e816127ed565b60008251612bb281846020870161269b565b919091019291505056fea26469706673582212207d8a7d0aa64f93da951aebd6be6e193ac06f2c547d0bf107a2b55c10322f551664736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a5374616b6564204b4c4f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004734b4c4f00000000000000000000000000000000000000000000000000000000