1 tx
8 calls
constructor
constructor(address _token, string _name, string _symbol, address _paymentReceiver, address _vestingCreator, uint256 _vTokenCost, bytes32 _root)
functions
allowance
purefunction allowance(address, address) pure returns (uint256)
approve
purefunction approve(address, uint256) pure returns (bool)
balanceOf
viewfunction balanceOf(address user) view returns (uint256)
computeReleasableAmount
viewfunction computeReleasableAmount(bytes32 vestingScheduleId) view returns (uint256)
computeVestingScheduleIdForAddressAndIndex
purefunction computeVestingScheduleIdForAddressAndIndex(address holder, uint256 index) pure returns (bytes32)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getVestingSchedule
viewfunction getVestingSchedule(bytes32 vestingScheduleId) view returns (tuple)
getVestingScheduleByAddressAndIndex
viewfunction getVestingScheduleByAddressAndIndex(address holder, uint256 index) view returns (tuple)
getWithdrawableAmount
viewfunction getWithdrawableAmount() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
holdersVestingScheduleCount
viewfunction holdersVestingScheduleCount(address) view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
paymentReceiver
viewfunction paymentReceiver() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
scheduleClaimed
viewfunction scheduleClaimed(address _beneficiary, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _slicePeriodSeconds, bool _revokable, uint256 _amount) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
transfer
purefunction transfer(address, uint256) pure returns (bool)
transferFrom
purefunction transferFrom(address, address, uint256) pure returns (bool)
underlyingToken
viewfunction underlyingToken() view returns (address)
VESTING_CREATOR_ROLE
viewfunction VESTING_CREATOR_ROLE() view returns (bytes32)
vTokenCost
viewfunction vTokenCost() view returns (uint256)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
claimSchedule
payablefunction claimSchedule(bytes32[] _proof, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _slicePeriodSeconds, bool _revokable, uint256 _amount) payable
createVestingSchedule
nonpayablefunction createVestingSchedule(address _beneficiary, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _slicePeriodSeconds, bool _revokable, uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
release
nonpayablefunction release(bytes32 vestingScheduleId, uint256 amount)
releaseAvailableTokensForHolder
nonpayablefunction releaseAvailableTokensForHolder(address holder)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revoke
nonpayablefunction revoke(bytes32 vestingScheduleId)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
setMerkleRoot
nonpayablefunction setMerkleRoot(bytes32 _root)
setPaused
nonpayablefunction setPaused(bool paused)
setPaymentReceiver
nonpayablefunction setPaymentReceiver(address _receiver)
setVTokenCost
nonpayablefunction setVTokenCost(uint256 _vTokenCost)
withdraw
nonpayablefunction withdraw(uint256 amount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
MerkleRootUpdated
event MerkleRootUpdated(bytes32 indexed merkleRoot)
Paused
event Paused(address account)
PaymentReceiverSet
event PaymentReceiverSet(address paymentReceiver)
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)
ScheduleCreated
event ScheduleCreated(bytes32 indexed scheduleId, address indexed beneficiary, uint256 amount, uint256 start, uint256 cliff, uint256 duration, uint256 slicePeriodSeconds, bool revokable)
ScheduleRevoked
event ScheduleRevoked(bytes32 indexed scheduleId)
TokensReleased
event TokensReleased(bytes32 indexed scheduleId, address indexed beneficiary, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
VTokenCostSet
event VTokenCostSet(uint256 vTokenCost)
errors
AlreadyClaimed
error AlreadyClaimed()
DecimalsError
error DecimalsError()
DurationShorterThanCliff
error DurationShorterThanCliff()
InsufficientReleasableTokens
error InsufficientReleasableTokens()
InsufficientTokensInContract
error InsufficientTokensInContract()
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
InvalidDuration
error InvalidDuration()
InvalidProof
error InvalidProof()
InvalidSchedule
error InvalidSchedule()
InvalidSlicePeriod
error InvalidSlicePeriod()
InvalidStart
error InvalidStart()
NotRevokable
error NotRevokable()
NotSupported
error NotSupported()
PayableInsufficient
error PayableInsufficient()
ScheduleWasRevoked
error ScheduleWasRevoked()
TooManySchedulesForBeneficiary
error TooManySchedulesForBeneficiary()
TransferToPaymentReceiverFailed
error TransferToPaymentReceiverFailed()
Unauthorized
error Unauthorized()
VestingScheduleCapacityReached
error VestingScheduleCapacityReached()
creation bytecode
0x60c060409080825234620004f157620032ed8038038091620000228285620005d8565b833981019060e081830312620004f15780516001600160a01b03928382168203620004f1576020838101516001600160401b039591929190868111620004f157826200007091870162000610565b918786015190878211620004f1576200008b91870162000610565b93606086015196828816809803620004f157608087015193838516809503620004f15760c060a089015198015196600193845f5560ff199586865416865533156200059457600380546001600160d01b03169055600480549092908281166200053c5790838f8c9360018060a01b031960a052339060a051161782555f805260028452805f20335f52845260ff815f2054161562000507575b82608052518094819363313ce56760e01b8352165afa908115620004fd575f91620004ba575b5060ff6012911603620004ac578251848111620003b5576005908154948786811c96168015620004a1575b8b8710146200048e5781908b601f978881116200043a575b50508b90878311600114620003d4575f92620003c8575b50505f19600383901b1c191690871b1781555b8251948511620003b557600654918683811c93168015620003aa575b8a841014620003975750908392918594821162000340575b505087918311600114620002da575f92620002ce575b50505f19600383901b1c191690821b176006555b7ff775c0bcd58c044bfc5fe4f46a6f6959085a968df72ead59815aea8f53313ee793845f5260028152885f20845f52815260ff895f2054161562000296575b5050505050600b55600d5560a051600e541617600e5551612c4890816200068582396080518181816114e00152818161153401528181611eae015261223e0152f35b845f5260028152885f2090845f5252875f209182541617905533915f80516020620032cd8339815191525f80a45f8080808062000254565b015190505f8062000201565b90849350601f1983169160065f52885f20925f5b8a82821062000329575050841162000310575b505050811b0160065562000215565b01515f1960f88460031b161c191690555f808062000301565b8385015186558897909501949384019301620002ee565b909192935060065f52885f209084808701821c8301938b88106200038d575b9187968993969594929601901c01915b8281106200037e5750620001eb565b5f81558695508791016200036f565b935082936200035f565b602290634e487b7160e01b5f525260245ffd5b92607f1692620001d3565b604182634e487b7160e01b5f525260245ffd5b015190505f80620001a4565b5f8581528d81208b9550929190601f198516908f5b82821062000422575050841162000409575b505050811b018155620001b7565b01515f1960f88460031b161c191690555f8080620003fb565b8385015186558d979095019493840193018f620003e9565b90919250845f5287825f2091818601871c830193861062000484575b918b918695949301871c01915b8281106200047557508d91506200018d565b5f81558594508b910162000463565b9250819262000456565b602284634e487b7160e01b5f525260245ffd5b95607f169562000175565b8b51631273be1d60e31b8152fd5b90508881813d8311620004f5575b620004d48183620005d8565b81010312620004f1575160ff81168103620004f15760ff6200014a565b5f80fd5b503d620004c8565b8d513d5f823e3d90fd5b5f805260028452805f20335f528452805f208a8c82541617905533335f5f80516020620032cd8339815191528180a462000124565b8e5162461bcd60e51b81528085018c9052602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b6064820152608490fd5b8c5162461bcd60e51b8152600481018a9052601e60248201527f416363657373436f6e74726f6c3a20302064656661756c742061646d696e00006044820152606490fd5b601f909101601f19168101906001600160401b03821190821017620005fc57604052565b634e487b7160e01b5f52604160045260245ffd5b919080601f84011215620004f15782516001600160401b038111620005fc57602090604051926200064b83601f19601f8501160185620005d8565b818452828287010111620004f1575f5b818110620006705750825f9394955001015290565b85810183015184820184015282016200065b56fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611b9357508063022d63fb14611b7657806305d6cc5914611abd57806306fdde0314611a00578063095ea7b3146109635780630aa6220b1461196e5780631128fed4146118d757806316c38b3c146117f257806317e289e9146115e257806318160ddd146115c557806323b872dd14611590578063248a9ca3146115635780632495a5991461151f5780632e1a7d4d146114a75780632f2ff15d14611395578063313ce5671461137a57806336568abe146111f95780634b866a2d146111c15780635c975abb1461119f57806362d5081d14610fa0578063634e93da14610eca578063649a5ec714610d3b57806365ebf99a14610cb457806366afd8ef14610c4d57806370a0823114610c155780637cb6475914610bcf57806384ef8ffc14610b805780638af104da14610ba85780638da5cb5b14610b8057806390be10cc14610b6657806391d1485414610b1d57806395d89b4114610a1f5780639ef346b414610a00578063a1eda53c1461099f578063a217fddf14610985578063a5205a0f14610968578063a9059cbb14610963578063b67383ad146108f6578063b75c7dc61461079a578063cb37f3b214610772578063cc8463c814610748578063cefc1429146104d6578063cf6eefb71461049d578063d547741f146103ed578063d602b9fd1461038c578063dd62ed3e1461035f578063e9a7fb5414610325578063ea1bb3d5146102845763f51321d714610237575f80fd5b346102805760403660031901126102805761027c61027061026b610259611c00565b610261611f35565b5060243590611e43565b611f78565b60405191829182611d60565b0390f35b5f80fd5b3461028057602036600319011261028057600435805f526008602052600260405f2001541561031357805f52600860205260ff600660405f2001541660038110156102ff576002146102ed575f52600860205260206102e560405f206120a7565b604051908152f35b604051632957a17760e01b8152600490fd5b634e487b7160e01b5f52602160045260245ffd5b604051631b742d9d60e31b8152600490fd5b34610280575f3660031901126102805760206040517ff775c0bcd58c044bfc5fe4f46a6f6959085a968df72ead59815aea8f53313ee78152f35b3461028057604036600319011261028057610378611c00565b50610381611c16565b5060206040515f8152f35b34610280575f366003190112610280576103a461229a565b600380546001600160d01b0319811690915560a01c65ffffffffffff166103c757005b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051095f80a1005b3461028057604036600319011261028057600435610409611c16565b81156104325781610430925f52600260205261042b600160405f20015461241c565b612978565b005b60405162461bcd60e51b815260206004820152603760248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c7920726560448201527f766f6b652064656661756c742061646d696e20726f6c650000000000000000006064820152608490fd5b34610280575f36600319011261028057600354604080516001600160a01b038316815260a09290921c65ffffffffffff16602083015290f35b34610280575f366003190112610280576003546001600160a01b0390811633036106f2576003546001600160a01b038116919060a01c65ffffffffffff1680151590816106e8575b50156106925760045491818316916001600160601b0360a01b8094166004555f80526020926002845260405f20815f52845260ff60405f205416610649575b50600454918183166105ef571692839116176004555f80526002815260405f20825f52815260ff60405f205416156105a2575b600380546001600160d01b0319169055005b5f80526002815260405f2090825f525260405f20600160ff1982541617905533905f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a48080610590565b60405162461bcd60e51b815260048101859052602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b6064820152608490fd5b5f80526002845260405f20815f52845260405f2060ff19815416905533905f7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8180a48461055d565b60405162461bcd60e51b815260206004820152602860248201527f416363657373436f6e74726f6c3a207472616e736665722064656c6179206e6f6044820152671d081c185cdcd95960c21b6064820152608490fd5b905042118361051e565b60405162461bcd60e51b815260206004820152602860248201527f416363657373436f6e74726f6c3a2070656e64696e672061646d696e206d75736044820152671d081858d8d95c1d60c21b6064820152608490fd5b34610280575f36600319011261028057602061076261200d565b65ffffffffffff60405191168152f35b34610280575f36600319011261028057600e546040516001600160a01b039091168152602090f35b3461028057602080600319360112610280576004356107b761229a565b805f5260088252600260405f2001541561031357805f526008825260ff600660405f2001541660038110156102ff576002146102ed57805f526008825260405f20600681019260ff845460a81c16156108e4575f9361084f8361083a7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef956120a7565b6108cd575b6005600482015491015490611e86565b9061085c82600754611e86565b60075560018060a01b039182825460081c16808852600a85526108838260408a2054611e86565b908852600a85526040882055600260ff1983541617809255604051957f3672cfd57034e1b586da46ec42eea7bc449af89ac0ff5a795c3c00a0d1ae64c98880a2855260081c1692a3005b6108df6108d9826120a7565b8761214d565b61083f565b604051633c34e69d60e01b8152600490fd5b346102805760203660031901126102805760043561091261229a565b662386f26fc100008111610951576020817f24bff375ede260cfaf30e7c295df97c39dc90f9e1bc761ab3d31a1be31f8ffa492600d55604051908152a1005b60405163162908e360e11b8152600490fd5b611d04565b34610280575f366003190112610280576020600d54604051908152f35b34610280575f3660031901126102805760206040515f8152f35b34610280575f366003190112610280576004548060d01c90811515806109f6575b156109ed5760a01c65ffffffffffff165b6040805165ffffffffffff928316815292909116602083015290f35b50505f806109d1565b50428210156109c0565b346102805760203660031901126102805761027c610270600435611f78565b34610280575f366003190112610280576040515f9060065460018160011c9060018316928315610b13575b6020938484108114610aff57838652908115610adf5750600114610a85575b61027c84610a7981880382611c95565b60405191829182611cd8565b60065f9081529294507ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b828410610acc575050508161027c93610a799282010193610a69565b8054858501870152928501928101610ab0565b60ff1916858501525050151560051b8201019150610a798161027c610a69565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610a4a565b3461028057604036600319011261028057610b36611c16565b6004355f52600260205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610280575f3660031901126102805760206102e5611e93565b34610280575f366003190112610280576004546040516001600160a01b039091168152602090f35b346102805760403660031901126102805760206102e5610bc6611c00565b60243590611e43565b3461028057602036600319011261028057600435610beb61229a565b80600b557f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9415f80a2005b34610280576020366003190112610280576001600160a01b03610c36611c00565b165f52600a602052602060405f2054604051908152f35b3461028057604036600319011261028057600435610c69612046565b805f526008602052600260405f2001541561031357805f52600860205260ff600660405f2001541660038110156102ff576002146102ed57610cae906024359061214d565b60015f55005b34610280576020366003190112610280576004356001600160a01b0381169081900361028057610ce261229a565b8015610d29576020817fccbdeb71dc680b2f0fd85f93e7ef0f70eda32a12b918c9715be07bb646360e59926001600160601b0360a01b600e541617600e55604051908152a1005b60405163e6c4247b60e01b8152600490fd5b346102805760203660031901126102805765ffffffffffff6004358181169182820361028057610d6961229a565b610d7242612a24565b9281610d7c61200d565b1680821115610e82575092610dc3917ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b94620697808082105f14610e7b57505b169061295e565b906004548060d01c80610e1f575b5050600480546001600160a01b031660a083901b65ffffffffffff60a01b161760d084901b6001600160d01b0319161790556040805165ffffffffffff9283168152919092166020820152a1005b421115610e5157600380546001600160d01b031660309290921b6001600160d01b0319169190911790555b8380610dd1565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec55f80a1610e4a565b9050610dbc565b03908111610eb6577ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b92610dc3919061295e565b634e487b7160e01b5f52601160045260245ffd5b3461028057602036600319011261028057610ee3611c00565b610eeb61229a565b7f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed66020610f28610f1a42612a24565b610f2261200d565b9061295e565b600380546001600160d01b031981166001600160a01b039690961695861760a084811b65ffffffffffff60a01b169190911790925565ffffffffffff911c8116610f77575b60405191168152a2005b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051095f80a1610f6d565b60e03660031901126102805767ffffffffffffffff806004351161028057366023600435011215610280576004356004013511610280573660246004356004013560051b6004350101116102805760a435151560a435036102805761100361251d565b61100b612046565b604080513360208201908152602435928201929092526044356060820152606435608082015260843560a082015260a435151560c082015260c43560e08201526110638161010081015b03601f198101835282611c95565b519020604051602081019182526020815261107d81611c5d565b519020600b548160043560040135611160575b0361114e57805f52600c60205260ff60405f20541661113c57670de0b6b3a76400006110c060c435600d54611dd3565b04340361112a575f8080803460018060a01b03600e54165af16110e1611e04565b5015611118575f52600c60205260405f20600160ff19825416179055610cae60c43560a43560843560643560443560243533612561565b60405163b609acc960e01b8152600490fd5b60405163a8d2a67960e01b8152600490fd5b604051630c8d9eab60e31b8152600490fd5b6040516309bde33960e01b8152600490fd5b602460043501905b602082359182811160051b9081521852602060405f2091019060246004356004013560051b60043501018210611168579050611090565b34610280575f36600319011261028057602060ff600154166040519015158152f35b34610280576020366003190112610280576001600160a01b036111e2611c00565b165f526009602052602060405f2054604051908152f35b3461028057604036600319011261028057600435611215611c16565b811580611363575b611298575b336001600160a01b0382160361123b5761043091612978565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b6003546001600160a01b038116159060a01c65ffffffffffff1681611351575b8161133e575b50156112db576003805465ffffffffffff60a01b19169055611222565b60405162461bcd60e51b815260206004820152603560248201527f416363657373436f6e74726f6c3a206f6e6c792063616e2072656e6f756e636560448201527420696e2074776f2064656c6179656420737465707360581b6064820152608490fd5b905065ffffffffffff42911610836112be565b65ffffffffffff8116151591506112b8565b506004546001600160a01b0382811691161461121d565b34610280575f36600319011261028057602060405160128152f35b34610280576040366003190112610280576004356113b1611c16565b811561144357815f5260026020526113cf600160405f20015461241c565b815f52600260205260405f209060018060a01b031690815f5260205260ff60405f205416156113fa57005b815f52600260205260405f20815f5260205260405f20600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4005b60405162461bcd60e51b815260206004820152603660248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c79206772604482015275616e742064656661756c742061646d696e20726f6c6560501b6064820152608490fd5b34610280576020366003190112610280576004356114c3612046565b6114cb61229a565b6114d3611e93565b811161150d57610cae90337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612830565b6040516314a83c1960e01b8152600490fd5b34610280575f366003190112610280576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610280576020366003190112610280576004355f5260026020526020600160405f200154604051908152f35b34610280576060366003190112610280576115a9611c00565b506115b2611c16565b50604051630280e1e560e61b8152600490fd5b34610280575f366003190112610280576020600754604051908152f35b34610280576115f036611d1d565b946115ff94919493929361251d565b335f9081527f5e7f50b591e8abfdbc0623971c6a86268c01c36f19b0c0e6de7435e7ae15c39d60209081526040909120549097907ff775c0bcd58c044bfc5fe4f46a6f6959085a968df72ead59815aea8f53313ee79060ff161561166857506104309750612561565b889061167333612a9c565b6040519061168082611c79565b604282528382019260603685378251156117de57603084538251600190600110156117de57607860218501536041905b80821161179b57505061175857611754936117049361173c9361172d604894604051978576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8a978801528251928391603789019101611cb7565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190611cb7565b01036028810184520182611c95565b60405162461bcd60e51b815291829160048301611cd8565b0390fd5b6064846040519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f811660108110156117de576f181899199a1a9b1b9c1cb0b131b232b360811b901a6117ca8487612a8b565b5360041c918015610eb6575f1901906116b0565b634e487b7160e01b5f52603260045260245ffd5b346102805760203660031901126102805760043580151581036102805761181761229a565b1561185c5761182461251d565b600160ff19815416176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60015460ff81161561189b5760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b34610280576119366110556118eb36611d1d565b604080516001600160a01b0390981660208901908152908801969096526060870194909452608086019290925260a0850152151560c084015260e08301529290918290610100820190565b519020604051602081019182526020815261195081611c5d565b5190205f52600c602052602060ff60405f2054166040519015158152f35b34610280575f3660031901126102805761198661229a565b6004548060d01c806119a4575b600480546001600160a01b03169055005b4211156119d657600380546001600160d01b031660309290921b6001600160d01b0319169190911790555b8080611993565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec55f80a16119cf565b34610280575f366003190112610280576040515f9060055460018160011c9060018316928315611ab3575b6020938484108114610aff57838652908115610adf5750600114611a595761027c84610a7981880382611c95565b60055f9081529294507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828410611aa0575050508161027c93610a799282010193610a69565b8054858501870152928501928101611a84565b91607f1691611a2b565b346102805760208060031936011261028057611ad7611c00565b90611ae0612046565b6001600160a01b0382811690338214159081611b67575b50611b56575f52600960205260405f2054905f5b828110611b185760015f55005b80611b2560019286611e43565b805f5260088452611b3860405f206120a7565b80611b46575b505001611b0b565b611b4f9161214d565b8580611b3e565b6040516282b42960e81b8152600490fd5b90506004541633141584611af7565b34610280575f366003190112610280576020604051620697808152f35b34610280576020366003190112610280576004359063ffffffff60e01b8216809203610280576020916318a4c3c360e11b8114908115611bd5575b5015158152f35b637965db0b60e01b811491508115611bef575b5083611bce565b6301ffc9a760e01b14905083611be8565b600435906001600160a01b038216820361028057565b602435906001600160a01b038216820361028057565b610120810190811067ffffffffffffffff821117611c4957604052565b634e487b7160e01b5f52604160045260245ffd5b6040810190811067ffffffffffffffff821117611c4957604052565b6080810190811067ffffffffffffffff821117611c4957604052565b90601f8019910116810190811067ffffffffffffffff821117611c4957604052565b5f5b838110611cc85750505f910152565b8181015183820152602001611cb9565b60409160208252611cf88151809281602086015260208686019101611cb7565b601f01601f1916010190565b34610280576040366003190112610280576115b2611c00565b60e0906003190112610280576004356001600160a01b038116810361028057906024359060443590606435906084359060a4358015158103610280579060c43590565b919091610120810192805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160038110156102ff5760c083015260e0818101516001600160a01b031690830152610100908101511515910152565b81810292918115918404141715610eb657565b8115611df0570490565b634e487b7160e01b5f52601260045260245ffd5b3d15611e3e573d9067ffffffffffffffff8211611c495760405191611e33601f8201601f191660200184611c95565b82523d5f602084013e565b606090565b906040519060208201926001600160601b03199060601b1683526034820152603481526060810181811067ffffffffffffffff821117611c495760405251902090565b91908203918211610eb657565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611f2a575f90611ef6575b611ef3915060075490611e86565b90565b506020813d602011611f22575b81611f1060209383611c95565b8101031261028057611ef39051611ee5565b3d9150611f03565b6040513d5f823e3d90fd5b60405190611f4282611c2c565b5f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b611f80611f35565b505f52600860205260405f20600660405191611f9b83611c2c565b8054835260018101546020840152600281015460408401526003810154606084015260048101546080840152600581015460a0840152015460ff81169060038210156102ff5760c0830191909152600881901c6001600160a01b031660e083015260a81c60ff16151561010082015290565b6004548060d01c801515908161203c575b50156120325760a01c65ffffffffffff1690565b5060035460d01c90565b905042115f61201e565b60025f54146120555760025f55565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91908201809211610eb657565b805442108015612133575b156120bc57505f90565b6001810154906002810154916120d2838261209a565b42106120ee5750611ef391506005600482015491015490611e86565b61212a611ef39361212561211b61210760059542611e86565b61211660038801548092611de6565b611dd3565b6004860154611dd3565b611de6565b91015490611e86565b5060ff60068201541660038110156102ff576002146120b2565b90815f526008602052604091825f2090600682019060018060a01b039283835460081c1633148460045416331490159081612291575b5061228157612191816120a7565b85116122705792602092612263865f98979460057fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef98016121d383825461209a565b90556121e182600754611e86565b60075584845460081c16808b52600a88526121ff838b8d2054611e86565b908b52600a8852898b205584845460081c1680917f62eb4bd96d9a7a66875a9f46f9f9d8bf6cfed3fe0578671b752301427d2a4f66898c51868152a3847f000000000000000000000000000000000000000000000000000000000000000016612830565b5460081c169351908152a3565b855163110c741b60e31b8152600490fd5b85516282b42960e81b8152600490fd5b9050155f612183565b335f9081527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b60209081526040918290205460ff16156122d8575050565b6122e133612a9c565b82515f916122ee82611c79565b604282528382019260603685378251156117de57603084538251600190600110156117de57607860218501536041905b8082116123d957505061239757611704938593612381936123726048946117549951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b978801528251928391603789019101611cb7565b01036028810185520183611c95565b5162461bcd60e51b815291829160048301611cd8565b60648486519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f811660108110156117de576f181899199a1a9b1b9c1cb0b131b232b360811b901a6124088487612a8b565b5360041c918015610eb6575f19019061231e565b805f52602060028152604091825f20335f52825260ff835f2054161561244157505050565b61244a33612a9c565b83519061245682611c79565b604282528382019260603685378251156117de57603084538251600190600110156117de57607860218501536041905b8082116124da57505061239757611704938593612381936123726048946117549951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b978801528251928391603789019101611cb7565b9091600f811660108110156117de576f181899199a1a9b1b9c1cb0b131b232b360811b901a6125098487612a8b565b5360041c918015610eb6575f190190612486565b60ff6001541661252957565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b91939492948661256f611e93565b1061150d57630114db004201804211610eb657821161281e5762093a8086108015612811575b6127ff57861580156127f2575b61095157801580156127e8575b6127d6578486106127c45760018060a01b0383165f5260209360098552606460405f205410156127b2576001600160a01b0384165f90815260098652604090208054905f198214610eb65760018201905561260a9085611e43565b91612615878561209a565b97604051986126238a611c2c565b89528689019785895260408a0199828b526060810199848b52608082018d815260a08301905f825260c084016001905260e084019c8d600160a01b600190038d16905261010085019e8f991515809a528d8b5f526008905260405f2094865186555160018601555160028501555160038401555160048301555160058201556006019060c0015160038110156102ff575f9b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9b60ff845491610100600160a81b03905160081b16928160a81b9051151560a81b1693169069ffffffffffffffffffff60b01b16171717905561271b8b60075461209a565b6007556001600160a01b0387168a52600a885260408a205461273e908c9061209a565b60018060a01b0388168b52600a895260408b2055604051958b87528887015260408601526060850152608084015260a08301527f6a4b2f118c5372782b73db45bdf54f9241247604d5414fef92818ca34ad7d46260c060018060a01b03851693a36040519485526001600160a01b031693a3565b6040516338cf51e560e01b8152600490fd5b60405163625a1c5760e11b8152600490fd5b60405163c36476e960e01b8152600490fd5b50603c81116125af565b50600160c81b87116125a2565b604051637616640160e01b8152600490fd5b50635dfc0f008611612595565b604051630e0d5b9360e21b8152600490fd5b60405163a9059cbb60e01b602082019081526001600160a01b0393841660248301526044808301959095529381526080810192909167ffffffffffffffff841183851017611c49576128cd945f92839286604052169361288f86611c5d565b602086527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a0820152519082855af16128c7611e04565b91612b81565b805190811591821561293b575b5050156128e357565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b819250906020918101031261028057602001518015158103610280575f806128da565b91909165ffffffffffff80809416911601918211610eb657565b90811580612a0d575b6129f8575b815f52600260205260405f209060018060a01b031690815f5260205260ff60405f2054166129b2575050565b815f52600260205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4565b600480546001600160a01b0319169055612986565b506004546001600160a01b03828116911614612981565b65ffffffffffff90818111612a37571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b9081518110156117de570160200190565b604051906060820182811067ffffffffffffffff821117611c4957604052602a82526020820160403682378251156117de57603090538151600190600110156117de57607860218401536029905b808211612b3e575050612afa5790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f811660108110156117de576f181899199a1a9b1b9c1cb0b131b232b360811b901a612b6d8486612a8b565b5360041c918015610eb6575f190190612aea565b91929015612be35750815115612b95575090565b3b15612b9e5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612bf65750805190602001fd5b60405162461bcd60e51b81529081906117549060048301611cd856fea26469706673582212201fe9c3ad27bf824d01c00c8f4ed8eaf44084bbbe30d8de55eff99a82a8f11e9964736f6c634300081700332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d000000000000000000000000c85f5dd5880d5162faf5fdb24d40845b7c8f976f00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000ab7ca711b0f5d0c6389679d68a4ca4aa4c736316000000000000000000000000ab7ca711b0f5d0c6389679d68a4ca4aa4c73631600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d4c6f6e6720434f564944204c6162732056657374696e6720546f6b656e000000000000000000000000000000000000000000000000000000000000000000000676434f5649440000000000000000000000000000000000000000000000000000