45 txs
50 calls
constructor
constructor(address bioToken_, address vbioToken_, address daoToken_, uint256 startTime_, uint256 endTime_, address treasury_, uint256 maxToDistribute_, uint256 maxToDistribute2_, uint256 minToRaise_, uint256 maxToRaise_)
functions
BIO_TOKEN
viewfunction BIO_TOKEN() view returns (address)
bioToDistribute
viewfunction bioToDistribute() view returns (uint256)
claimEnabled
viewfunction claimEnabled() view returns (bool)
DAO_TOKEN
viewfunction DAO_TOKEN() view returns (address)
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)
END_TIME
viewfunction END_TIME() view returns (uint256)
getExpectedClaimAmount
viewfunction getExpectedClaimAmount(address account) view returns (uint256 bioTokenAmount, uint256 vbioTokenAmount)
getRemainingTime
viewfunction getRemainingTime() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasEnded
viewfunction hasEnded() view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
hasStarted
viewfunction hasStarted() view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
MAX_BIO_TO_DISTRIBUTE
viewfunction MAX_BIO_TO_DISTRIBUTE() view returns (uint256)
MAX_DAO_RAISE
viewfunction MAX_DAO_RAISE() view returns (uint256)
MAX_VBIO_TO_DISTRIBUTE
viewfunction MAX_VBIO_TO_DISTRIBUTE() view returns (uint256)
MIN_DAO_RAISED_FOR_MAX_BIO
viewfunction MIN_DAO_RAISED_FOR_MAX_BIO() view returns (uint256)
owner
viewfunction owner() view returns (address)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
START_TIME
viewfunction START_TIME() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokensToDistribute
viewfunction tokensToDistribute() view returns (uint256)
totalRaised
viewfunction totalRaised() view returns (uint256)
treasury
viewfunction treasury() view returns (address)
unsoldTokensWithdrew
viewfunction unsoldTokensWithdrew() view returns (bool)
userInfo
viewfunction userInfo(address) view returns (uint256 contribution, bool hasClaimed)
VBIO_TOKEN
viewfunction VBIO_TOKEN() view returns (address)
vbioToDistribute
viewfunction vbioToDistribute() view returns (uint256)
vestingCliff
viewfunction vestingCliff() view returns (uint256)
vestingDuration
viewfunction vestingDuration() view returns (uint256)
vestingIsRevocable
viewfunction vestingIsRevocable() view returns (bool)
vestingSlicePerSecond
viewfunction vestingSlicePerSecond() view returns (uint256)
vestingStart
viewfunction vestingStart() view returns (uint256)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
claim
nonpayablefunction claim()
emergencyWithdrawBIO
nonpayablefunction emergencyWithdrawBIO()
emergencyWithdrawFunds
nonpayablefunction emergencyWithdrawFunds(address token, uint256 amount)
enableClaim
nonpayablefunction enableClaim()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
setCliff
nonpayablefunction setCliff(uint256 cliff_)
setDuration
nonpayablefunction setDuration(uint256 duration_)
setIsRevocable
nonpayablefunction setIsRevocable(bool isRevocable_)
setPause
nonpayablefunction setPause(bool value)
setSlicePerSecond
nonpayablefunction setSlicePerSecond(uint256 slicePerSecond_)
setVestingStart
nonpayablefunction setVestingStart(uint256 start_)
swap
nonpayablefunction swap(uint256 amount)
withdrawUnsoldTokens
nonpayablefunction withdrawUnsoldTokens()
events
Claim
event Claim(address indexed user, uint256 amount, uint256 amount2)
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
EmergencyWithdraw
event EmergencyWithdraw(address token, uint256 amount)
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)
SetPause
event SetPause(bool status)
Swap
event Swap(address indexed user, uint256 amount)
errors
AlreadyClaimed
error AlreadyClaimed()
CapReached
error CapReached()
InvalidConstructorParameters
error InvalidConstructorParameters()
InvalidScheduleParameter
error InvalidScheduleParameter()
MinRaiseReached
error MinRaiseReached()
SaleInactive
error SaleInactive()
SaleNotClaimable
error SaleNotClaimable()
SaleNotEnded
error SaleNotEnded()
SaleNotFilled
error SaleNotFilled()
SalePause
error SalePause()
SaleStarted
error SaleStarted()
TokensAlreadyWithdrawn
error TokensAlreadyWithdrawn()
TransferFailed
error TransferFailed()
ZeroAmount
error ZeroAmount()
ZeroContribution
error ZeroContribution()
creation bytecode
0x346200042357620032b2388190036101c0601f8201601f19168101906001600160401b0382119082101762000428576101409282916040526101c0391262000423576200004e6101c06200043e565b6101e051906001600160a01b03821682036200042357620000716102006200043e565b6102205161024051610260519291906001600160a01b0384168403620004235760c06101c001519160e06101c00151936101006101c00151976101206101c00151976000600181553315620003de57600280546001600160d01b031690556003546001600160a01b03811662000384576001600160a01b0319163390811760035581805260016020908152604080842092845291905281205460ff161562000334575b506301e133806009556001600a5560ff19600b5416600b5542841062000322578484101562000322576001600160a01b0388161562000322576001600160a01b0381161562000322576001600160a01b0382161562000322576001600160a01b03831615620003225760805260a05260c05260e05280610100526008556101a09283526101205261014052610160928352811562000317575b61018091825260405191612e5e938462000454853960805184818161052201528181610ac101528181610ba9015281816111c301526119fd015260a051848181610fd7015281816112520152611a9e015260c0518481816113d40152612035015260e0518481816102bf01528181610333015281816104af01528181610f7d01528181611176015281816115a001528181611d2901526121bc0152610100518481816103df0152818161099a0152818161150c0152818161197801528181611d6701526125ef0152610120518481816104ea01528181610a420152818161121b0152818161259e01526125c901526101405184818161041c01528181610a21015281816111fa0152818161244f015261247a0152518381816109c301528181612116015281816124250152612574015251828181610cdd015281816112c50152611cec015251818181610a8101528181610c170152818161107e01528181611385015261192c0152f35b6000199150620001ad565b604051632be8eb6f60e11b8152600490fd5b80805260016020526040812033825260205260408120600160ff19825416179055339033907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a43862000114565b60405162461bcd60e51b815260206004820152602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b6064820152608490fd5b60405162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20302064656661756c742061646d696e00006044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203620004235756fe6080604081815260048036101561001557600080fd5b600092833560e01c90816301ffc9a7146122c457508063022d63fb146122a65780630aa6220b14612211578063126f854d1461219d5780631514617e1461217e5780631959a002146121395780631b288155146120fe578063248a9ca3146120d5578063254800d4146120b65780632866ed211461208f57806328dae6e3146120645780632b5827a9146120205780632f2ff15d14611f0b57806336568abe14611d8a57806337ba682d14611d4f57806344691f7e14611d115780634e71d92d1461195b57806361d027b31461191757806362e36ada146118f3578063634e93da14611816578063649a5ec71461167157806367a80efd1461164357806384ef8ffc146115f65780638990ce121461161f5780638da5cb5b146115f65780638e865bc3146115d957806390651b141461157757806391d148541461153257806394b918de1461115c578063a1eda53c146110e6578063a2030354146110c7578063a217fddf146110ac578063a2fddd6f1461102d578063b187bd2614611006578063b8aae78014610fc2578063bbe6406b14610f5e578063bedb86fb14610d00578063bfd8770114610cc5578063c0d284ab14610b7a578063c5c4744c14610b5b578063c8bdbfb61461097e578063cc8463c814610952578063cefc1429146106d2578063cf6eefb714610699578063d1aa497414610669578063d547741f146105b9578063d602b9fd14610551578063d6e070d71461050d578063d7f83eeb146104d2578063ddaa26ad14610497578063e63ab1e91461045c578063ea26b5ec1461043f578063eb054a3a14610404578063ecb70fb7146103c6578063efb98bcf146103a2578063f3640e741461037f578063f6be71d1146103145763ff4d1f25146102a157600080fd5b34610310576020366003190112610310578035916102bd612627565b7f00000000000000000000000000000000000000000000000000000000000000004210156103035782600954106102f657505060075580f35b5163086d0b7f60e01b8152fd5b5163912ee23d60e01b8152fd5b8280fd5b503461031057602036600319011261031057803591610331612627565b7f00000000000000000000000000000000000000000000000000000000000000004210156103035762093a8083108015610372575b6102f657505060095580f35b50635dfc0f008311610366565b50503461039e578160031936011261039e576020906007549051908152f35b5080fd5b50503461039e578160031936011261039e576020906103bf6125ed565b9051908152f35b50503461039e578160031936011261039e5760209051427f000000000000000000000000000000000000000000000000000000000000000011158152f35b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50503461039e578160031936011261039e576020906103bf61256f565b50503461039e578160031936011261039e57602090517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b50503461039e578160031936011261039e57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b83346105b657806003193601126105b65761056a612627565b600280546001600160d01b0319811690915560a01c65ffffffffffff1661058e5780f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109600080a180f35b80fd5b5082903461039e578260031936011261039e5780356105d6612348565b91811561060057506105f860018495836105fd965281602052862001546127ef565b6129fd565b80f35b608490602086519162461bcd60e51b8352820152603760248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c7920726560448201527f766f6b652064656661756c742061646d696e20726f6c650000000000000000006064820152fd5b8284346105b65760203660031901126105b6575061068d610688612332565b6124ec565b82519182526020820152f35b8284346105b657806003193601126105b6575060025481516001600160a01b038216815260a09190911c65ffffffffffff166020820152f35b5090346103105782600319360112610310576002546001600160a01b039290831633036108ff576002546001600160a01b038116919060a01c65ffffffffffff1680151590816108f5575b50156108a15760035493808516926bffffffffffffffffffffffff60a01b80961660035560008052602093600185528560002081600052855260ff866000205416610855575b50600354928284166107fd575016938491161760035560008052600181528160002083600052815260ff826000205416156107ad575b600280546001600160d01b03191690558380f35b600080526001815281600020908360005252600020600160ff19825416179055339060007f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4388080610799565b855162461bcd60e51b8152908101859052602c60248201527f416363657373436f6e74726f6c3a2064656661756c742061646d696e20616c7260448201526b1958591e4819dc985b9d195960a21b6064820152608490fd5b6000805260018552856000208160005285528560002060ff198154169055339060007ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8180a438610763565b608490602084519162461bcd60e51b8352820152602860248201527f416363657373436f6e74726f6c3a207472616e736665722064656c6179206e6f6044820152671d081c185cdcd95960c21b6064820152fd5b905042113861071d565b6020608492519162461bcd60e51b8352820152602860248201527f416363657373436f6e74726f6c3a2070656e64696e672061646d696e206d75736044820152671d081858d8d95c1d60c21b6064820152fd5b50503461039e578160031936011261039e5760209065ffffffffffff6109766124b3565b915191168152f35b5034610310578260031936011261031057610997612627565b427f000000000000000000000000000000000000000000000000000000000000000011610b4d576005547f00000000000000000000000000000000000000000000000000000000000000001115610b3f5760065460ff8116610b3057610abc9291610a6b602092610a66610a0961256f565b6001610a13612420565b9360ff191617600655610a667f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061235e565b6124a6565b835163a9059cbb60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692810192835260208301919091529384918291604090910190565b0381867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1908115610b275750610afb575080f35b610b1c9060203d602011610b20575b610b1481836123b3565b8101906123d5565b5080f35b503d610b0a565b513d84823e3d90fd5b5090516301e31aa960e61b8152fd5b905163309bdbd960e11b8152fd5b9051639d98b04b60e01b8152fd5b50503461039e578160031936011261039e576020906005549051908152f35b5034610310578260031936011261031057610b93612627565b81516370a0823160e01b815230918101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811690602083602481855afa928315610cbb578593610c62575b507f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969593610c3c84610c5c937f00000000000000000000000000000000000000000000000000000000000000009061296b565b516001600160a01b03909216825260208201929092529081906040820190565b0390a180f35b9092506020813d602011610cb3575b81610c7e602093836123b3565b81010312610cae5751917f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd9695610bea565b600080fd5b3d9150610c71565b84513d87823e3d90fd5b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5082903461039e576020908160031936011261031057803590811515809203610f5a577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a80600052600190600185528660002033600052855260ff87600020541615610dab575050507f140eb9f8b591138e129e4caf389c92df4f0545b902523eee9e63153ecdb2026e929360065462ff00008360101b169062ff000019161760065551908152a180f35b9194509150610db933612c87565b855191610dc583612381565b60428352848301936060368637835115610f455760308553835160011015610f4557607860218501536041905b808211610ed8575050610e9657610e92938693610e7e93610e6f604894610e469a519a8576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8d9788015282519283916037890191016129ae565b8401917001034b99036b4b9b9b4b733903937b6329607d1b6037840152518093868401906129ae565b010360288101875201856123b3565b5162461bcd60e51b815292839283016129d1565b0390fd5b50505080606493519262461bcd60e51b845283015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015610f30576f181899199a1a9b1b9c1cb0b131b232b360811b901a610f078487612c60565b53871c918015610f1b576000190190610df2565b601188634e487b7160e01b6000525260246000fd5b603289634e487b7160e01b6000525260246000fd5b603287634e487b7160e01b6000525260246000fd5b8380fd5b503461031057602036600319011261031057803591610f7b612627565b7f00000000000000000000000000000000000000000000000000000000000000004210156103035782158015610fb8575b6102f6575050600a5580f35b50603c8311610fac565b50503461039e578160031936011261039e57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50503461039e578160031936011261039e5760209060ff60065460101c1690519015158152f35b50503461039e578060031936011261039e577f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd969590611069612332565b610c5c60243592611078612627565b610c3c847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03861661296b565b50503461039e578160031936011261039e5751908152602090f35b50503461039e578160031936011261039e57602090600a549051908152f35b8284346105b657806003193601126105b6576003548060d01c9182151580611152575b15611144575065ffffffffffff6111409160a01c1691925b5165ffffffffffff928316815292909116602083015281906040820190565b0390f35b928392506111409150611121565b5042831015611109565b5091903461039e57602090816003193601126103105783357f000000000000000000000000000000000000000000000000000000000000000042108015611508575b6114f85781516370a0823160e01b815230868201526001600160a01b039084816024817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156114845786916114cb575b5061123f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061235e565b11611457578251633a69fed560e21b81527f000000000000000000000000000000000000000000000000000000000000000082169085818981855afa9081156114c157908691889161148e575b506044865180948193632474521560e21b83528c8301523060248301525afa908115611484578691611467575b501561145757600554917f0000000000000000000000000000000000000000000000000000000000000000809310156114475760ff60065460101c16611437576113016128fb565b80928115611427576005549161131783836124a6565b10611414575b505033855285845282852061133383825461235e565b90556113418260055461235e565b60055582518281527f562c219552544ec4c9d7a8eb850f80ea152973e315372bf4999fe7c953ea004f853392a28251936323b872dd60e01b908501523360248501527f000000000000000000000000000000000000000000000000000000000000000016604484015260648301526064825260a082019082821067ffffffffffffffff8311176113ff576113f8939450527f0000000000000000000000000000000000000000000000000000000000000000612b13565b6001815580f35b604185634e487b7160e01b6000525260246000fd5b61141f9293506124a6565b90388061131d565b8451631f2a200560e01b81528890fd5b835163b61de3df60e01b81528790fd5b8351636bf4c8e960e11b81528790fd5b8251632fa8763960e21b81528690fd5b61147e9150853d8711610b2057610b1481836123b3565b386112b9565b84513d88823e3d90fd5b82819392503d83116114ba575b6114a581836123b3565b810103126114b6578590513861128c565b8680fd5b503d61149b565b85513d89823e3d90fd5b90508481813d83116114f1575b6114e281836123b3565b81010312610cae5751386111f4565b503d6114d8565b8151630fe219dd60e21b81528590fd5b50427f0000000000000000000000000000000000000000000000000000000000000000111561119e565b50346103105781600319360112610310578160209361154f612348565b9235815260018552209060018060a01b0316600052825260ff81600020541690519015158152f35b503461031057602036600319011261031057803591821515809303610f5a5761159e612627565b7f000000000000000000000000000000000000000000000000000000000000000042101561030357505060ff8019600b5416911617600b5580f35b50503461039e578160031936011261039e576020906103bf612420565b50503461039e578160031936011261039e5760035490516001600160a01b039091168152602090f35b50503461039e578160031936011261039e5760209060ff6006541690519015158152f35b50503461039e578160031936011261039e576020906103bf61166361256f565b61166b612420565b9061235e565b5091903461039e57602036600319011261039e57823565ffffffffffff80821690818303611812576116a1612627565b6116aa42612aac565b91816116b46124b3565b16808211156117c557507ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b9596509161170291610c5c93620697808082106000146117be57505b1690612951565b926003548060d01c80611761575b5050600380546001600160a01b031660a085901b65ffffffffffff60a01b161760d086901b6001600160d01b0319161790555165ffffffffffff928316815292909116602083015281906040820190565b42111561179357600280546001600160d01b031660309290921b6001600160d01b0319169190911790555b3880611710565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec5600080a161178c565b90506116fb565b039081116117ff577ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b949550610c5c916117029190612951565b634e487b7160e01b855260118652602485fd5b8480fd5b50503461039e57602036600319011261039e577f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed66020611854612332565b61185c612627565b61187661186842612aac565b6118706124b3565b90612951565b600280546001600160d01b031981166001600160a01b039490941693841760a084811b65ffffffffffff60a01b16919091179092559295919265ffffffffffff92911c82166118c9575b5191168152a280f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a9605109600080a16118c0565b50503461039e578160031936011261039e5760209060ff600b541690519015158152f35b50503461039e578160031936011261039e57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5090346103105782600319360112610310576119756128fb565b427f00000000000000000000000000000000000000000000000000000000000000001180611ce6575b611cd95760ff60065460081c1615611ccc57338352602091808352818420600554158015611cc3575b611cb45760010180549360ff8516611ca4576119e2336124ec565b85516370a0823160e01b815230868201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116989295909392909185816024818d5afa908115611c9a578b91611c69575b50611a47878561235e565b11611c595760019060ff1916179055855181815284848201527f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf7873392a28281611bde575b505082611a9c575b866001815580f35b7f00000000000000000000000000000000000000000000000000000000000000001694818551809263a9059cbb60e01b8252818a81611af3898d8c840160209093929193604081019460018060a01b031681520152565b03925af19182156114c1578792611bc1575b505015611bb2578490600854906007549160095496600a549060ff600b541693813b156114b65760e49487938a519b8c9889976317e289e960e01b8952338d8a01526024890152604488015260648701526084860152151560a485015260c48401525af18015611ba857611b7c575b808080611a94565b67ffffffffffffffff8311611b95575052388080611b74565b634e487b7160e01b845260419052602483fd5b82513d86823e3d90fd5b5090516312171d8360e31b8152fd5b611bd79250803d10610b2057610b1481836123b3565b3880611b05565b865163a9059cbb60e01b8152338782019081526020810193909352918290819060400103818b8b5af1908115611c4f578891611c32575b5015611c22573882611a8c565b84516312171d8360e31b81528490fd5b611c499150833d8511610b2057610b1481836123b3565b38611c15565b86513d8a823e3d90fd5b87516312171d8360e31b81528790fd5b90508581813d8311611c93575b611c8081836123b3565b81010312611c8f575138611a3c565b8a80fd5b503d611c76565b89513d8d823e3d90fd5b8351630c8d9eab60e31b81528390fd5b509051631570544960e31b8152fd5b508054156119c7565b5163c9556a9160e01b8152fd5b51639d98b04b60e01b8152fd5b506005547f00000000000000000000000000000000000000000000000000000000000000001161199e565b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000004210158152f35b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b5082903461039e578260031936011261039e578035611da7612348565b91811580611ef4575b611e2b575b336001600160a01b03841603611dd05750906105fd916129fd565b608490602086519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b6002546001600160a01b038116159060a01c65ffffffffffff1681611ee2575b81611ecf575b5015611e6e576002805465ffffffffffff60a01b19169055611db5565b608490602086519162461bcd60e51b8352820152603560248201527f416363657373436f6e74726f6c3a206f6e6c792063616e2072656e6f756e636560448201527420696e2074776f2064656c6179656420737465707360581b6064820152fd5b905065ffffffffffff4291161086611e51565b65ffffffffffff811615159150611e4b565b506003546001600160a01b03848116911614611db0565b5034610310578160031936011261031057803591611f27612348565b918315611fbf57508284526001602052611f46600182862001546127ef565b828452600160209081528185206001600160a01b039093168086529290528084205460ff1615611f74578380f35b82845260016020528084208285526020528320600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8480a43880808380f35b6020608492519162461bcd60e51b8352820152603660248201527f416363657373436f6e74726f6c3a2063616e2774206469726563746c79206772604482015275616e742064656661756c742061646d696e20726f6c6560501b6064820152fd5b50503461039e578160031936011261039e57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b83346105b657806003193601126105b65761207d612627565b61010061ff0019600654161760065580f35b50503461039e578160031936011261039e5760209060ff60065460081c1690519015158152f35b50503461039e578160031936011261039e576020906008549051908152f35b503461031057602036600319011261031057816020936001923581528285522001549051908152f35b50503461039e578160031936011261039e57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461031057602036600319011261031057909182916001600160a01b0361215f612332565b1682526020522060ff6001825492015416825191825215156020820152f35b50503461039e578160031936011261039e576020906009549051908152f35b5034610310576020366003190112610310578035916121ba612627565b7f000000000000000000000000000000000000000000000000000000000000000042101561030357630114db0042018042116121fe5783116102f657505060085580f35b634e487b7160e01b855260118352602485fd5b83346105b657806003193601126105b65761222a612627565b6003548060d01c8061224a575b600380546001600160a01b031690558280f35b42111561227c57600280546001600160d01b031660309290921b6001600160d01b0319169190911790555b8180612237565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec58180a1612275565b50503461039e578160031936011261039e5760209051620697808152f35b92505034610310576020366003190112610310573563ffffffff60e01b811680910361031057602092506318a4c3c360e11b8114908115612307575b5015158152f35b637965db0b60e01b811491508115612321575b5038612300565b6301ffc9a760e01b1490503861231a565b600435906001600160a01b0382168203610cae57565b602435906001600160a01b0382168203610cae57565b9190820180921161236b57565b634e487b7160e01b600052601160045260246000fd5b6080810190811067ffffffffffffffff82111761239d57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761239d57604052565b90816020910312610cae57518015158103610cae5790565b8181029291811591840414171561236b57565b811561240a570490565b634e487b7160e01b600052601260045260246000fd5b6005547f00000000000000000000000000000000000000000000000000000000000000008181116124715750507f000000000000000000000000000000000000000000000000000000000000000090565b61249e6124a3927f00000000000000000000000000000000000000000000000000000000000000006123ed565b612400565b90565b9190820391821161236b57565b6003548060d01c80151590816124e2575b50156124d85760a01c65ffffffffffff1690565b5060025460d01c90565b90504211386124c4565b906005549182156125665760018060a01b03166000526004602052604060002060405192604084019184831067ffffffffffffffff84111761239d5761255c8261249e61249e936124a39660405260ff6001825492838c52015416151560208a015261255661256f565b906123ed565b9451612556612420565b50600091508190565b6005547f00000000000000000000000000000000000000000000000000000000000000008181116125c05750507f000000000000000000000000000000000000000000000000000000000000000090565b61249e6124a3927f00000000000000000000000000000000000000000000000000000000000000006123ed565b7f000000000000000000000000000000000000000000000000000000000000000042811115612621576124a39042906124a6565b50600090565b3360009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602090815260408083205490929060019060ff161561266d5750505050565b61267633612c87565b8285519261268384612381565b604284528584019460603687378451156127db57603086538451600110156127db5790607860218601536041915b81831161276d5750505061272b57610e4693859361271593612706604894610e929951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b9788015282519283916037890191016129ae565b010360288101855201836123b3565b5162461bcd60e51b8152918291600483016129d1565b60648486519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f811660108110156127c7576f181899199a1a9b1b9c1cb0b131b232b360811b901a61279d8588612c60565b5360041c9280156127b3576000190191906126b1565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b600081815260019060209160018352604093848320338452845260ff85842054161561281c575050505050565b61282533612c87565b9085519261283284612381565b604284528584019460603687378451156127db57603086538451600110156127db5790607860218601536041915b8183116128b55750505061272b57610e4693859361271593612706604894610e929951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b9788015282519283916037890191016129ae565b909192600f811660108110156127c7576f181899199a1a9b1b9c1cb0b131b232b360811b901a6128e58588612c60565b5360041c9280156127b357600019019190612860565b60026000541461290c576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b91909165ffffffffffff8080941691160191821161236b57565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526129ac916129a76064836123b3565b612b13565b565b60005b8381106129c15750506000910152565b81810151838201526020016129b1565b604091602082526129f181518092816020860152602086860191016129ae565b601f01601f1916010190565b90811580612a95575b612a80575b6000918083526001602052604083209160018060a01b03169182845260205260ff604084205416612a3b57505050565b8083526001602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b600380546001600160a01b0319169055612a0b565b506003546001600160a01b03828116911614612a06565b65ffffffffffff90818111612abf571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608490fd5b6040805167ffffffffffffffff94936001600160a01b0390931692909182018581118382101761239d576040526020928383527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564848401526000808386829551910182855af1903d15612c4f573d968711612c3b57612bb394959660405190612ba588601f19601f84011601836123b3565b81528093873d92013e612d97565b805190828215928315612c23575b50505015612bcc5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b612c3393508201810191016123d5565b388281612bc1565b634e487b7160e01b83526041600452602483fd5b9150612bb393949550606091612d97565b908151811015612c71570160200190565b634e487b7160e01b600052603260045260246000fd5b604051906060820182811067ffffffffffffffff82111761239d57604052602a8252602082016040368237825115612c715760309053815160019060011015612c7157607860218401536029905b808211612d29575050612ce55790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015612d82576f181899199a1a9b1b9c1cb0b131b232b360811b901a612d588486612c60565b5360041c918015612d6d576000190190612cd5565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b91929015612df95750815115612dab575090565b3b15612db45790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612e0c5750805190602001fd5b60405162461bcd60e51b8152908190610e9290600483016129d156fea264697066735822122074a966c6248d1e1cffc8ad5845eac43d16cc9fadd31ada4c472ba632cb43ded364736f6c63430008170033000000000000000000000000cb1592591996765ec0efc1f92599a19767ee5ffa0000000000000000000000000d2adb4af57cdac02d553e7601456739857d2ef4000000000000000000000000f4308b0263723b121056938c2172868e408079d00000000000000000000000000000000000000000000000000000000066f9b1c0000000000000000000000000000000000000000000000000000000006735f450000000000000000000000000d9c6ee1547fd6d48f8872dd866473893bbe8a1ab000000000000000000000000000000000000000000012c48ea63ca9c18bc0000000000000000000000000000000000000000000000012c48ea63ca9c18bc0000000000000000000000000000000000000000000000001911139cf9c495a90000000000000000000000000000000000000000000000001d87f8047d2767110000