0 txs
76 calls
constructor
No constructor.
functions
accountInfo
viewfunction accountInfo(address) view returns (uint256 payout, uint256 depositAmount, uint256 payoutClaimed, uint256 vesting, uint256 vestingTerm, uint256 vestingStartTimestamp, uint256 lastClaimTimestamp, uint256 truePricePaid)
accountStatus
viewfunction accountStatus(address) view returns (bool hasDeposited, bool hasRedeemed, bool hasRefunded, bool hasRedeemedOversubscription)
allIssuedBillIds
viewfunction allIssuedBillIds() view returns (uint256[])
AUTOMATION_ROLE
viewfunction AUTOMATION_ROLE() view returns (bytes32)
billInfo
viewfunction billInfo(uint256) view returns (uint256 payout, uint256 depositAmount, uint256 payoutClaimed, uint256 vesting, uint256 vestingTerm, uint256 vestingStartTimestamp, uint256 lastClaimTimestamp, uint256 truePricePaid)
billNft
viewfunction billNft() view returns (address)
billPrice
viewfunction billPrice() view returns (uint256 price_)
claimablePayout
viewfunction claimablePayout(uint256 _billId) view returns (uint256 claimablePayout_)
currentFee
viewfunction currentFee() view returns (uint256 currentFee_)
customTreasury
viewfunction customTreasury() view returns (address)
DAO
viewfunction DAO() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
excessPayoutTokenCollected
viewfunction excessPayoutTokenCollected() view returns (bool)
feeInPayout
viewfunction feeInPayout() view returns (bool)
feeTiers
viewfunction feeTiers(uint256) view returns (uint256 tierCeilings, uint256 fees)
feeTo
viewfunction feeTo() view returns (address)
finalized
viewfunction finalized() view returns (bool)
getBillIds
viewfunction getBillIds(address user) view returns (uint256[])
getBillIdsInRange
viewfunction getBillIdsInRange(address user, uint256 start, uint256 end) view returns (uint256[])
getBillInfo
viewfunction getBillInfo(uint256 billId) view returns (tuple)
getFeeTierLength
viewfunction getFeeTierLength() view returns (uint256 tierLength_)
getMaxRaise
viewfunction getMaxRaise() view returns (uint256)
getMaxTotalPayout
viewfunction getMaxTotalPayout() view returns (uint256)
getOversubscriptionAmount
viewfunction getOversubscriptionAmount(uint256 _amount) view returns (uint256 _oversubscriptionAmount)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getUnsoldPayoutToken
viewfunction getUnsoldPayoutToken() view returns (uint256)
getUserAllocation
viewfunction getUserAllocation(uint256 _amount) view returns (uint256)
getUserInfo
viewfunction getUserInfo(address user) view returns (tuple)
getUserOversubscriptionAmount
viewfunction getUserOversubscriptionAmount(address _user) view returns (uint256)
hasRedeemed
viewfunction hasRedeemed(address _user) view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MAX_FEE_TIERS
viewfunction MAX_FEE_TIERS() view returns (uint8)
MAX_FEE
viewfunction MAX_FEE() view returns (uint256)
maxPoints
viewfunction maxPoints() view returns (uint256)
minPoints
viewfunction minPoints() view returns (uint256)
OPERATIONS_ROLE
viewfunction OPERATIONS_ROLE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
payoutFor
viewfunction payoutFor(uint256 _amount) view returns (uint256 _payout, uint256 _fee, uint256 _oversubscriptionAmount)
payoutForUser
viewfunction payoutForUser(address _user) view returns (uint256 _payout, uint256 _fee, uint256 _oversubscriptionAmount)
payoutToken
viewfunction payoutToken() view returns (address)
pendingPayout
viewfunction pendingPayout(uint256 _billId) view returns (uint256 pendingPayout_)
pendingVesting
viewfunction pendingVesting(uint256 _billId) view returns (uint256 pendingVesting_)
pointsLens
viewfunction pointsLens() view returns (address)
principalToken
viewfunction principalToken() view returns (address)
redeemerApproved
viewfunction redeemerApproved(address, address) view returns (bool)
saleActive
viewfunction saleActive() view returns (bool)
startVestingTimestamp
viewfunction startVestingTimestamp() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
terms
viewfunction terms() view returns (uint256 endTime, uint256 startTime, uint256 vestingTerm, uint256 price, bool oversubscription, uint16 initialRelease, uint256 maxRaise, uint256 maxTotalPayout, uint256 refundPeriod, uint256 refundFee)
totalPrincipalBilled
viewfunction totalPrincipalBilled() view returns (uint256)
totalPrincipalRefunded
viewfunction totalPrincipalRefunded() view returns (uint256)
trueBillPrice
viewfunction trueBillPrice() view returns (uint256 price_)
userBillIds
viewfunction userBillIds() view returns (uint256[])
VERSION
viewfunction VERSION() view returns (string)
vestedPayoutAtTime
viewfunction vestedPayoutAtTime(uint256 _billId, uint256 _timestamp) view returns (uint256 vestedPayout_)
vestingCurve
viewfunction vestingCurve() view returns (address)
vestingPayout
viewfunction vestingPayout(uint256 _billId) view returns (uint256 vestingPayout_)
vestingPeriod
viewfunction vestingPeriod(uint256 _billId) view returns (uint256 vestingStart_, uint256 vestingEnd_)
batchClaim
nonpayablefunction batchClaim(uint256[] _billIds) returns (uint256 payout)
batchRedeem
nonpayablefunction batchRedeem(uint256[] _billIds) returns (uint256 payout)
changeFeeTo
nonpayablefunction changeFeeTo(address _feeTo)
claim
nonpayablefunction claim(uint256 _billId) returns (uint256)
collectRaisedTokens
nonpayablefunction collectRaisedTokens(bool shouldCollectExcessPayout)
collectUnsoldPayoutToken
nonpayablefunction collectUnsoldPayoutToken()
deposit
nonpayablefunction deposit(uint256 _amount, uint256 _maxPrice, address _depositor) returns (uint256)
finalizeSale
nonpayablefunction finalizeSale()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _customTreasury, tuple _billCreationDetails, tuple _billSaleTerms, tuple _billAccounts, address[] _billOperators)
initialize
nonpayablefunction initialize(address _customTreasury, tuple _billCreationDetails, tuple _billTerms, tuple _billAccounts, address[] _billOperators, uint256 _minPoints, uint256 _maxPoints, address _pointsLens)
pause
nonpayablefunction pause()
redeem
nonpayablefunction redeem()
redeemOversubscription
nonpayablefunction redeemOversubscription()
redeemRefund
nonpayablefunction redeemRefund()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setBondTerms
nonpayablefunction setBondTerms(uint8 _parameter, uint256 _input)
setClaimApproval
nonpayablefunction setClaimApproval(address approvedAccount, bool approved)
setFeeTiers
nonpayablefunction setFeeTiers(uint256[] fees, uint256[] tierCeilings)
setMaxTotalPayoutAndMaxRaise
nonpayablefunction setMaxTotalPayoutAndMaxRaise(uint256 _maxTotalPayout, uint256 _maxRaise)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferStuckToken
nonpayablefunction transferStuckToken(address _token, uint256 _amount)
unpause
nonpayablefunction unpause()
events
BillClaimed
event BillClaimed(uint256 indexed billId, address indexed recipient, uint256 payout, uint256 remaining)
BillCreated
event BillCreated(uint256 deposit, uint256 payout, uint256 expires, uint256 indexed billId)
BillInitialized
event BillInitialized((uint256 endTime, uint256 startTime, uint256 vestingTerm, uint256 price, bool oversubscription, uint16 initialRelease, uint256 maxRaise, uint256 maxTotalPayout, uint256 refundPeriod, uint256 refundFee) billSaleTerms, uint256 lastDecay)
Deposit
event Deposit(uint256 deposit, address indexed depositor)
FeeToChanged
event FeeToChanged(address indexed newFeeTo)
Initialized
event Initialized(uint8 version)
MaxTotalPayoutChanged
event MaxTotalPayoutChanged(uint256 newMaxTotalPayout)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProtocolFeesRedeemed
event ProtocolFeesRedeemed(uint256 fees)
RedeemOversubscription
event RedeemOversubscription(address indexed recipient, uint256 amount)
RedeemRefund
event RedeemRefund(address indexed recipient, 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)
SetFees
event SetFees(uint256[] fees, uint256[] tierCeilings)
TermsSet
event TermsSet(uint8 parameter, uint256 input)
TransferRaisedTokens
event TransferRaisedTokens(uint256 principalPayout)
Unpaused
event Unpaused(address account)
UpdateClaimApproval
event UpdateClaimApproval(address indexed owner, address indexed approvedAccount, bool approved)
errors
No errors.
creation bytecode
0x608080604052346100235761017a805461ff0019169055615ddb9081620000298239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c908163017e7e5814613af35750806301f275b714613ad657806301ffc9a714613a65578063051635c414613a4657806305f187c9146139f557806309fc49bb146139d6578063133b6c281461397d5780631d57042c146138da5780631dc2b6a6146138b05780631e321a0f14613699578063230ed44a1461365757806323b1cde4146135b0578063248a9ca31461358357806324c20eec1461355a578063298b5c821461341d5780632f2ff15d1461336957806333150f8214613345578063353fed6d14613326578063358f6201146132e557806336568abe14613252578063379607f51461321557806339a0776614612bdd5780633a52915a14612bb35780633f4ba83a14612b1e5780633f53168514612a7f57806344ff57a414612a605780634768e6151461299857806347f6e052146129715780634c28f21f146129525780634efa82b61461292857806352f61b05146128ec578063576561d2146128c057806358a687ec146127d45780635c975abb146127b157806361242bdd1461274a5780636386c1c71461265e578063668448fc146125da57806368428a1b146125b55780636b522c0114612596578063715018a61461253957806378a6cc09146125105780637927ebf8146124d357806381d0526d146124a85780638456cb59146123cf578063864e90e3146121a25780638da5cb5b146121795780638dbdbe6d14611ca15780639010d07c14611c5b57806391220b3914611c3c57806391d1485414611bf357806398fabd3a14611bc95780639a65e3eb14611baa5780639e0bd80814611b7f5780639f69808314611b63578063a217fddf14611b47578063a7310b5814611ae0578063a7684a3914611ab6578063b3f05b9714611a92578063b71eabef146119c6578063b7444554146119ab578063b7ac79371461185a578063b8c461cd14611800578063bc063e1a1461183c578063bc29278214611800578063bd9c3376146117e1578063be040fb0146117af578063c00fdb9a14611769578063c38594f01461174a578063c7fab9c214611711578063ca15c873146116e7578063d311e629146112e7578063d3aac774146112bd578063d50256251461123d578063d547741f14610f57578063d744515f14610f33578063da3c300d14610f18578063db78b67c14610edc578063dbc162de14610eb2578063e3d18ede14610e45578063e796059a14610e2a578063e88cdd1e14610dfe578063f09f7264146104f1578063f2fde38b14610460578063f31f554214610436578063f90c601e146104175763ffa1ad74146103d357600080fd5b346104145780600319360112610414576104106040516103f281613bdf565b6005815264322e342e3160d81b602082015260405191829182613d35565b0390f35b80fd5b5034610414578060031936011261041457602061017954604051908152f35b50346104145780600319360112610414576101af546040516001600160a01b039091168152602090f35b50346104145760203660031901126104145761047a613b4d565b610482613dea565b6001600160a01b0381161561049d5761049a90613e42565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346104145760031961020036820112610cbd5761050d613b4d565b906001600160401b0360243511610dfa576101009060243536030112610cbd57610140366043190112610cbd57606036610183190112610cbd576101e4356001600160401b038111610dfa57610567903690600401613cd3565b919083549260ff8460081c161593848095610ded575b8015610dd6575b15610d7a5760ff198116600117865584610d69575b5061062060ff865460081c166105ae81614418565b6105b781614418565b60ff1960fb541660fb556105ca81614418565b6105d381614418565b600161012d5561061b6105ea60446024350161420e565b61060d6105f56141c9565b936105ff81614418565b61060881614418565b614418565b61061633613e42565b613e42565b613fea565b845b818110610d40575050506001600160a01b03811615610cfb5761016180546001600160a01b0319166001600160a01b03831617905560046020610668602435830161420e565b60405163277d415b60e11b815290939092839182906001600160a01b03165afa908115610cf0578491610cc1575b506001600160a01b03908116911603610cbd576001600160a01b036106bf60046024350161420e565b61015f8054919092166001600160a01b03199091161790556001600160a01b036106ec602480350161420e565b1615610c78576001600160a01b03610707602480350161420e565b6101608054919092166001600160a01b03199091161790556001600160a01b0361073560646024350161420e565b16610b8b57604051806101428101106001600160401b0361014283011117610b7757610142615ac28239806101428101039083f08015610b6c5761016780546001600160a01b0319166001600160a01b039092169190911790555b6001600160a01b036107a06141e0565b1615610b30576001600160a01b036107b66141e0565b6101628054919092166001600160a01b03199091161790556001600160a01b036107de6141f7565b1615610af2576001600160a01b036107f46141f7565b6101648054919092166001600160a01b03199091161781556001600160a01b0361082260446024350161420e565b1615610ab65761087461086e61084260a460243501602435600401614241565b61086661085c608460249594953501602435600401614241565b9490923691613c32565b923691613c32565b90615243565b61088260e460243501614285565b15156101789060ff8019835416911617905560c460243501354281118015610aae575b15610a55576101795561ffff6108c8612710826108c0614292565b1611156142a3565b6044356108d64282116142ef565b6064356108e442821161433b565b608435936201fa4085101580610a47575b6108fe90614387565b60a4359461090d8615156143d3565b8361016a558261016b558061016c558561016d5561094061092c614276565b61016e9060ff801983541691151516179055565b61096661094b614292565b61016e9062ffff0082549160081b169062ffff001916179055565b61010435958661016f556101243591826101705561014435938461017155359485610172556040519687526020870152604086015260608501526109a8613d03565b1515608085015260e435948516809503610a43577f03de2cd1b783bfd48ce049ded1309b18cca4f0e3e068d221f045bcc532236897956101609560a086015260c085015260e084015261010083015261012082015242610140820152a1610a0c5780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b8780fd5b506312bed4008511156108f5565b60405162461bcd60e51b815260206004820152602b60248201527f737461727456657374696e6754696d657374616d702063616e6e6f742062652060448201526a1a5b881d1a19481c185cdd60aa1b6064820152608490fd5b5080156108a5565b60405162461bcd60e51b81526020600482015260146024820152736f776e65722063616e6e6f74206265207a65726f60601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527562696c6c4e66742063616e6e6f74206265207a65726f60501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273666565546f2063616e6e6f74206265207a65726f60601b6044820152606490fd5b6040513d84823e3d90fd5b634e487b7160e01b83526041600452602483fd5b6001600160a01b03610ba160243560640161420e565b16426107cf19810111610c645760405163098fcce760e11b8152670de0b6b3a76400006004820152610fa06024820152426107cf1981016044830152606482015290602090829060849082905afa8015610c5957610c29575b506001600160a01b03610c1160243560640161420e565b166101679060018060a01b0319825416179055610790565b602090813d8311610c52575b610c3f8183613bfa565b81010312610c4d5738610bfa565b600080fd5b503d610c35565b6040513d85823e3d90fd5b634e487b7160e01b83526011600452602483fd5b60405162461bcd60e51b815260206004820152601d60248201527f7072696e636970616c546f6b656e2063616e6e6f74206265207a65726f0000006044820152606490fd5b5080fd5b610ce3915060203d602011610ce9575b610cdb8183613bfa565b810190614222565b38610696565b503d610cd1565b6040513d86823e3d90fd5b60405162461bcd60e51b815260206004820152601d60248201527f637573746f6d54726561737572792063616e6e6f74206265207a65726f0000006044820152606490fd5b80610d5f610d5a610d55610d64948688614487565b61420e565b614099565b614478565b610622565b61ffff191661010117855538610599565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156105845750600160ff821614610584565b50600160ff82161061057d565b8280fd5b5034610414576020366003190112610414576020610e22610e1d613b4d565b6156c2565b604051908152f35b50346104145780600319360112610414576020610e22615583565b503461041457806003193601126104145760405180918261016580548085526020809501918452848420935b85828210610e9c57505050610e8892500383613bfa565b610410604051928284938452830190613b19565b8554845260019586019588955093019201610e71565b5034610414578060031936011261041457610160546040516001600160a01b039091168152602090f35b5034610414576020366003190112610414576020906040906001600160a01b03610f04613b4d565b168152610175835220541515604051908152f35b50346104145780600319360112610414576020610e22615a51565b5034610414576020610f4d610f4736613cbd565b90615701565b5050604051908152f35b50346104145760403660031901126104145760043590610f75613b63565b828252602092609784526001806040852001548085526040852033600052865260ff6040600020541615610fae578461049a8585613d61565b8592503360405160608101926001600160401b0393828110858211176111a257604052602a825285820192604036853782511561118c5760308453825186101561118c576078602184015360295b8681116111fb57506111b8576040519360808501908111858210176111a2576040526042845285840194606036873784511561118c5760308653845181101561118c57607860218601536041905b8082116111325750506110ef579376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b936110d3936110c460489461109b6110eb99604051998a978801525180926037880190613d12565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190613d12565b01036028810184520182613bfa565b60405162461bcd60e51b815291829160048301613d35565b0390fd5b6064856040519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f8116601081101561118c576f181899199a1a9b1b9c1cb0b131b232b360811b901a6111618488613eab565b5360041c91801561117657600019019061104a565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6064866040519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f8116601081101561118c576f181899199a1a9b1b9c1cb0b131b232b360811b901a6112298386613eab565b5360041c9080156111765760001901610ffc565b503461041457806003193601126104145761014061016a5461016b5461016c5461016d5461016e5461ffff61016f5491610170549361017154956101725497604051998a5260208a01526040890152606088015260ff81161515608088015260081c1660a086015260c085015260e0840152610100830152610120820152f35b5034610414578060031936011261041457610164546040516001600160a01b039091168152602090f35b503461041457602080600319360112610cbd57600435908115158203610dfa576033546001600160a01b0392908316331480156116bb575b8015611690575b61132f90614497565b61134061133a615507565b15614744565b61135b61135461016a546101715490613e9e565b4211614781565b610168548015611655576113939061016f5480821160001461164b5761138e905b6113896101695484613ebc565b613e8b565b6147c7565b9060ff6101785416158061163b575b6115d6575b816113ec575b7fd14a3bfd0bc8210db888616e26431166e56f8f08802e75d35496cb2ecf22ee2e93506113df575b604051908152a180f35b6113e76147e7565b6113d5565b61016080546101618054604051636eb1769f60e11b81523060048201526001600160a01b03918916918216602482015291979193919283168785604481845afa9485156115cb57889588918c9161158e575b5061145161149094939261148b92613e9e565b60405163095ea7b360e01b9881018990526001600160a01b039094166024850152604484015282606481015b03601f198101845283613bfa565b61458b565b87828854168383541690803b15610dfa57606483926040519485938492630efe6a8b60e01b845260048401528b60248401528160448401525af1801561158357611567575b5081869392604492541697541691886040519889948593845260048401528160248401525af193841561155c577fd14a3bfd0bc8210db888616e26431166e56f8f08802e75d35496cb2ecf22ee2e9461152f575b506113ad565b61154e90843d8611611555575b6115468183613bfa565b810190614573565b5038611529565b503d61153c565b6040513d87823e3d90fd5b918060449299611578899695613bcc565b9992509293506114d5565b6040513d8b823e3d90fd5b9392968092508491503d83116115c4575b6115a98183613bfa565b810103126115c0579051879490879061145161143e565b8980fd5b503d61159f565b6040513d8c823e3d90fd5b7f59d3e0f41d25be83c8e23d584df757c4dcf89bb8a832b3d45099df496d6b408483611618620f424061161061160a615a51565b87613e8b565b048095613ebc565b9361162f8188610160541689610162541690614538565b604051908152a16113a7565b50611644615a51565b15156113a2565b5061138e8161137c565b60405162461bcd60e51b8152600481018490526013602482015272139bc81c1c9a5b98da5c185b08189a5b1b1959606a1b6044820152606490fd5b50600080516020615d668339815191528452609782526040808520338652835284205460ff16611326565b50600080516020615d8683398151915284526097825260408420338552825260ff60408520541661131f565b5034610414576020366003190112610414576040602091600435815260c983522054604051908152f35b503461041457602036600319011261041457610410611736611731613b4d565b615887565b604051918291602083526020830190613b19565b5034610414578060031936011261041457602061016854604051908152f35b50346104145760203660031901126104145760209061178960043561580f565b50905042811161179d575b50604051908152f35b6117a991504290613ebc565b38611794565b50346104145780600319360112610414576117c8614a35565b6117d06144f4565b6117d8614b20565b600161012d5580f35b5034610414578060031936011261041457602061017054604051908152f35b503461041457602036600319011261041457600435906001600160401b038211610414576020610e226118363660048601613cd3565b90614fa2565b50346104145780600319360112610414576020604051620f42408152f35b503461041457606036600319011261041457611874613b4d565b6024359060443561188d6118888483613ebc565b615a1f565b61016454859491936001600160a01b03909116915b8381106118f957505050506118b682615a1f565b925b8281106118d5576040516020808252819061041090820187613b19565b806118e36118f49284615203565b516118ee8287615203565b52614478565b6118b8565b604051632f745c5960e01b81526001600160a01b0383166004820152602481018290526020908181604481885afa91821561158357899261197d575b505061194f81600052610166602052604060002054151590565b611963575b5061195e90614478565b6118a2565b86611976916118ee61195e949989615203565b9590611954565b90809250813d83116119a4575b6119948183613bfa565b81010312610a4357513880611935565b503d61198a565b50346104145780600319360112610414576020610e22614885565b50346104145780600319360112610414576119df614a35565b6119e76144f4565b6119f261133a615507565b33815261017680602052611a0c60ff6040842054166149f0565b33825260205260ff604082205460181c16611a43573381526101756020526117d8611a3d600160408420015461567a565b33614a8c565b60405162461bcd60e51b815260206004820152602160248201527f557365722068617320636c61696d6564206f766572737562736372697074696f6044820152603760f91b6064820152608490fd5b5034610414578060031936011261041457602060ff61017a54166040519015158152f35b5034610414578060031936011261041457610161546040516001600160a01b039091168152602090f35b5034610414576020366003190112610414576040906001600160a01b03611b05613b4d565b16815261017560205220805461041060018301549260028101549060038101546004820154600583015491600760068501549401549460405198899889613b79565b5034610414578060031936011261041457602090604051908152f35b5034610414578060031936011261041457602060405160058152f35b5034610414576020366003190112610414576020611b9f42600435615701565b915050604051908152f35b503461041457806003193601126104145760206101ae54604051908152f35b5034610414578060031936011261041457610163546040516001600160a01b039091168152602090f35b50346104145760403660031901126104145760ff6040602092611c14613b63565b6004358252609785528282206001600160a01b03909116825284522054604051911615158152f35b5034610414576020366003190112610414576020610e2260043561567a565b503461041457604036600319011261041457611c88602091600435815260c9835260406024359120613ec9565b905460405160039290921b1c6001600160a01b03168152f35b50346104145760609081600319360112610414576001600160a01b0390604490813583811690819003610cbd57836101af541685816120c2575b5050611ce5614a35565b611ced6144f4565b611cf5615507565b1561208c578015612056573314801561204c575b1561200857611d16615583565b60249481863510611fc5576101608581541695604051906370a0823160e01b9283835230600484015260209889848c81845afa938415611fba578894611f8b575b50604051906323b872dd60e01b8b830152338c830152308a83015260043560648301526064825260a082018281106001600160401b03821117611f78576040528a939291611da49161458b565b541692896040518095819382523060048301525afa801561155c578590611f43575b611dd09250613ebc565b93610168611ddf868254613e9e565b80915560ff61016e541615611eff575b5050600792939495506101795480158015611ef6575b15611ef0575042905b338552610176875260408520600160ff1982541617905561017590818852611e3d600160408820015488613e9e565b9561016c549160405197611e5089613bb0565b8289528a89019081526040808a01928484528a019385855260808b0195865260a08b019688885260c08c0198895260e08c01998a523382528d522098518955516001890155516002880155516003870155516004860155516005850155516006840155519101556040518181527f4bcc17093cdf51079c755de089be5a85e70fa374ec656c194480fbdcda224a53833392a2600161012d55604051908152f35b90611e0e565b50428110611e05565b61016f5410611f0e5780611def565b856f27bb32b939bab139b1b934b83a34b7b760811b60649260108a6040519462461bcd60e51b86526004860152840152820152fd5b50908681813d8311611f71575b611f5a8183613bfa565b81010312611f6d5790611dd09151611dc6565b8480fd5b503d611f50565b634e487b7160e01b8a5260416004528c8afd5b9093508981813d8311611fb3575b611fa38183613bfa565b81010312610a4357519238611d57565b503d611f99565b6040513d8a823e3d90fd5b60405162461bcd60e51b815260206004820152601c818801527f536c697070616765206d6f7265207468616e206d61782070726963650000000081860152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527f6e6f206465706f7369747320746f206f7468657220616464726573730000000081840152606490fd5b50333b1515611d09565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b81850152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b81850152606490fd5b604051631dfea8ef60e01b815233600482015291829060249082905afa908115610c5957839161214c575b506101ad54811015908161213e575b5015612109573885611cdb565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420506f696e747360901b81850152606490fd5b90506101ae541015386120fc565b90508581813d8311612172575b6121638183613bfa565b81010312610dfa5751386120ed565b503d612159565b50346104145780600319360112610414576033546040516001600160a01b039091168152602090f35b50346104145780600319360112610414576121bb614a35565b6121c36144f4565b6121d260ff61017a54166149ac565b3381526101766020908082526121ee60ff6040852054166149f0565b6121ff61016a546101715490613e9e565b42116123905733835280825260ff604084205460081c166123575733835280825260ff604084205460101c1661231e5733835281526040808320805463ffff00001916630101000017905561017582528220600101546101698054919291612268908490613e9e565b905561017254806122bf575b507fd6e00de2229fa3afac0207fa7937e6bee5b506f329bb5d2a5cef308a5037e1eb906122ad833360018060a01b036101605416614538565b6040519283523392a2600161012d5580f35b82620f42406122f3612317937fd6e00de2229fa3afac0207fa7937e6bee5b506f329bb5d2a5cef308a5037e1eb9596613e8b565b04906123128260018060a01b0380610160541690610162541690614538565b613ebc565b9190612274565b60405162461bcd60e51b8152600481018390526011602482015270155cd95c881a185cc81c99599d5b991959607a1b6044820152606490fd5b60405162461bcd60e51b8152600481018390526011602482015270155cd95c881a185cc81c995919595b5959607a1b6044820152606490fd5b60405162461bcd60e51b81526004810183905260176024820152761499599d5b99081c195c9a5bd9081a185cc8195b991959604a1b6044820152606490fd5b50346104145780600319360112610414576033546001600160a01b03163314801561247a575b8015612447575b61240590614497565b61240d6144f4565b600160ff1960fb54161760fb557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b50600080516020615d66833981519152815260976020526040812033825260205261240560ff60408320541690506123fc565b50600080516020615d86833981519152815260976020526040812033825260205260ff6040822054166123f5565b50346104145760203660031901126104145760206124c842600435615701565b509050604051908152f35b5034610414576020366003190112610414576104106124f36004356155e7565b604080519384526020840192909252908201529081906060820190565b50346104145780600319360112610414576020604051600080516020615d868339815191528152f35b5034610414578060031936011261041457612552613dea565b603380546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610414578060031936011261041457602061016954604051908152f35b503461041457806003193601126104145760206125d0615507565b6040519015158152f35b5034610414576040366003190112610414576125f4613b4d565b602435801515809103610dfa57338352610177602052604083209160018060a01b0316918284526020526040832060ff1981541660ff83161790556040519081527f953b326c8aba9fa3dcdbb3372dfc3fc310139091d2178226539a6b09e553629b60203392a380f35b50346104145760203660031901126104145760406104109161267e613b4d565b612686615545565b506001600160a01b0316815261017560205220604051906007906126a983613bb0565b8054835260018101546020840152600281015460408401526003810154606084015260048101546080840152600581015460a0840152600681015460c0840152015460e08201526040519182918291909160e080610100830194805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501520151910152565b5034610414576020366003190112610414576080906040906001600160a01b03612772613b4d565b168152610176602052205460ff6040519181811615158352818160081c1615156020840152818160101c161515604084015260181c1615156060820152f35b5034610414578060031936011261041457602060ff60fb54166040519015158152f35b50346104145780600319360112610414576033546001600160a01b031633148015612892575b801561285f575b61280a90614497565b61016a544211156128265761017a805460ff1916600117905580f35b60405162461bcd60e51b815260206004820152601160248201527014d85b19481a5cc81b9bdd08195b991959607a1b6044820152606490fd5b50600080516020615d66833981519152815260976020526040812033825260205261280a60ff6040832054169050612801565b50600080516020615d86833981519152815260976020526040812033825260205260ff6040822054166127fa565b50346104145760203660031901126104145760406128df60043561580f565b5082519182526020820152f35b50346104145760203660031901126104145760406104109161290c615545565b506004358152610174602052206007604051916126a983613bb0565b503461041457806003193601126104145761015f546040516001600160a01b039091168152602090f35b5034610414578060031936011261041457602061016f54604051908152f35b5034610414578060031936011261041457602060ff61017a5460081c166040519015158152f35b5034610414576040366003190112610414576129b2613b4d565b6024356129bd613dea565b6040516370a0823160e01b81523060048201526001600160a01b0392909190831690602083602481855afa92831561155c578593612a2d575b5080158015612a24575b15612a14575061049a926033541690614538565b915061049a926033541690614538565b50828111612a00565b9092506020813d8211612a58575b81612a4860209383613bfa565b81010312611f6d575191386129f6565b3d9150612a3b565b5034610414576020366003190112610414576020610e226004356155b6565b50346104145780600319360112610414576033546001600160a01b031633148015612af0575b8015612abd575b612ab590614497565b61049a6147e7565b50600080516020615d668339815191528152609760205260408120338252602052612ab560ff6040832054169050612aac565b50600080516020615d86833981519152815260976020526040812033825260205260ff604082205416612aa5565b5034610414578060031936011261041457612b37613dea565b60fb5460ff811615612b775760ff191660fb557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b5034610414576020366003190112610414576020610e22612bd642600435615701565b9150613e9e565b50346104145760031961026036820112610cbd57612bf9613b4d565b906001600160401b0360243511610dfa576101009060243536030112610cbd57610140366043190112610cbd57606036610183190112610cbd576101e4356001600160401b038111610dfa57612c53903690600401613cd3565b610244359290916001600160a01b0384168403611f6d5784549260ff8460081c161593848095613208575b80156131f1575b15610d7a5760ff1981166001178755846131e0575b50612caf60ff875460081c166105ae81614418565b855b8181106131c6575050506001600160a01b03811615610cfb5761016180546001600160a01b0319166001600160a01b03831617905560046020612cf7602435830161420e565b60405163277d415b60e11b815290939092839182906001600160a01b03165afa90811561155c5785916131a7575b506001600160a01b03908116911603610dfa576001600160a01b03612d4e60046024350161420e565b61015f8054919092166001600160a01b03199091161790556001600160a01b03612d7b602480350161420e565b1615610c78576001600160a01b03612d96602480350161420e565b6101608054919092166001600160a01b03199091161790556001600160a01b03612dc460646024350161420e565b166130ca57604051806101428101106001600160401b03610142830111176130b657610142615c048239806101428101039084f08015610c595761016780546001600160a01b0319166001600160a01b039092169190911790555b6001600160a01b03612e2f6141e0565b1615610b30576001600160a01b03612e456141e0565b6101628054919092166001600160a01b03199091161790556001600160a01b03612e6d6141f7565b1615610af2576001600160a01b03612e836141f7565b6101648054919092166001600160a01b03199091161781556001600160a01b03612eb160446024350161420e565b1615610ab657612ed161086e61084260a460243501602435600401614241565b612edf60e460243501614285565b15156101789060ff8019835416911617905560c4602435013542811180156130ae575b15610a55576101795561ffff612f1d612710826108c0614292565b604435612f2b4282116142ef565b606435612f3942821161433b565b608435936201fa40851015806130a0575b612f5390614387565b60a43594612f628615156143d3565b8361016a558261016b558061016c558561016d55612f8161092c614276565b612f8c61094b614292565b61010435958661016f55610124359182610170556101443593846101715535948561017255604051968752602087015260408601526060850152612fce613d03565b1515608085015260e43594851680950361309c577f03de2cd1b783bfd48ce049ded1309b18cca4f0e3e068d221f045bcc532236897956101609560a086015260c085015260e084015261010083015261012082015242610140820152a1613063575b610204356101ad55610224356101ae556101af80546001600160a01b0319166001600160a01b0390921691909117905580f35b61ff001982541682557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1613030565b8880fd5b506312bed400851115612f4a565b508015612f02565b634e487b7160e01b84526041600452602484fd5b6001600160a01b036130e060243560640161420e565b16426107cf198101116131935760405163098fcce760e11b8152670de0b6b3a76400006004820152610fa06024820152426107cf1981016044830152606482015290602090829060849082905afa8015610cf057613168575b506001600160a01b0361315060243560640161420e565b166101679060018060a01b0319825416179055612e1f565b602090813d831161318c575b61317e8183613bfa565b81010312610dfa5738613139565b503d613174565b634e487b7160e01b84526011600452602484fd5b6131c0915060203d602011610ce957610cdb8183613bfa565b38612d25565b80610d5f610d5a610d556131db948688614487565b612cb1565b61ffff191661010117865538612c9a565b50303b158015612c855750600160ff821614612c85565b50600160ff821610612c7e565b50346104145760203660031901126104145761322f614a35565b6132376144f4565b6020613244600435614ff7565b600161012d55604051908152f35b50346104145760403660031901126104145761326c613b63565b336001600160a01b038216036132885761049a90600435613d61565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b503461041457602036600319011261041457610410906124f3906001906040906001600160a01b03613315613b4d565b1681526101756020522001546155e7565b5034610414578060031936011261041457602061016d54604051908152f35b5034610414578060031936011261041457602060ff61017854166040519015158152f35b5034610414576040366003190112610414576133cc600435613389613b63565b90613392613dea565b8084526097602052604084209160018060a01b03169182855260205260ff604085205416156133d0575b835260c96020526040832061416f565b5080f35b80845260976020526040842082855260205260408420600160ff198254161790553382827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8780a46133bc565b50346104145761342c36613cbd565b6033546001600160a01b03163314801561352c575b80156134f9575b61345190614497565b61016f908154808210908115916134f0575b5080156134e4575b156134ac57806040939283859461017055845190600482526020820152600080516020615d46833981519152958691a155815190600282526020820152a180f35b60405162461bcd60e51b815260206004820152601060248201526f496e76616c6964206d6178526169736560801b6044820152606490fd5b5061016b54421061346b565b90501538613463565b50600080516020615d66833981519152835260976020526040832033845260205261345160ff6040852054169050613448565b50600080516020615d86833981519152835260976020526040832033845260205260ff604084205416613441565b50346104145780600319360112610414576020604051600080516020615d668339815191528152f35b50346104145760203660031901126104145760016040602092600435815260978452200154604051908152f35b5034610414576020366003190112610414576135ca613b4d565b6135d2613dea565b6001600160a01b0316801561361b5761016280546001600160a01b031916821790557f3dedba2a214b4fff9bf20fc473c114824654e0bc70512b4a92f6d5978763c28d8280a280f35b60405162461bcd60e51b815260206004820152601460248201527343616e6e6f74206265206164647265737328302960601b6044820152606490fd5b5034610414576020366003190112610414576004356101738054821015610dfa578260209160409452209060011b016001815491015482519182526020820152f35b5034610414576040366003190112610414576004356008811015610cbd576024359060018060a01b03603354163314801561387d575b6136d890614497565b8061372857604090826201fa40600080516020615d468339815191529410158061371a575b61370690614387565b8061016c555b82519182526020820152a180f35b506312bed4008111156136fd565b60018103613758576040908261374e600080516020615d468339815191529415156143d3565b8061016d5561370c565b600281036137d55761016f90815483106137865782600080516020615d46833981519152936040935561370c565b60405162461bcd60e51b815260206004820152602160248201527f6d617852616973652063616e6e6f742062652062656c6f77206d6178526169736044820152606560f81b6064820152608490fd5b80600080516020615d468339815191529260036040931460001461381e576138016127108211156142a3565b61016e805462ffff001916600883901b62ffff001617905561370c565b6004820361383057806101705561370c565b6005820361384e576138434282116142ef565b8061016a555b61370c565b6006820361386b5761386142821161433b565b8061016b5561370c565b6007820361384957806101715561370c565b50600080516020615d8683398151915283526097602052604083203384526020526136d860ff60408520541690506136cf565b5034610414578060031936011261041457610167546040516001600160a01b039091168152602090f35b5034610414576040366003190112610414576001600160401b03600435818111610dfa5761390c903690600401613c80565b602435918211610dfa5761392761049a923690600401613c80565b9060018060a01b03603354163314801561394a575b61394590614497565b615243565b50600080516020615d86833981519152845260976020526040842033855260205261394560ff604086205416905061393c565b503461041457602036600319011261041457604090600435815261017460205220805461041060018301549260028101549060038101546004820154600583015491600760068501549401549460405198899889613b79565b5034610414578060031936011261041457602061017354604051908152f35b50346104145760403660031901126104145760ff6040602092613a16613b4d565b613a1e613b63565b6001600160a01b03918216835261017786528383209116825284522054604051911615158152f35b503461041457806003193601126104145760206101ad54604051908152f35b50346104145760203660031901126104145760043563ffffffff60e01b8116809103610cbd57602090635a05180f60e01b8114908115613aab575b506040519015158152f35b637965db0b60e01b811491508115613ac5575b5082613aa0565b6301ffc9a760e01b14905082613abe565b503461041457806003193601126104145761041061173633615887565b905034610cbd5781600319360112610cbd57610162546001600160a01b03168152602090f35b90815180825260208080930193019160005b828110613b39575050505090565b835185529381019392810192600101613b2b565b600435906001600160a01b0382168203610c4d57565b602435906001600160a01b0382168203610c4d57565b94919260e0969399989794919961010087019a8752602087015260408601526060850152608084015260a083015260c08201520152565b61010081019081106001600160401b038211176111a257604052565b6001600160401b0381116111a257604052565b604081019081106001600160401b038211176111a257604052565b90601f801991011681019081106001600160401b038211176111a257604052565b6001600160401b0381116111a25760051b60200190565b9291613c3d82613c1b565b91613c4b6040519384613bfa565b829481845260208094019160051b8101928311610c4d57905b828210613c715750505050565b81358152908301908301613c64565b9080601f83011215610c4d57816020613c9b93359101613c32565b90565b610173805482101561118c5760005260206000209060011b0190600090565b6040906003190112610c4d576004359060243590565b9181601f84011215610c4d578235916001600160401b038311610c4d576020808501948460051b010111610c4d57565b60c435908115158203610c4d57565b60005b838110613d255750506000910152565b8181015183820152602001613d15565b60409160208252613d558151809281602086015260208686019101613d12565b601f01601f1916010190565b906040613d9f9260009080825260976020528282209360018060a01b03169384835260205260ff8383205416613da2575b815260c960205220613ee1565b50565b808252609760205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a4613d92565b6033546001600160a01b03163303613dfe57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b8181029291811591840414171561117657565b9190820180921161117657565b90815181101561118c570160200190565b9190820391821161117657565b805482101561118c5760005260206000200190600090565b90600182019060009281845282602052604084205490811515600014613fe35760001991808301818111613fcf57825490848201918211613fbb57808203613f6d575b50505080548015613f5957820191613f3c8383613ec9565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b613fa6613f7d613f8d9386613ec9565b90549060031b1c92839286613ec9565b819391549060031b600019811b9283911b169119161790565b90558652846020526040862055388080613f24565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b6001600160a01b031660008181527fd7949191362d496ed7552c7e832ad2f8f7b3d7e28eb655b386c39864bacc9c10602052604080822054613d9f939290600080516020615d668339815191529060ff161561404e575b815260c96020522061416f565b8082526097602052828220848352602052828220600160ff198254161790553384827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8580a4614041565b6001600160a01b031660008181527fc73a27fbb8feb318a8925ab6a4b4df16b973580518358aeb6d83627615c8ce71602052604080822054613d9f939290600080516020615d868339815191529060ff161561404e57815260c96020522061416f565b90600091808352610166928360205260408120541560001461416a5761016580549490600160401b861015610b77576001860180825586101561415657836040949596828552602085200155549382526020522055600190565b634e487b7160e01b83526032600452602483fd5b925050565b919060018301600090828252806020526040822054156000146141c357845494600160401b861015610b7757836141b3613f8d886001604098999a01855584613ec9565b9055549382526020522055600190565b50925050565b6101a4356001600160a01b0381168103610c4d5790565b610184356001600160a01b0381168103610c4d5790565b6101c4356001600160a01b0381168103610c4d5790565b356001600160a01b0381168103610c4d5790565b90816020910312610c4d57516001600160a01b0381168103610c4d5790565b903590601e1981360301821215610c4d57018035906001600160401b038211610c4d57602001918160051b36038313610c4d57565b60c4358015158103610c4d5790565b358015158103610c4d5790565b60e43561ffff81168103610c4d5790565b156142aa57565b60405162461bcd60e51b815260206004820152601f60248201527f496e697469616c2072656c65617365206d757374206265203c3d2031303025006044820152606490fd5b156142f657565b60405162461bcd60e51b815260206004820152601d60248201527f656e6454696d652063616e6e6f7420626520696e2074686520706173740000006044820152606490fd5b1561434257565b60405162461bcd60e51b815260206004820152601f60248201527f737461727454696d652063616e6e6f7420626520696e207468652070617374006044820152606490fd5b1561438e57565b60405162461bcd60e51b815260206004820152601b60248201527f56657374696e67206d757374206265203e3d20333620686f75727300000000006044820152606490fd5b156143da57565b60405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b5d5b481c1c9a58d9481c995c5d5a5c995960521b6044820152606490fd5b1561441f57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60001981146111765760010190565b919081101561118c5760051b0190565b1561449e57565b60405162461bcd60e51b815260206004820152602860248201527f43616c6c6572206973206e6f74206f776e6572206f722068617320726571756960448201526772656420726f6c6560c01b6064820152608490fd5b60ff60fb541661450057565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448201929092526145719161148b826064810161147d565b565b90816020910312610c4d57518015158103610c4d5790565b6040516001600160a01b039091169291906145a581613bdf565b6020918282527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564838301526000808285829451910182895af13d156146a7573d956001600160401b038711610b775761461f9495966040519061461188601f19601f8401160183613bfa565b81528093873d92013e6146b3565b80519082821592831561468f575b505050156146385750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b61469f9350820181019101614573565b38828161462d565b61461f93949591506060915b9192901561471557508151156146c7575090565b3b156146d05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156147285750805190602001fd5b60405162461bcd60e51b81529081906110eb9060048301613d35565b1561474b57565b60405162461bcd60e51b815260206004820152600e60248201526d53616c652069732061637469766560901b6044820152606490fd5b1561478857565b60405162461bcd60e51b81526020600482015260176024820152761499599d5b99081c195c9a5bd9081b9bdd08195b991959604a1b6044820152606490fd5b81156147d1570490565b634e487b7160e01b600052601260045260246000fd5b6147f261133a615507565b61480661135461016a546101715490613e9e565b61017a805460ff8160081c161561481b575050565b61ff00191661010017905561482e614885565b610161546001600160a01b031690813b15610c4d5760009160248392604051948593849263ba47fe3760e01b845260048401525af18015614879576148705750565b61457190613bcc565b6040513d6000823e3d90fd5b61015f5460405163313ce56760e01b815290602090829060049082906001600160a01b03165afa90811561487957600091614970575b5060ff16604d8111611176576101685461016f5491600a0a60008383106149285750613c9b9291614903916000935b821115614909575061138e610170545b61016954613e8b565b90613e9e565b61492361491961138e9284613e8b565b61016d54906147c7565b6148fa565b6149328385613ebc565b60001981019190821161495c5750918161495661491961490394613c9b9796613e8b565b936148ea565b634e487b7160e01b81526011600452602490fd5b6020813d82116149a4575b8161498860209383613bfa565b81010312610cbd57519060ff82168203610414575060ff6148bb565b3d915061497b565b156149b357565b60405162461bcd60e51b815260206004820152601560248201527414d85b19481a5cc81b9bdd08199a5b985b1a5e9959605a1b6044820152606490fd5b156149f757565b60405162461bcd60e51b8152602060048201526016602482015275155cd95c881a185cc81b9bdd0819195c1bdcda5d195960521b6044820152606490fd5b61012d6002815414614a475760029055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b6001600160a01b03818116600081815261017660205260409020805463ff00000019811663010000001790915590939060181c60ff161580614b17575b614ad4575b50505050565b614b07817f5974a4ba32eac33748d782d531ee032395c734bc6caaa569d68bc08dced2f9b6946020946101605416614538565b604051908152a238808080614ace565b50801515614ac9565b61017a54614b3260ff600092166149ac565b338152602061017681526040908183208054614b5060ff82166149f0565b60ff8160081c16614f6e5760ff8160101c16614f3a576101009061ff0019161790553383526101758152818320926001840192614b8d84546155e7565b9490958215614f285760018060a01b039661015f9088825416948651906370a0823160e01b92838352868360248160049b308d8301525afa928315614f1e578a93614eef575b506101785460ff1615614e8a578b61016154168c6101605416918d610162541690823b15614e86578c80949360a4938d938f519889978896630ca6553b60e11b88528701528460248701526044860152606485015260848401525af18015614e7c57908991614e68575b50505b848a8454169260248951809581938252308b8301525afa8015614e2f578890614e39575b614c6e9250613ebc565b808a5561016454865163ee1fe2ad60e01b815233878201908152306020820152909a9299929186918c9184169082908c90829060400103925af1998a15614e2f57889a614df0575b509260077fe58e2397580448f038c428fd00f6fa73f939e2bc4f98fb93a9c4d85182b62d6c9a9b614d208a95614d1a614dcf9996611a3d8f9a612710614deb9f9e9c614d0d9061ffff61016e5460081c1690613e8b565b0494859133915416614538565b8c613ebc565b9254908d61016c9760058954930154928b61016d5495815198614d428a613bb0565b8952898901908152818901908b825260608a019284845260808b0194855260a08b019688885260c08c0198895260e08c01998a528d526101749c8d8d522099518a555160018a0155516002890155516003880155519086015551600585015551600684015551910155614db48a6140fc565b50898752526005836001818820015496200154905490613e9e565b9051938493846040919493926060820195825260208201520152565b0390a2565b92995093909594928183813d8311614e28575b614e0d8183613bfa565b81010312610c4d57888893519a935096919490939596614cb6565b503d614e03565b87513d8a823e3d90fd5b508482813d8311614e61575b614e4f8183613bfa565b81010312610c4d57614c6e9151614c64565b503d614e45565b614e7190613bcc565b610a43578738614c3d565b88513d8b823e3d90fd5b8c80fd5b508a61016154168b610160541690803b15614eeb57906064898c80948d519687958694630efe6a8b60e01b865285015282602485015260448401525af18015614e7c57614ed8575b50614c40565b614ee490989198613bcc565b9638614ed2565b8a80fd5b9092508681813d8311614f17575b614f078183613bfa565b810103126115c057519138614bd3565b503d614efd565b89513d8c823e3d90fd5b50505050509050614571915033614a8c565b835162461bcd60e51b815260048101849052600d60248201526c155cd95c881c99599d5b991959609a1b6044820152606490fd5b835162461bcd60e51b815260048101849052600d60248201526c155cd95c881c995919595b5959609a1b6044820152606490fd5b90614fab614a35565b614fb36144f4565b60009182915b808310614fcc5750505090600161012d55565b909192614fea614ff091614903614fe4878688614487565b35614ff7565b93614478565b9190614fb9565b6000908082526020906101748252604080842092600684019384549586156151c9576101645484516331a9108f60e11b8152600481018790526001600160a01b0391821697909285846024818c5afa9384156151bd57819461519e575b5082841698893314908115615194575b508015615177575b156151445761507b4289615701565b9b9150508a1561510d57928a928695926150cc6150ef9660027f0a341b92706c414514d09d2e85a3b296c7c31b3851032575f8ce164ad10ff39a9c9b9a016150c4888254613e9e565b905542613ebc565b600388018054909291908082106150fd575050905b5542905561015f5416614538565b54825191878352820152a390565b6151079250613ebc565b906150e1565b875162461bcd60e51b815260048101889052601060248201526f6e6f7468696e6720746f20636c61696d60801b6044820152606490fd5b865162461bcd60e51b815260048101879052600c60248201526b1b9bdd08185c1c1c9bdd995960a21b6044820152606490fd5b508881526101778652868120338252865260ff878220541661506c565b9050331438615064565b6151b6919450863d8811610ce957610cdb8183613bfa565b9238615054565b508651903d90823e3d90fd5b835162461bcd60e51b81526004810184905260136024820152721b9bdd0818481d985b1a5908189a5b1b081a59606a1b6044820152606490fd5b805182101561118c5760209160051b010190565b919061522d576020816001925184550151910155565b634e487b7160e01b600052600060045260246000fd5b9190918251815180911490816154fb575b50156154ba5761017380548061545e575b506000805b85518210156153c757620f42406152818386615203565b511015615394578115908115615380575b5015615343576152a28186615203565b5182549091808211156152f6576152f09150610d5f6152c18289615203565b516152cc8388615203565b51604051916152da83613bdf565b825260208201526152ea83613c9e565b90615217565b9061526a565b6153008188615203565b519161530c8287615203565b516040519361531a85613bdf565b84526020840152600160401b8110156111a2576152f0926152ea826001610d5f94018855613c9e565b60405162461bcd60e51b815260206004820152601560248201527437b7363c9034b731b932b0b9b4b7339037b93232b960591b6044820152606490fd5b905061538c8287615203565b511138615292565b60405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642066656560a81b6044820152606490fd5b5050929091928251905403615426577ffd7b9c6175d9445ac273df5f353522b43f063a82aafd6da98503abcfa154cf929161542161541392604051938493604085526040850190613b19565b908382036020850152613b19565b0390a1565b60405162461bcd60e51b815260206004820152601060248201526f0cccacaa8d2cae440dad2e6dac2e8c6d60831b6044820152606490fd5b60005b81811061546e5750615265565b825480156154a457600019019061548482613c9e565b92909261522d5760006001848261549f965501558455614478565b615461565b634e487b7160e01b600052603160045260246000fd5b60405162461bcd60e51b81526020600482015260196024820152780e8d2cae440d8cadccee8d040427a40cccaca40d8cadccee8d603b1b6044820152606490fd5b90506005101538615254565b60ff61017a54161580615539575b8061552d575b806155235790565b5061016f54151590565b5061016b54421161551b565b5061016a544210615515565b6040519061555282613bb0565b8160e06000918281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b61016d54620f424080820291808304821490151715611176576155a4615a51565b810390811161117657613c9b916147c7565b6101685480156155e05764e8d4a510009182810292818404149015171561117657613c9b916147c7565b5050600090565b9060006155f38361567a565b90610168549061016f5480831160001461565057505061561a9061138e6101705486613e8b565b925b83156156455761564161563383620f424093613ebc565b61563b615a51565b90613e8b565b0491565b600093508392909150565b8091959250615660575b5061561c565b61567391945061138e6101705486613e8b565b923861565a565b610168549061016f54808311156156ba576156a29261138e61569c9284613e8b565b90613ebc565b90816156aa57565b9060001981019081116111765790565b505050600090565b6001600160a01b03166000908152610176602052604090205460181c60ff166156fc57610175602052613c9b60016040600020015461567a565b600090565b916000928352602090610174825260408420936040519361572185613bb0565b838654968787526001810154828801526084600282015497604081019889526003830154606082015260048301549081608082015260e060076005860154958660a0850152600681015460c0850152015491015260018060a01b036101675416604051958694859363098fcce760e11b85528d60048601526024850152604484015260648301525afa938415610b6c5782946157df575b50506157c5838096613ebc565b935190928082106157d4575050565b613c9b929350613ebc565b9080929450813d8311615808575b6157f78183613bfa565b81010312610dfa57519138806157b8565b503d6157ed565b60005261017460205260406000206040519161582a83613bb0565b8154835260018201546020840152600282015460408401526003820154606084015261588260048301548060808601526005840154948560a082015260e0600760068701549660c08401978852015491015284613e9e565b915190565b61016454604080516370a0823160e01b81526001600160a01b0380851660048084019190915294959493602091168183602481845afa928315615a14576000936159e5575b506158d683615a1f565b96600095865b85811061592357505050505050506158f381615a1f565b9060005b818110615905575090925050565b8061591361591e9287615203565b516118ee8286615203565b6158f7565b8651632f745c5960e01b81526001600160a01b038416838201908152602081018390528690829081906040010381885afa9081156159da576000916159ad575b508a61597d82600052610166602052604060002054151590565b615992575b505061598d90614478565b6158dc565b986159a5916118ee8261598d959c615203565b97908a615982565b908682813d83116159d3575b6159c38183613bfa565b8101031261041457505138615963565b503d6159b9565b88513d6000823e3d90fd5b90928282813d8311615a0d575b6159fc8183613bfa565b8101031261041457505191386158cc565b503d6159f2565b84513d6000823e3d90fd5b90615a2982613c1b565b615a366040519182613bfa565b8281528092615a47601f1991613c1b565b0190602036910137565b6101735461016854600092918390815b818110615a6e5750505050565b615a7781613c9e565b50548411801590615aad575b615a9557615a9090614478565b615a61565b9150506001929350615aa79150613c9e565b50015490565b506000198201828111613193578114615a8356fe6080806040523461001657610126908161001c8239f35b600080fdfe6080604052600480361015601257600080fd5b6000803560e01c63131f99ce14602757600080fd5b3460ed57608036600319011260ed57813560243560643560443580821160585750505050602091505b604051908152f35b828195929394950180821160da57831060775750505050602091506050565b82939491920392831160c75782810292818404149015171560b457821560a1575060209250046050565b634e487b7160e01b815260128452602490fd5b634e487b7160e01b815260118452602490fd5b634e487b7160e01b825260118552602482fd5b634e487b7160e01b835260118752602483fd5b80fdfea2646970667358221220410ea4af64d7e14dc8e6b3b435942e3edddca7d37dc4f7ac1da9f0a30c0ad38064736f6c634300081100336080806040523461001657610126908161001c8239f35b600080fdfe6080604052600480361015601257600080fd5b6000803560e01c63131f99ce14602757600080fd5b3460ed57608036600319011260ed57813560243560643560443580821160585750505050602091505b604051908152f35b828195929394950180821160da57831060775750505050602091506050565b82939491920392831160c75782810292818404149015171560b457821560a1575060209250046050565b634e487b7160e01b815260128452602490fd5b634e487b7160e01b815260118452602490fd5b634e487b7160e01b825260118552602482fd5b634e487b7160e01b835260118752602483fd5b80fdfea2646970667358221220410ea4af64d7e14dc8e6b3b435942e3edddca7d37dc4f7ac1da9f0a30c0ad38064736f6c63430008110033903c480df86492bc6f2f0240f18a751973dce69801170a49d03fe0c2110fbe4b85d36e3b488c35c2a15344b305cb84e2000f26d4f3a7c1e8a516f0e82aee752ae3723f41c074e25ac45636a7cd631386f2e15f8583ade05d0b710b41251f5c7ba26469706673582212208873b3ca259744ba17b485c2b61b4e3e4d22b406f940372b50caff118e52bbe764736f6c63430008110033