0 txs
216.2k calls
constructor
No constructor.
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegateOwner
viewfunction delegateOwner() view returns (address)
description
viewfunction description() view returns (string)
esXaiAddress
viewfunction esXaiAddress() view returns (address)
esXaiStakeBucket
viewfunction esXaiStakeBucket() view returns (address)
getDelegateOwner
viewfunction getDelegateOwner() view returns (address)
getPoolInfo
viewfunction getPoolInfo() view returns (tuple baseInfo, string _name, string _description, string _logo, string[] _socials, uint32[] _pendingShares, uint256 _ownerStakedKeys, uint256 _ownerRequestedUnstakeKeyAmount, uint256 _ownerLatestUnstakeRequestLockTime)
getPoolOwner
viewfunction getPoolOwner() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStakedAmounts
viewfunction getStakedAmounts(address user) view returns (uint256)
getStakedKeys
viewfunction getStakedKeys() view returns (uint256[])
getStakedKeysCount
viewfunction getStakedKeysCount() view returns (uint256)
getStakedKeysCountForUser
viewfunction getStakedKeysCountForUser(address user) view returns (uint256)
getUndistributedClaimAmount
viewfunction getUndistributedClaimAmount(address user) view returns (uint256 claimAmountFromKeys, uint256 claimAmountFromEsXai, uint256 claimAmount, uint256 ownerAmount)
getUnstakeRequest
viewfunction getUnstakeRequest(address account, uint256 index) view returns (tuple)
getUnstakeRequestCount
viewfunction getUnstakeRequestCount(address account) view returns (uint256)
getUserPoolData
viewfunction getUserPoolData(address user) view returns (uint256 userStakedEsXaiAmount, uint256 userClaimAmount, uint256 userStakedKeyAmount, uint256 unstakeRequestkeyAmount, uint256 unstakeRequestesXaiAmount)
getUserRequestedUnstakeAmounts
viewfunction getUserRequestedUnstakeAmounts(address user) view returns (uint256 keyAmount, uint256 esXaiAmount)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isUserEngagedWithPool
viewfunction isUserEngagedWithPool(address user) view returns (bool)
keyBucket
viewfunction keyBucket() view returns (address)
keyBucketShare
viewfunction keyBucketShare() view returns (uint32)
keyIdIndex
viewfunction keyIdIndex(uint256) view returns (uint256)
logo
viewfunction logo() view returns (string)
name
viewfunction name() view returns (string)
ownerShare
viewfunction ownerShare() view returns (uint32)
POOL_ADMIN
viewfunction POOL_ADMIN() view returns (bytes32)
poolOwner
viewfunction poolOwner() view returns (address)
poolOwnerClaimableRewards
viewfunction poolOwnerClaimableRewards() view returns (uint256)
refereeAddress
viewfunction refereeAddress() view returns (address)
socials
viewfunction socials(uint256) view returns (string)
stakedAmounts
viewfunction stakedAmounts(address) view returns (uint256)
stakedBucketShare
viewfunction stakedBucketShare() view returns (uint32)
stakedKeyAmounts
viewfunction stakedKeyAmounts(address) view returns (uint256)
stakedKeys
viewfunction stakedKeys(uint256) view returns (uint256)
stakedKeysIndices
viewfunction stakedKeysIndices(uint256) view returns (uint256)
stakedKeysOfOwner
viewfunction stakedKeysOfOwner(address, uint256) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
claimRewards
nonpayablefunction claimRewards(address user)
createUnstakeEsXaiRequest
nonpayablefunction createUnstakeEsXaiRequest(address user, uint256 amount, uint256 period)
createUnstakeKeyRequest
nonpayablefunction createUnstakeKeyRequest(address user, uint256 keyAmount, uint256 period)
createUnstakeOwnerLastKeyRequest
nonpayablefunction createUnstakeOwnerLastKeyRequest(address owner, uint256 period)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _refereeAddress, address _esXaiAddress, address _owner, address _delegateOwner, address _keyBucket, address _esXaiStakeBucket)
initShares
nonpayablefunction initShares(uint32 _ownerShare, uint32 _keyBucketShare, uint32 _stakedBucketShare)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
stakeEsXai
nonpayablefunction stakeEsXai(address owner, uint256 amount)
stakeKeys
nonpayablefunction stakeKeys(address owner, uint256 keyAmount)
transferStakedKeys
nonpayablefunction transferStakedKeys(address from, address to, uint256 amount)
unstakeEsXai
nonpayablefunction unstakeEsXai(address owner, uint256 unstakeRequestIndex, uint256 amount)
unstakeKeys
nonpayablefunction unstakeKeys(address owner, uint256 unstakeRequestIndex)
updateDelegateOwner
nonpayablefunction updateDelegateOwner(address delegate)
updateMetadata
nonpayablefunction updateMetadata(string[3] _metaData, string[] _socials)
updateShares
nonpayablefunction updateShares(uint32 _ownerShare, uint32 _keyBucketShare, uint32 _stakedBucketShare, uint256 period)
events
Initialized
event Initialized(uint8 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b506140e9806100206000396000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c80638bc081eb116101d3578063c91e101311610104578063d547741f116100a2578063dbb4006f1161007c578063dbb4006f14610846578063ed60c1711461086f578063ef5cfb8c14610898578063fb7f21eb146108ab57600080fd5b8063d547741f1461080f578063d5efd94814610822578063d9066f2b1461083557600080fd5b8063cecf0b7e116100de578063cecf0b7e146107c3578063cf0b2270146107d6578063cf566684146107e9578063d17e0723146107fc57600080fd5b8063c91e101314610786578063caa611b314610799578063cc2a9a5b146107b057600080fd5b8063a217fddf11610171578063b32912ab1161014b578063b32912ab146106e0578063b3de63ae146106f3578063bc5a6db41461073e578063be574d471461077157600080fd5b8063a217fddf1461069e578063a2b4fe71146106a6578063a528916d146106cd57600080fd5b806391d14854116101ad57806391d14854146106455780639540f4a114610658578063a125bda514610678578063a1884d5d1461068b57600080fd5b80638bc081eb1461060f5780638c944766146106225780638f1c31511461063557600080fd5b80635004ac89116102ad5780636ede3d2d1161024b57806378c535331161022557806378c53533146105d05780637def5d6f146105e15780638376f5db146105e957806383eff185146105fc57600080fd5b80636ede3d2d1461057a5780636f55bfed146105b55780637284e416146105c857600080fd5b80635a7b4f2f116102875780635a7b4f2f1461051757806360246c881461052a57806368da34e61461054757806369b9dad91461055a57600080fd5b80635004ac89146104b8578063551e7a73146104d8578063552b4b361461050457600080fd5b806312ad71971161031a5780632f2ff15d116102f45780632f2ff15d1461045f57806336568abe146104725780633a3319fb146104855780634ae6c4ae1461049857600080fd5b806312ad7197146103fe57806316c1e35614610411578063248a9ca31461043c57600080fd5b806301ffc9a71461036257806304ec03f41461038a57806306fdde03146103ab57806307e18b87146103c05780630ef61295146103c957806310c1c103146103de575b600080fd5b61037561037036600461375c565b6108b3565b60405190151581526020015b60405180910390f35b61039d6103983660046137a2565b6108ea565b604051908152602001610381565b6103b36108f5565b6040516103819190613815565b61039d60a05481565b6103dc6103d7366004613828565b610983565b005b61039d6103ec3660046137a2565b60a56020526000908152604090205481565b61039d61040c36600461385b565b610b2c565b609754610424906001600160a01b031681565b6040516001600160a01b039091168152602001610381565b61039d61044a366004613885565b60009081526065602052604090206001015490565b6103dc61046d36600461389e565b610b5d565b6103dc61048036600461389e565b610b87565b6103dc6104933660046137a2565b610c05565b6104ab6104a636600461385b565b610c33565b60405161038191906138ca565b61039d6104c6366004613885565b60a46020526000908152604090205481565b609f546104ef90600160201b900463ffffffff1681565b60405163ffffffff9091168152602001610381565b6103dc61051236600461394a565b610cfb565b6103dc61052536600461385b565b610d4d565b610532610f96565b60405161038199989796959493929190613a23565b6103dc610555366004613828565b61152c565b61039d6105683660046137a2565b60ae6020526000908152604090205481565b61058d6105883660046137a2565b6117f5565b604080519586526020860194909452928401919091526060830152608082015260a001610381565b60a154610424906001600160a01b031681565b6103b36119b4565b6099546001600160a01b0316610424565b61039d6119c1565b609854610424906001600160a01b031681565b61037561060a3660046137a2565b611a43565b6103dc61061d366004613cef565b611a97565b6103dc610630366004613828565b611b03565b609f546104ef9063ffffffff1681565b61037561065336600461389e565b611cfb565b61039d610666366004613885565b60a76020526000908152604090205481565b609a54610424906001600160a01b031681565b6103dc61069936600461385b565b611d26565b61039d600081565b61039d7f12ad05bde78c5ab75238ce885307f96ecd482bb402ef831f99e7018a0f169b7b81565b6103dc6106db36600461385b565b611e6c565b60a254610424906001600160a01b031681565b6107296107013660046137a2565b6001600160a01b0316600090815260ab602090815260408083205460ac909252909120549091565b60408051928352602083019190915201610381565b61075161074c3660046137a2565b611f76565b604080519485526020850193909352918301526060820152608001610381565b610779611f94565b6040516103819190613dae565b6103b3610794366004613885565b611fec565b609f546104ef90600160401b900463ffffffff1681565b6103dc6107be366004613df2565b612017565b6103dc6107d1366004613e66565b6121e2565b609954610424906001600160a01b031681565b6103dc6107f736600461385b565b612241565b6103dc61080a366004613eb1565b61241d565b6103dc61081d36600461389e565b612754565b61039d610830366004613885565b612779565b609a546001600160a01b0316610424565b61039d6108543660046137a2565b6001600160a01b0316600090815260a5602052604090205490565b61039d61087d3660046137a2565b6001600160a01b0316600090815260aa602052604090205490565b6103dc6108a63660046137a2565b61279a565b6103b3612960565b60006001600160e01b03198216637965db0b60e01b14806108e457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006108e48261296d565b609b805461090290613eed565b80601f016020809104026020016040519081016040528092919081815260200182805461092e90613eed565b801561097b5780601f106109505761010080835404028352916020019161097b565b820191906000526020600020905b81548152906001019060200180831161095e57829003601f168201915b505050505081565b600061098e816129c5565b6001600160a01b038416600090815260ac60205260409020546109b19084613f3e565b6001600160a01b038516600090815260a560205260409020541015610a025760405162461bcd60e51b8152602060048201526002602482015261323160f01b60448201526064015b60405180910390fd5b6001600160a01b038416600090815260aa60209081526040808320815160c08101835260018152928301939093528101859052819060608101610a458642613f3e565b8152600060208083018290526040805160a080820183528482528184018590528183018590526060808301869052608080840187905296840192909252875460018181018a5598865294849020875160099096020180549488015115156101000261ff00199615159690961661ffff19909516949094179490941783559085015195820195909555938301516002850155908201516003840155810151909190610af59060048301906005613589565b5050506001600160a01b038516600090815260ac602052604081208054869290610b20908490613f3e565b90915550505050505050565b60a36020528160005260406000208181548110610b4857600080fd5b90600052602060002001600091509150505481565b600082815260656020526040902060010154610b78816129c5565b610b8283836129d2565b505050565b6001600160a01b0381163314610bf75760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016109f9565b610c018282612a58565b5050565b6000610c10816129c5565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b610c3b6135c7565b6001600160a01b038316600090815260aa60205260409020805483908110610c6557610c65613f56565b60009182526020918290206040805160c081018252600993909302909101805460ff80821615158552610100909104161515938301939093526001830154828201526002830154606083015260038301546080830152805160a080820192839052929392840191600484019060059082845b815481526020019060010190808311610cd757505050505081525050905092915050565b6000610d06816129c5565b50609f805463ffffffff94851667ffffffffffffffff1990911617600160201b938516939093029290921763ffffffff60401b1916600160401b9190931602919091179055565b6000610d58816129c5565b6001600160a01b038316600090815260aa60205260408120805484908110610d8257610d82613f56565b60009182526020909120600990910201805490915060ff168015610dac57508054610100900460ff165b610ddd5760405162461bcd60e51b81526020600482015260026024820152610c8d60f21b60448201526064016109f9565b8060020154421015610e165760405162461bcd60e51b8152602060048201526002602482015261323560f01b60448201526064016109f9565b610e1f84612abf565b60018101546001600160a01b038516600090815260ae602052604081208054909190610e4c908490613f6c565b90915550610e5a9050612b18565b60a15460405163807ab4f760e01b81526001600160a01b0386811660048301529091169063807ab4f790602401602060405180830381600087803b158015610ea157600080fd5b505af1158015610eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed99190613f83565b5060a1546001600160a01b03858116600081815260ae6020526040908190205490516338c110ef60e21b81526004810192909252602482015291169063e30443bc90604401600060405180830381600087803b158015610f3857600080fd5b505af1158015610f4c573d6000803e3d6000fd5b50505060018201546001600160a01b038616600090815260ab60205260408120805492935091610f7d908490613f6c565b9091555050805460ff1916815542600390910155505050565b604080516101408101825260006080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190523082526099546001600160a01b0390811660208085019190915260a154821684860181905260a25490921660608086019190915285516318160ddd60e01b81529551949590948594859485948594929384938493926318160ddd92600480840193829003018186803b15801561104457600080fd5b505afa158015611058573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107c9190613fa5565b60808a015260a254604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190613fa5565b60a08a0152609f5463ffffffff80821660e08c0152600160201b820481166101008c0152600160401b909104166101208a015260a95460c08a0152609b805461114690613eed565b80601f016020809104026020016040519081016040528092919081815260200182805461117290613eed565b80156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b50505050509750609c80546111d390613eed565b80601f01602080910402602001604051908101604052809291908181526020018280546111ff90613eed565b801561124c5780601f106112215761010080835404028352916020019161124c565b820191906000526020600020905b81548152906001019060200180831161122f57829003601f168201915b50505050509650609d805461126090613eed565b80601f016020809104026020016040519081016040528092919081815260200182805461128c90613eed565b80156112d95780601f106112ae576101008083540402835291602001916112d9565b820191906000526020600020905b8154815290600101906020018083116112bc57829003601f168201915b50505050509550609e805480602002602001604051908101604052809291908181526020016000905b828210156113ae57838290600052602060002001805461132190613eed565b80601f016020809104026020016040519081016040528092919081815260200182805461134d90613eed565b801561139a5780601f1061136f5761010080835404028352916020019161139a565b820191906000526020600020905b81548152906001019060200180831161137d57829003601f168201915b505050505081526020019060010190611302565b50929750600392506113be915050565b6040519080825280602002602001820160405280156113e7578160200160208202803683370190505b5060a854815191955063ffffffff1690859060009061140857611408613f56565b63ffffffff928316602091820292909201015260a8548551600160201b909104909116908590600190811061143f5761143f613f56565b63ffffffff928316602091820292909201015260a8548551600160401b909104909116908590600290811061147657611476613f56565b63ffffffff909216602092830291909101909101526099546114a0906001600160a01b031661296d565b6099546001600160a01b0316600090815260ab6020526040902054909350915081831480156114cf5750600082115b15611521576099546001600160a01b0316600090815260aa6020526040902080546114fc90600190613f6c565b8154811061150c5761150c613f56565b90600052602060002090600902016002015490505b909192939495969798565b6000611537816129c5565b6001600160a01b038416600090815260aa6020526040812080548590811061156157611561613f56565b60009182526020909120600990910201805490915060ff16801561158c57508054610100900460ff16155b6115bd5760405162461bcd60e51b8152602060048201526002602482015261323960f01b60448201526064016109f9565b80600201544210156115f65760405162461bcd60e51b8152602060048201526002602482015261033360f41b60448201526064016109f9565b6000831180156116095750828160010154145b61163a5760405162461bcd60e51b8152602060048201526002602482015261333160f01b60448201526064016109f9565b6001600160a01b038516600090815260a560205260409020548311156116875760405162461bcd60e51b8152602060048201526002602482015261199960f11b60448201526064016109f9565b6001600160a01b038516600090815260a56020526040812080548592906116af908490613f6c565b909155506116bd9050612b18565b60a25460405163807ab4f760e01b81526001600160a01b0387811660048301529091169063807ab4f790602401602060405180830381600087803b15801561170457600080fd5b505af1158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613f83565b5060a2546001600160a01b03868116600081815260a56020526040908190205490516338c110ef60e21b81526004810192909252602482015291169063e30443bc90604401600060405180830381600087803b15801561179b57600080fd5b505af11580156117af573d6000803e3d6000fd5b505050506001600160a01b038516600090815260ac6020526040812080548592906117db908490613f6c565b9091555050805460ff191681554260039091015550505050565b6001600160a01b03818116600081815260a560205260408082205460a15491516302a2e74960e61b815260048101949094529391928392839283928392919091169063a8b9d2409060240160206040518083038186803b15801561185857600080fd5b505afa15801561186c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118909190613fa5565b60a2546040516302a2e74960e61b81526001600160a01b038a811660048301529293506000929091169063a8b9d2409060240160206040518083038186803b1580156118db57600080fd5b505afa1580156118ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119139190613fa5565b90506000806119218a612f6f565b9350935050508183856119349190613f3e565b61193e9190613f3e565b6099549098506001600160a01b038b811691161415611972578060a0546119659190613f3e565b61196f9089613f3e565b97505b61197b8a61296d565b6001600160a01b03909a16600090815260ab602090815260408083205460ac90925290912054999b989a99909890975095505050505050565b609c805461090290613eed565b60a154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b158015611a0657600080fd5b505afa158015611a1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3e9190613fa5565b905090565b600080611a4f8361296d565b6099549091506001600160a01b0384811691161480611a8557506001600160a01b038316600090815260a5602052604090205415155b80611a905750600081115b9392505050565b6000611aa2816129c5565b82518051611ab891609b91602090910190613606565b506020808401518051611acf92609c920190613606565b5060408301518051611ae991609d91602090910190613606565b508151611afd90609e906020850190613679565b50505050565b6000611b0e816129c5565b611b1784612abf565b6001600160a01b03808516600081815260ae602090815260408083205460ab909252909120546099549193909291161415611b8e57611b568186613f3e565b8211611b895760405162461bcd60e51b8152602060048201526002602482015261313560f01b60448201526064016109f9565b611bcc565b611b988186613f3e565b821015611bcc5760405162461bcd60e51b8152602060048201526002602482015261189b60f11b60448201526064016109f9565b6001600160a01b038616600090815260aa6020908152604091829020825160c081018452600180825292810192909252918101879052819060608101611c128842613f3e565b8152600060208083018290526040805160a080820183528482528184018590528183018590526060808301869052608080840187905296840192909252875460018181018a5598865294849020875160099096020180549488015115156101000261ff00199615159690961661ffff19909516949094179490941783559085015195820195909555938301516002850155908201516003840155810151909190611cc29060048301906005613589565b5050506001600160a01b038716600090815260ab602052604081208054889290611ced908490613f3e565b909155505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611d31816129c5565b611d3a83612abf565b6001600160a01b038316600090815260ae602052604081208054849290611d62908490613f3e565b90915550611d709050612b18565b60a15460405163807ab4f760e01b81526001600160a01b0385811660048301529091169063807ab4f790602401602060405180830381600087803b158015611db757600080fd5b505af1158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def9190613f83565b5060a1546001600160a01b03848116600081815260ae6020526040908190205490516338c110ef60e21b81526004810192909252602482015291169063e30443bc906044015b600060405180830381600087803b158015611e4f57600080fd5b505af1158015611e63573d6000803e3d6000fd5b50505050505050565b6000611e77816129c5565b6001600160a01b038316600090815260a5602052604081208054849290611e9f908490613f3e565b90915550611ead9050612b18565b60a25460405163807ab4f760e01b81526001600160a01b0385811660048301529091169063807ab4f790602401602060405180830381600087803b158015611ef457600080fd5b505af1158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190613f83565b5060a2546001600160a01b03848116600081815260a56020526040908190205490516338c110ef60e21b81526004810192909252602482015291169063e30443bc90604401611e35565b600080600080611f8585612f6f565b93509350935093509193509193565b606060a6805480602002602001604051908101604052809291908181526020018280548015611fe257602002820191906000526020600020905b815481526020019060010190808311611fce575b5050505050905090565b609e8181548110611ffc57600080fd5b90600052602060002001600091509050805461090290613eed565b600054610100900460ff16158080156120375750600054600160ff909116105b806120515750303b158015612051575060005460ff166001145b6120b45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109f9565b6000805460ff1916600117905580156120d7576000805461ff0019166101001790555b6099546001600160a01b03161561211f5760405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081a5b9a5d60a21b60448201526064016109f9565b612127613315565b6121326000336129d2565b609880546001600160a01b03199081166001600160a01b03898116919091179092556097805482168a841617905560a18054821686841617905560a280548216858416179055609980548216888416179055609a80549091169186169190911790558015611e63576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b60006121ed816129c5565b60a8805463ffffffff868116600160201b0267ffffffffffffffff19909216888216179190911763ffffffff60401b1916600160401b918616919091021790556122378242613f3e565b60a9555050505050565b600061224c816129c5565b6099546001600160a01b0384811691161461228e5760405162461bcd60e51b8152602060048201526002602482015261313760f01b60448201526064016109f9565b61229783612abf565b6001600160a01b038316600090815260ae602090815260408083205460ab909252909120546122c7906001613f3e565b81146122fa5760405162461bcd60e51b8152602060048201526002602482015261313960f01b60448201526064016109f9565b6001600160a01b038416600090815260aa6020908152604091829020825160c081018452600180825292810183905292830191909152908190606081016123418742613f3e565b8152600060208083018290526040805160a080820183528482528184018590528183018590526060808301869052608080840187905296840192909252875460018181018a5598865294849020875160099096020180549488015115156101000261ff00199615159690961661ffff199095169490941794909417835590850151958201959095559383015160028501559082015160038401558101519091906123f19060048301906005613589565b5050506001600160a01b038516600090815260ab60205260408120805460019290610b20908490613f3e565b6000612428816129c5565b61243184612abf565b61243a83612abf565b6001600160a01b038416600090815260ab602090815260408083205460ae90925290912054839161246a91613f6c565b101561249d5760405162461bcd60e51b8152602060048201526002602482015261333960f01b60448201526064016109f9565b6099546001600160a01b03858116911614156124ff576001600160a01b038416600090815260ae602052604090205482106124ff5760405162461bcd60e51b8152602060048201526002602482015261034360f41b60448201526064016109f9565b6001600160a01b038416600090815260ae602052604081208054849290612527908490613f6c565b90915550506001600160a01b038316600090815260ae602052604081208054849290612554908490613f3e565b909155506125629050612b18565b60a15460405163807ab4f760e01b81526001600160a01b0386811660048301529091169063807ab4f790602401602060405180830381600087803b1580156125a957600080fd5b505af11580156125bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e19190613f83565b5060a15460405163807ab4f760e01b81526001600160a01b0385811660048301529091169063807ab4f790602401602060405180830381600087803b15801561262957600080fd5b505af115801561263d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126619190613f83565b5060a1546001600160a01b03858116600081815260ae6020526040908190205490516338c110ef60e21b81526004810192909252602482015291169063e30443bc90604401600060405180830381600087803b1580156126c057600080fd5b505af11580156126d4573d6000803e3d6000fd5b505060a1546001600160a01b03868116600081815260ae6020526040908190205490516338c110ef60e21b8152600481019290925260248201529116925063e30443bc9150604401600060405180830381600087803b15801561273657600080fd5b505af115801561274a573d6000803e3d6000fd5b5050505050505050565b60008281526065602052604090206001015461276f816129c5565b610b828383612a58565b60a6818154811061278957600080fd5b600091825260209091200154905081565b60006127a5816129c5565b6127ad612b18565b6099546001600160a01b0383811691161480156127cc5750600060a054115b156128615760985460a05460405163a9059cbb60e01b81526001600160a01b038581166004830152602482019290925291169063a9059cbb90604401602060405180830381600087803b15801561282257600080fd5b505af1158015612836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285a9190613f83565b50600060a0555b60a15460405163807ab4f760e01b81526001600160a01b0384811660048301529091169063807ab4f790602401602060405180830381600087803b1580156128a857600080fd5b505af11580156128bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e09190613f83565b5060a25460405163807ab4f760e01b81526001600160a01b0384811660048301529091169063807ab4f790602401602060405180830381600087803b15801561292857600080fd5b505af115801561293c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b829190613f83565b609d805461090290613eed565b6001600160a01b038116600090815260ad602052604081205460ff166129a957506001600160a01b0316600090815260a3602052604090205490565b506001600160a01b0316600090815260ae602052604090205490565b6129cf8133613382565b50565b6129dc8282611cfb565b610c015760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612a143390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b612a628282611cfb565b15610c015760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038116600090815260ad602052604090205460ff166129cf576001600160a01b038116600090815260a3602090815260408083205460ae83528184205560ad9091529020805460ff1916600117905550565b600060a954118015612b2b575060a95442115b15612b935760a88054609f8054600160201b80840463ffffffff90811690910267ffffffffffffffff19909216818516179190911763ffffffff60401b1916600160401b80850492909216909102179055600060a9556bffffffffffffffffffffffff191690555b60a0546098546040516370a0823160e01b8152306004820152600092916001600160a01b0316906370a082319060240160206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190613fa5565b612c1d9190613f6c565b905080612c275750565b609f54600090620f424090612c4990600160201b900463ffffffff1684613fbe565b612c539190613fdd565b609f54909150600090620f424090612c7890600160401b900463ffffffff1685613fbe565b612c829190613fdd565b90508015612e565760a260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd857600080fd5b505afa158015612cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d109190613fa5565b612d6e57609f54612d319063ffffffff80821691600160201b900416613fff565b609f5463ffffffff91821691612d4f91600160201b90041683613fbe565b612d599190613fdd565b612d639083613f3e565b915060009050612e56565b60985460a25460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb90604401602060405180830381600087803b158015612dbe57600080fd5b505af1158015612dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df69190613f83565b5060a254604051633243c79160e01b8152600481018390526001600160a01b0390911690633243c79190602401600060405180830381600087803b158015612e3d57600080fd5b505af1158015612e51573d6000803e3d6000fd5b505050505b60985460a15460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b158015612ea657600080fd5b505af1158015612eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ede9190613f83565b5060a154604051633243c79160e01b8152600481018490526001600160a01b0390911690633243c79190602401600060405180830381600087803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b50505050808284612f4a9190613f6c565b612f549190613f6c565b60a06000828254612f659190613f3e565b9091555050505050565b60a0546098546040516370a0823160e01b8152306004820152600092839283928392839290916001600160a01b03909116906370a082319060240160206040518083038186803b158015612fc257600080fd5b505afa158015612fd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffa9190613fa5565b6130049190613f6c565b609f54909150600090620f42409061302990600160201b900463ffffffff1684613fbe565b6130339190613fdd565b609f54909150600090620f42409061305890600160401b900463ffffffff1685613fbe565b6130629190613fdd565b90508061306f8385613f6c565b6130799190613f6c565b60a1546040516370a0823160e01b81526001600160a01b038b81166004830152929650600092909116906370a082319060240160206040518083038186803b1580156130c457600080fd5b505afa1580156130d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fc9190613fa5565b60a2546040516370a0823160e01b81526001600160a01b038c81166004830152929350600092909116906370a082319060240160206040518083038186803b15801561314757600080fd5b505afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f9190613fa5565b905081156132455760a154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156131cc57600080fd5b505afa1580156131e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132049190613fa5565b61321186620f4240613fbe565b61321b9190613fdd565b9050620f424061322b8483613fbe565b6132359190613fdd565b99506132418a89613f3e565b9750505b80156133095760a254604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561329057600080fd5b505afa1580156132a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c89190613fa5565b6132d585620f4240613fbe565b6132df9190613fdd565b9050620f42406132ef8383613fbe565b6132f99190613fdd565b98506133058989613f3e565b9750505b50505050509193509193565b600054610100900460ff166133805760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109f9565b565b61338c8282611cfb565b610c0157613399816133db565b6133a48360206133ed565b6040516020016133b5929190614027565b60408051601f198184030181529082905262461bcd60e51b82526109f991600401613815565b60606108e46001600160a01b03831660145b606060006133fc836002613fbe565b613407906002613f3e565b67ffffffffffffffff81111561341f5761341f613b70565b6040519080825280601f01601f191660200182016040528015613449576020820181803683370190505b509050600360fc1b8160008151811061346457613464613f56565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061349357613493613f56565b60200101906001600160f81b031916908160001a90535060006134b7846002613fbe565b6134c2906001613f3e565b90505b600181111561353a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106134f6576134f6613f56565b1a60f81b82828151811061350c5761350c613f56565b60200101906001600160f81b031916908160001a90535060049490941c936135338161409c565b90506134c5565b508315611a905760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109f9565b82600581019282156135b7579160200282015b828111156135b757825182559160200191906001019061359c565b506135c39291506136d2565b5090565b6040518060c001604052806000151581526020016000151581526020016000815260200160008152602001600081526020016136016136e7565b905290565b82805461361290613eed565b90600052602060002090601f01602090048101928261363457600085556135b7565b82601f1061364d57805160ff19168380011785556135b7565b828001600101855582156135b757918201828111156135b757825182559160200191906001019061359c565b8280548282559060005260206000209081019282156136c6579160200282015b828111156136c657825180516136b6918491602090910190613606565b5091602001919060010190613699565b506135c3929150613705565b5b808211156135c357600081556001016136d3565b6040518060a001604052806005906020820280368337509192915050565b808211156135c35760006137198282613722565b50600101613705565b50805461372e90613eed565b6000825580601f1061373e575050565b601f0160209004906000526020600020908101906129cf91906136d2565b60006020828403121561376e57600080fd5b81356001600160e01b031981168114611a9057600080fd5b80356001600160a01b038116811461379d57600080fd5b919050565b6000602082840312156137b457600080fd5b611a9082613786565b60005b838110156137d85781810151838201526020016137c0565b83811115611afd5750506000910152565b600081518084526138018160208601602086016137bd565b601f01601f19169290920160200192915050565b602081526000611a9060208301846137e9565b60008060006060848603121561383d57600080fd5b61384684613786565b95602085013595506040909401359392505050565b6000806040838503121561386e57600080fd5b61387783613786565b946020939093013593505050565b60006020828403121561389757600080fd5b5035919050565b600080604083850312156138b157600080fd5b823591506138c160208401613786565b90509250929050565b60006101408201905082511515825260208084015115158184015260408401516040840152606084015160608401526080840151608084015260a084015160a0840160005b600581101561392c5782518252918301919083019060010161390f565b5050505092915050565b803563ffffffff8116811461379d57600080fd5b60008060006060848603121561395f57600080fd5b61396884613936565b925061397660208501613936565b915061398460408501613936565b90509250925092565b600081518084526020808501808196508360051b8101915082860160005b858110156139d55782840389526139c38483516137e9565b988501989350908401906001016139ab565b5091979650505050505050565b600081518084526020808501945080840160005b83811015613a1857815163ffffffff16875295820195908201906001016139f6565b509495945050505050565b89516001600160a01b03168152600061024060208c0151613a4f60208501826001600160a01b03169052565b5060408c0151613a6a60408501826001600160a01b03169052565b5060608c0151613a8560608501826001600160a01b03169052565b5060808c0151608084015260a08c015160a084015260c08c015160c084015260e08c0151613abb60e085018263ffffffff169052565b506101008c81015163ffffffff81168583015250506101208c81015163ffffffff811685830152505080610140840152613af78184018c6137e9565b9050828103610160840152613b0c818b6137e9565b9050828103610180840152613b21818a6137e9565b90508281036101a0840152613b36818961398d565b90508281036101c0840152613b4b81886139e2565b6101e08401969096525050610200810192909252610220909101529695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715613ba957613ba9613b70565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613bd857613bd8613b70565b604052919050565b600082601f830112613bf157600080fd5b813567ffffffffffffffff811115613c0b57613c0b613b70565b613c1e601f8201601f1916602001613baf565b818152846020838601011115613c3357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613c6157600080fd5b8135602067ffffffffffffffff80831115613c7e57613c7e613b70565b8260051b613c8d838201613baf565b9384528581018301938381019088861115613ca757600080fd5b84880192505b85831015613ce357823584811115613cc55760008081fd5b613cd38a87838c0101613be0565b8352509184019190840190613cad565b98975050505050505050565b60008060408385031215613d0257600080fd5b823567ffffffffffffffff80821115613d1a57600080fd5b818501915085601f830112613d2e57600080fd5b613d36613b86565b806060840188811115613d4857600080fd5b845b81811015613d7d57803585811115613d625760008081fd5b613d6e8b828901613be0565b85525060209384019301613d4a565b5090955050506020850135915080821115613d9757600080fd5b50613da485828601613c50565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613de657835183529284019291840191600101613dca565b50909695505050505050565b60008060008060008060c08789031215613e0b57600080fd5b613e1487613786565b9550613e2260208801613786565b9450613e3060408801613786565b9350613e3e60608801613786565b9250613e4c60808801613786565b9150613e5a60a08801613786565b90509295509295509295565b60008060008060808587031215613e7c57600080fd5b613e8585613936565b9350613e9360208601613936565b9250613ea160408601613936565b9396929550929360600135925050565b600080600060608486031215613ec657600080fd5b613ecf84613786565b9250613edd60208501613786565b9150604084013590509250925092565b600181811c90821680613f0157607f821691505b60208210811415613f2257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115613f5157613f51613f28565b500190565b634e487b7160e01b600052603260045260246000fd5b600082821015613f7e57613f7e613f28565b500390565b600060208284031215613f9557600080fd5b81518015158114611a9057600080fd5b600060208284031215613fb757600080fd5b5051919050565b6000816000190483118215151615613fd857613fd8613f28565b500290565b600082613ffa57634e487b7160e01b600052601260045260246000fd5b500490565b600063ffffffff80831681851680830382111561401e5761401e613f28565b01949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161405f8160178501602088016137bd565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516140908160288401602088016137bd565b01602801949350505050565b6000816140ab576140ab613f28565b50600019019056fea2646970667358221220c25e047b9257b311d8a46354e68cd46269ed06782f7a4cfa5c954a0dfad9549064736f6c63430008090033