391 txs
389 calls
constructor
constructor((uint256 registerStart, uint256 registerEnd, uint256 stakingRoundStart, uint256 stakingRoundEnd, uint256 publicRoundStart, uint256 publicRoundEnd) _saleTimes, address _allocationProvider, address _utilityToken, uint256 _totalSaleValueCap, address _feeClaimAddress, address _stakingAmounts, uint256 _publicSaleDepositCap, uint256 _lockTime)
functions
allocationProvider
viewfunction allocationProvider() view returns (address)
canUnlock
viewfunction canUnlock(address _account) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
depositableOf
viewfunction depositableOf(address _account) view returns (uint256)
depositAmountWithFees
viewfunction depositAmountWithFees(uint256 _amount) view returns (uint256)
depositedOf
viewfunction depositedOf(address _account) view returns (uint256)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
FCFS_ROUND_FEE
viewfunction FCFS_ROUND_FEE() view returns (uint8)
feeClaimAddress
viewfunction feeClaimAddress() view returns (address)
getActualDepositAmounts
viewfunction getActualDepositAmounts(uint256 _start, uint256 _end) view returns (address[], uint256[])
getActualDepositOf
viewfunction getActualDepositOf(address _account) view returns (uint256)
getDepositAmounts
viewfunction getDepositAmounts(uint256 _start, uint256 _end) view returns (address[], uint256[])
getExcessAmountOf
viewfunction getExcessAmountOf(address _account) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getSaleNom
viewfunction getSaleNom() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isFcfs
viewfunction isFcfs() view returns (bool)
isPublicRound
viewfunction isPublicRound() view returns (bool)
isRefundedFor
viewfunction isRefundedFor(address) view returns (bool)
isRegistered
viewfunction isRegistered(address _account) view returns (bool)
isSoldOut
viewfunction isSoldOut() view returns (bool)
isStakingRound
viewfunction isStakingRound() view returns (bool)
isUnlockedFor
viewfunction isUnlockedFor(address) view returns (bool)
max_signature_delay
viewfunction max_signature_delay() view returns (uint256)
overbookingCap
viewfunction overbookingCap() view returns (uint256)
participantAt
viewfunction participantAt(uint256 index) view returns (address)
participantCount
viewfunction participantCount() view returns (uint256)
participantsBetween
viewfunction participantsBetween(uint256 start, uint256 end) view returns (address[])
paused
viewfunction paused() view returns (bool)
PUBLIC_ROUND_FEE
viewfunction PUBLIC_ROUND_FEE() view returns (uint8)
publicRoundAllocationOf
viewfunction publicRoundAllocationOf(address _account) view returns (uint256)
publicSaleDepositedOf
viewfunction publicSaleDepositedOf(address _account) view returns (uint256)
saleDetails
viewfunction saleDetails() view returns (uint256 totalSaleValueCap, address feeClaimAddress, uint256 totalSaleValue, uint256 totalGuaranteedSaleValue, uint256 totalPublicSaleValue, uint256 publicSaleDepositCap, address stakingAmounts, uint256 minStake, uint256 registerFee, uint256 lockTime, uint8 overbookingMultiplier, uint8 nom, uint8 denom)
saleTimes
viewfunction saleTimes() view returns (uint256 registerStart, uint256 registerEnd, uint256 stakingRoundStart, uint256 stakingRoundEnd, uint256 publicRoundStart, uint256 publicRoundEnd)
SIGNER
viewfunction SIGNER() view returns (bytes32)
STAKING_ROUND_FEE
viewfunction STAKING_ROUND_FEE() view returns (uint8)
stakingRoundAllocationOf
viewfunction stakingRoundAllocationOf(address _account) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalSaleValue
viewfunction totalSaleValue() view returns (uint256)
totalSaleValueCap
viewfunction totalSaleValueCap() view returns (uint256)
utilityToken
viewfunction utilityToken() view returns (address)
activateFCFS
nonpayablefunction activateFCFS()
adminRegister
nonpayablefunction adminRegister(address _account)
batchAdminRefund
nonpayablefunction batchAdminRefund(address[] _accounts)
batchAdminRegister
nonpayablefunction batchAdminRegister(address[] _accounts)
batchAdminUnlock
nonpayablefunction batchAdminUnlock(address[] _accounts)
deactivateFCFS
nonpayablefunction deactivateFCFS()
deposit
nonpayablefunction deposit(uint256 _amount, uint256 _timestamp, bytes _signature)
emergencyExit
nonpayablefunction emergencyExit(address _account)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
register
payablefunction register(uint256 _timestamp, bytes _signature) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setFees
nonpayablefunction setFees(uint8 _stakingRoundFee, uint8 _publicRoundFee, uint8 _fcsfRoundFee)
setLockTime
nonpayablefunction setLockTime(uint256 _lockTime)
setOverbookingMultiplier
nonpayablefunction setOverbookingMultiplier(uint8 _overbookingMultiplier)
setPublicRoundMultiplier
nonpayablefunction setPublicRoundMultiplier(uint8 _nom, uint8 _denom)
setPublicSaleCap
nonpayablefunction setPublicSaleCap(uint256 _publicSaleDepositCap)
setRegisterFee
nonpayablefunction setRegisterFee(uint256 _registerFee)
setSaleCap
nonpayablefunction setSaleCap(uint256 _totalSaleValueCap)
setStakingAmounts
nonpayablefunction setStakingAmounts(address _stakingAmounts, uint256 _minStake)
unlock
nonpayablefunction unlock()
unpause
nonpayablefunction unpause()
updateAllocationProvider
nonpayablefunction updateAllocationProvider(address _allocationProvider)
updateFeeClaimAddress
nonpayablefunction updateFeeClaimAddress(address _newAddress)
updateTimes
nonpayablefunction updateTimes(tuple _saleTimes)
events
Deposit
event Deposit(address _account, uint256 _amount)
EIP712DomainChanged
event EIP712DomainChanged()
EmergencyExit
event EmergencyExit(address indexed user, uint256 amount)
Paused
event Paused(address account)
Refunded
event Refunded(address indexed user, uint256 amount)
Registered
event Registered(address _account)
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)
Unlocked
event Unlocked(address indexed user, uint256 amount)
Unpaused
event Unpaused(address account)
errors
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
creation bytecode
0x61018060405260b46005556006805463ffffffff191690553480156200002457600080fd5b50604051620059ba380380620059ba833981016040819052620000479162000784565b604080518082018252600b81526a50726f6a65637453616c6560a81b60208083019190915282518084019093526001808452603160f81b848301526000819055805460ff19169055909190620000ab908390600390620032aa62000616821b17901c565b61012052620000c881600462000616602090811b620032aa17901c565b61014052815160208084019190912060e052815190820120610100524660a0526200015660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526020880151885110620001d45760405162461bcd60e51b815260206004820152603260248201527f4661726d64726f703a2072656769737465725374617274206d757374206265206044820152711899599bdc99481c9959da5cdd195c915b9960721b60648201526084015b60405180910390fd5b8760400151886020015110620002535760405162461bcd60e51b815260206004820152603660248201527f4661726d64726f703a207265676973746572456e64206d75737420626520626560448201527f666f7265207374616b696e67526f756e645374617274000000000000000000006064820152608401620001cb565b8760600151886040015110620002d25760405162461bcd60e51b815260206004820152603a60248201527f4661726d64726f703a207374616b696e67526f756e645374617274206d75737460448201527f206265206265666f7265207374616b696e67526f756e64456e640000000000006064820152608401620001cb565b8760800151886060015110620003515760405162461bcd60e51b815260206004820152603960248201527f4661726d64726f703a207374616b696e67526f756e64456e64206d757374206260448201527f65206265666f7265207075626c6963526f756e645374617274000000000000006064820152608401620001cb565b8760a00151886080015110620003d05760405162461bcd60e51b815260206004820152603860248201527f4661726d64726f703a207075626c6963526f756e645374617274206d7573742060448201527f6265206265666f7265207075626c6963526f756e64456e6400000000000000006064820152608401620001cb565b6001600160a01b0387166200044e5760405162461bcd60e51b815260206004820152603460248201527f4661726d64726f703a20616c6c6f636174696f6e2070726f766964657220636160448201527f6e6e6f74206265207a65726f20616464726573730000000000000000000000006064820152608401620001cb565b6001600160a01b038316620004bf5760405162461bcd60e51b815260206004820152603060248201527f4661726d64726f703a207374616b696e6720616d6f756e74732063616e6e6f7460448201526f206265207a65726f206164647265737360801b6064820152608401620001cb565b6001600160a01b0386166200052e5760405162461bcd60e51b815260206004820152602e60248201527f4661726d64726f703a207574696c69747920746f6b656e2063616e6e6f74206260448201526d65207a65726f206164647265737360901b6064820152608401620001cb565b8751601255602088015160135560408801516014556060880151601555608088015160165560a08801516017556001600160a01b03868116610160526007869055600c839055600d80546001600160a01b031990811686841617909155601083905560068054600160201b600160c01b0319166401000000008b851602179055601880549091169186169190911790556011805462ffffff1916620a0a05179055620005dc60003362000666565b620006087f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca403362000666565b505050505050505062000a4d565b600060208351101562000636576200062e836200070b565b905062000660565b826200064d836200074e60201b620032db1760201c565b906200065a90826200090c565b5060ff90505b92915050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620007075760008281526002602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620006c63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080829050601f8151111562000739578260405163305a27a960e01b8152600401620001cb9190620009d8565b8051620007468262000a28565b179392505050565b90565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200077f57600080fd5b919050565b600080600080600080600080888a036101a0811215620007a357600080fd5b60c0811215620007b257600080fd5b5060405160c081016001600160401b0381118282101715620007d857620007d862000751565b80604052508951815260208a0151602082015260408a0151604082015260608a0151606082015260808a0151608082015260a08a015160a0820152809850506200082560c08a0162000767565b96506200083560e08a0162000767565b955061010089015194506200084e6101208a0162000767565b93506200085f6101408a0162000767565b6101608a0151610180909a0151989b979a5095989497939692505050565b600181811c908216806200089257607f821691505b602082108103620008b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200090757600081815260208120601f850160051c81016020861015620008e25750805b601f850160051c820191505b818110156200090357828155600101620008ee565b5050505b505050565b81516001600160401b0381111562000928576200092862000751565b62000940816200093984546200087d565b84620008b9565b602080601f8311600181146200097857600084156200095f5750858301515b600019600386901b1c1916600185901b17855562000903565b600085815260208120601f198616915b82811015620009a95788860151825594840194600190910190840162000988565b5085821015620009c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b8181101562000a0757858101830151858201604001528201620009e9565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620008b35760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051614ec862000af260003960008181610bc8015281816112490152818161131701528181611feb01528181612151015281816128c60152818161290b015281816129ec0152818161363501526138d201526000611dae01526000611d83015260006140f6015260006140ce01526000614029015260006140530152600061407d0152614ec86000f3fe6080604052600436106103ef5760003560e01c8063765718d711610208578063aa0b7db711610118578063d3dd9f74116100ab578063e31964f91161007a578063e31964f914610cef578063e5daeecd14610d0f578063e729ccd914610d2e578063f6794fdb14610d4e578063fd8dd42c14610d6e57600080fd5b8063d3dd9f7414610c7a578063d547741f14610c8f578063d776965114610caf578063e230712814610ccf57600080fd5b8063c090746f116100e7578063c090746f14610bea578063c3c5a54714610c0a578063c5e3abed14610c2a578063d3d37a3114610c5a57600080fd5b8063aa0b7db714610b61578063aa8af22114610b81578063ae04d45d14610b96578063ae86ed8914610bb657600080fd5b806392be2ab81161019b5780639eef70b81161016a5780639eef70b814610ab9578063a217fddf14610ae9578063a441d06714610afe578063a69df4b514610b1e578063a8ca529f14610b3357600080fd5b806392be2ab814610a4357806396fa50c914610a63578063971bdcf614610a835780639c75bd3014610a9857600080fd5b80638456cb59116101d75780638456cb59146109c657806384b0196e146109db5780638509d05e14610a0357806391d1485414610a2357600080fd5b8063765718d71461095357806377f40564146109665780637c0bdfc21461098657806382cf4bc4146109a657600080fd5b80634a36fdb4116103035780635c975abb116102965780636f6a46b1116102655780636f6a46b1146108be5780636fdcbef4146108de578063723f244e146108f357806374288f721461091357806375cd11ad1461093357600080fd5b80635c975abb146108505780635c99d8cc146108685780636da518de146108885780636f12bbe71461089e57600080fd5b80635312ea8e116102d25780635312ea8e146107bc5780635651e877146107dc578063582abd12146107fc57806359e20b681461083057600080fd5b80634a36fdb4146107295780634e36ee6a1461075157806351c6476b1461077157806352f23011146107a757600080fd5b8063238041a9116103865780633474a4a6116103555780633474a4a6146105f157806334f95dd5146106ca578063362f04c0146106df57806336568abe146106f45780633f4ba83a1461071457600080fd5b8063238041a91461056a578063248a9ca31461058a5780632da5ea17146105ba5780632f2ff15d146105cf57600080fd5b806307d7d923116103c257806307d7d923146104e55780630a276c75146105135780630b5d000c146105285780631f5b9d3b1461055557600080fd5b806301ffc9a7146103f45780630232ebc11461042957806302fcc99814610455578063065bab2d146104ad575b600080fd5b34801561040057600080fd5b5061041461040f36600461455c565b610d8e565b60405190151581526020015b60405180910390f35b34801561043557600080fd5b506006546104439060ff1681565b60405160ff9091168152602001610420565b34801561046157600080fd5b5060125460135460145460155460165460175461048095949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610420565b3480156104b957600080fd5b506104cd6104c8366004614586565b610dc5565b6040516001600160a01b039091168152602001610420565b3480156104f157600080fd5b50610505610500366004614586565b610e2f565b604051908152602001610420565b34801561051f57600080fd5b50610505610ed5565b34801561053457600080fd5b5061054861054336600461459f565b610ef8565b6040516104209190614605565b34801561056157600080fd5b50600954610505565b34801561057657600080fd5b5061050561058536600461462f565b61104c565b34801561059657600080fd5b506105056105a5366004614586565b60009081526002602052604090206001015490565b3480156105c657600080fd5b506104146110d8565b3480156105db57600080fd5b506105ef6105ea36600461464a565b6110ec565b005b3480156105fd57600080fd5b50600754600854600954600a54600b54600c54600d54600e54600f546010546011546106529a996001600160a01b039081169998979695169392919060ff80821691610100810482169162010000909104168d565b604080519d8e526001600160a01b039c8d1660208f01528d019a909a5260608c019890985260808b019690965260a08a01949094529690911660c088015260e087015261010086019490945261012085019390935260ff9283166101408501528216610160840152166101808201526101a001610420565b3480156106d657600080fd5b50610505611116565b3480156106eb57600080fd5b5061050561116d565b34801561070057600080fd5b506105ef61070f36600461464a565b611179565b34801561072057600080fd5b506105ef6111f7565b34801561073557600080fd5b506006546104cd9064010000000090046001600160a01b031681565b34801561075d57600080fd5b506006546104439062010000900460ff1681565b34801561077d57600080fd5b5061050561078c36600461462f565b6001600160a01b03166000908152601e602052604090205490565b3480156107b357600080fd5b5061041461120d565b3480156107c857600080fd5b506105ef6107d7366004614586565b611227565b3480156107e857600080fd5b506105ef6107f73660046146bc565b61133e565b34801561080857600080fd5b506105057f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4081565b34801561083c57600080fd5b5061041461084b36600461462f565b61141c565b34801561085c57600080fd5b5060015460ff16610414565b34801561087457600080fd5b5061050561088336600461462f565b6114cc565b34801561089457600080fd5b5061050560055481565b3480156108aa57600080fd5b506105ef6108b936600461462f565b6114f6565b3480156108ca57600080fd5b506105ef6108d93660046146bc565b6115a3565b3480156108ea57600080fd5b50610414611688565b3480156108ff57600080fd5b506105ef61090e366004614779565b6116a2565b34801561091f57600080fd5b5061050561092e36600461462f565b6116c4565b34801561093f57600080fd5b506018546104cd906001600160a01b031681565b6105ef610961366004614803565b6117ce565b34801561097257600080fd5b506105ef61098136600461462f565b611b89565b34801561099257600080fd5b506105ef6109a13660046146bc565b611c3e565b3480156109b257600080fd5b506105ef6109c1366004614586565b611d01565b3480156109d257600080fd5b506105ef611d62565b3480156109e757600080fd5b506109f0611d75565b60405161042097969594939291906148c9565b348015610a0f57600080fd5b50610505610a1e36600461462f565b611dfe565b348015610a2f57600080fd5b50610414610a3e36600461464a565b611e12565b348015610a4f57600080fd5b506105ef610a5e366004614586565b611e3d565b348015610a6f57600080fd5b50610505610a7e36600461462f565b611e4e565b348015610a8f57600080fd5b50610505611eed565b348015610aa457600080fd5b50600654610414906301000000900460ff1681565b348015610ac557600080fd5b50610414610ad436600461462f565b60196020526000908152604090205460ff1681565b348015610af557600080fd5b50610505600081565b348015610b0a57600080fd5b506105ef610b1936600461462f565b611f22565b348015610b2a57600080fd5b506105ef6121c4565b348015610b3f57600080fd5b50610b53610b4e36600461459f565b612255565b604051610420929190614939565b348015610b6d57600080fd5b506105ef610b7c366004614967565b61240f565b348015610b8d57600080fd5b506105ef612a5e565b348015610ba257600080fd5b506105ef610bb1366004614586565b612add565b348015610bc257600080fd5b506104cd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610bf657600080fd5b506105ef610c053660046149b6565b612aee565b348015610c1657600080fd5b50610414610c2536600461462f565b612b8f565b348015610c3657600080fd5b50610414610c4536600461462f565b601a6020526000908152604090205460ff1681565b348015610c6657600080fd5b506105ef610c75366004614586565b612b9c565b348015610c8657600080fd5b506105ef612c25565b348015610c9b57600080fd5b506105ef610caa36600461464a565b612d04565b348015610cbb57600080fd5b506105ef610cca3660046149e0565b612d29565b348015610cdb57600080fd5b50610505610cea36600461462f565b612e39565b348015610cfb57600080fd5b506105ef610d0a366004614a59565b612f4d565b348015610d1b57600080fd5b5060065461044390610100900460ff1681565b348015610d3a57600080fd5b506105ef610d4936600461462f565b612fe6565b348015610d5a57600080fd5b506105ef610d69366004614a83565b61306a565b348015610d7a57600080fd5b50610b53610d8936600461459f565b613118565b60006001600160e01b03198216637965db0b60e01b1480610dbf57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000610dd1601f6132de565b8210610e245760405162461bcd60e51b815260206004820152601d60248201527f4661726d64726f703a20696e646578206f7574206f6620626f756e647300000060448201526064015b60405180910390fd5b610dbf601f836132e8565b6014546000904210801590610e4657506015544211155b15610e7b57600654606490610e649062010000900460ff1682614adc565b610e719060ff1684614af5565b610dbf9190614b14565b6016544210801590610e8f57506017544211155b15610ed1576006546301000000900460ff1615610eb957600654606490610e649060ff1682614adc565b600654606490610e6490610100900460ff1682614adc565b5090565b6000610edf611688565b15610ef157610eec611eed565b905090565b5060075490565b606081831115610f425760405162461bcd60e51b815260206004820152601560248201527411985c9b591c9bdc0e881cdd185c9d080f88195b99605a1b6044820152606401610e1b565b610f4c601f6132de565b821115610f9b5760405162461bcd60e51b815260206004820152601d60248201527f4661726d64726f703a20696e646578206f7574206f6620626f756e64730000006044820152606401610e1b565b6000610fa78484614b36565b6001600160401b03811115610fbe57610fbe614676565b604051908082528060200260200182016040528015610fe7578160200160208202803683370190505b509050835b8381101561104457610fff601f826132e8565b8261100a8784614b36565b8151811061101a5761101a614b49565b6001600160a01b03909216602092830291909101909101528061103c81614b5f565b915050610fec565b509392505050565b6000611057826114cc565b60065460405163a4f82f2760e01b81526001600160a01b0385811660048301526401000000009092049091169063a4f82f2790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce9190614b78565b610dbf9190614b36565b60006110e2611eed565b6009541015919050565b600082815260026020526040902060010154611107816132f4565b61111183836132fe565b505050565b60115460009060ff61010090910416600a1461113b5750601154610100900460ff1690565b600754600a5460009190611150906064614af5565b61115a9190614b14565b9050611167816064614b36565b91505090565b6000610eec601f6132de565b6001600160a01b03811633146111e95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e1b565b6111f38282613384565b5050565b6000611202816132f4565b61120a6133eb565b50565b6014546000904210801590610eec57505060155442111590565b6000611232816132f4565b6040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc9190614b78565b101561130a5760405162461bcd60e51b815260206004820152601e60248201527f4661726d64726f703a20696e73756666696369656e742062616c616e636500006044820152606401610e1b565b6111f36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338461343d565b6000611349816132f4565b6113516134a0565b60005b8251811015611111576019600084838151811061137357611373614b49565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156113c8575060006113c68483815181106113b9576113b9614b49565b60200260200101516114cc565b115b80156113e357506010546017546113df9190614b91565b4210155b1561140a5761140a8382815181106113fd576113fd614b49565b60200260200101516134e6565b8061141481614b5f565b915050611354565b60008061142883611e4e565b11801561144e57506001600160a01b0382166000908152601a602052604090205460ff16155b801561146957506017544210158061146957506114696110d8565b1561147657506001919050565b6001600160a01b03821660009081526019602052604090205460ff161580156114a7575060006114a5836114cc565b115b8015610dbf57506010546017546114be9190614b91565b42101592915050565b919050565b600080806114db601b856136a3565b9150915081156114ec579392505050565b5060009392505050565b6000611501816132f4565b6001600160a01b0382166115745760405162461bcd60e51b815260206004820152603460248201527f4661726d64726f703a20616c6c6f636174696f6e2070726f76696465722063616044820152736e6e6f74206265207a65726f206164647265737360601b6064820152608401610e1b565b50600680546001600160a01b0390921664010000000002640100000000600160c01b0319909216919091179055565b60006115ae816132f4565b6115b66134a0565b60005b8251811015611111576115e48382815181106115d7576115d7614b49565b6020026020010151612b8f565b611676576116158382815181106115fd576115fd614b49565b6020026020010151601f6136c890919063ffffffff16565b507f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e983828151811061164957611649614b49565b602002602001015160405161166d91906001600160a01b0391909116815260200190565b60405180910390a15b8061168081614b5f565b9150506115b9565b6016546000904210801590610eec57505060175442111590565b60006116ad816132f4565b506011805460ff191660ff92909216919091179055565b60006116cf82612b8f565b80156116de57506116de61120d565b806116ea575060145442105b156116f857610dbf8261104c565b611700611688565b801561171657506006546301000000900460ff16155b1561172457610dbf82612e39565b61172c611688565b801561174157506006546301000000900460ff165b156117c657600954611751611eed565b61175b9190614b36565b6001600160a01b0383166000908152601e6020526040902054600c546117819190614b36565b106117a057600954611791611eed565b61179b9190614b36565b610dbf565b6001600160a01b0382166000908152601e6020526040902054600c54610dbf9190614b36565b506000919050565b6117d66134a0565b6012544210156118425760405162461bcd60e51b815260206004820152603160248201527f4661726d64726f703a20726567697374726174696f6e20706572696f642068616044820152701cc81b9bdd081cdd185c9d1959081e595d607a1b6064820152608401610e1b565b6013544211156118a45760405162461bcd60e51b815260206004820152602760248201527f4661726d64726f703a20726567697374726174696f6e20706572696f642068616044820152661cc8195b99195960ca1b6064820152608401610e1b565b6005546118b19083614b91565b4211156119005760405162461bcd60e51b815260206004820152601b60248201527f4661726d64726f703a207369676e6174757265206578706972656400000000006044820152606401610e1b565b61190b3383836136dd565b6119575760405162461bcd60e51b815260206004820152601b60248201527f4661726d64726f703a20496e76616c6964207369676e617475726500000000006044820152606401610e1b565b61196033612b8f565b156119ad5760405162461bcd60e51b815260206004820152601c60248201527f4661726d64726f703a20616c72656164792072656769737465726564000000006044820152606401610e1b565b600f543410156119ff5760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a20696e73756666696369656e74206665650000000000006044820152606401610e1b565b611a0a601f336136c8565b50600f5415611aaf57601854600f546040516000926001600160a01b031691908381818185875af1925050503d8060008114611a62576040519150601f19603f3d011682016040523d82523d6000602084013e611a67565b606091505b5050905080611aad5760405162461bcd60e51b81526020600482015260126024820152714661696c656420746f2073656e642066656560701b6044820152606401610e1b565b505b600f54600090611abf9034614b36565b90508015611b5157604051600090339083908381818185875af1925050503d8060008114611b09576040519150601f19603f3d011682016040523d82523d6000602084013e611b0e565b606091505b5050905080611b4f5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606401610e1b565b505b6040513381527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99060200160405180910390a1505050565b6000611b94816132f4565b611b9c6134a0565b611ba582612b8f565b15611bf25760405162461bcd60e51b815260206004820152601c60248201527f4661726d64726f703a20616c72656164792072656769737465726564000000006044820152606401610e1b565b611bfd601f836136c8565b506040516001600160a01b03831681527f2d3734a8e47ac8316e500ac231c90a6e1848ca2285f40d07eaa52005e4b3a0e99060200160405180910390a15050565b6000611c49816132f4565b611c516134a0565b60005b8251811015611111576000611c81848381518110611c7457611c74614b49565b6020026020010151611e4e565b118015611cc85750601a6000848381518110611c9f57611c9f614b49565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16155b15611cef57611cef838281518110611ce257611ce2614b49565b6020026020010151613780565b80611cf981614b5f565b915050611c54565b6000611d0c816132f4565b60008211611d5c5760405162461bcd60e51b815260206004820152601c60248201527f4661726d64726f703a206361702063616e6e6f74206265207a65726f000000006044820152606401610e1b565b50600c55565b6000611d6d816132f4565b61120a613941565b600060608082808083611da97f0000000000000000000000000000000000000000000000000000000000000000600361397c565b611dd47f0000000000000000000000000000000000000000000000000000000000000000600461397c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000611e0982611e4e565b6110ce836114cc565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611e48816132f4565b50600f55565b60075460095460009110808015611e665750600b5415155b15611ee457600a54600754600091611e7d91614b36565b600b546001600160a01b0386166000908152601e602052604081205492935091611ea8908490614af5565b611eb29190614b14565b6001600160a01b0386166000908152601e602052604081205491925090611eda908390614b36565b9695505050505050565b50600092915050565b600a546007546000918291611f029190614b36565b601154909150611f159060ff1682614af5565b600a546111679190614b91565b6000611f2d816132f4565b6000806000611f3b85611e4e565b118015611f6157506001600160a01b0384166000908152601a602052604090205460ff16155b1561201257611f6f84611e4e565b915060008211611fc15760405162461bcd60e51b815260206004820181905260248201527f4661726d64726f703a206e6f2065786365737320616d6f756e7420666f756e646044820152606401610e1b565b6001600160a01b038085166000908152601a60205260409020805460ff19166001179055612012907f000000000000000000000000000000000000000000000000000000000000000016338461343d565b6001600160a01b03841660009081526019602052604090205460ff1615801561204357506000612041856114cc565b115b801561205e575060105460175461205a9190614b91565b4210155b15612178576001600160a01b03841660009081526019602052604090205460ff16156120cc5760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a20616c726561647920756e6c6f636b65640000000000006044820152606401610e1b565b6120d584611dfe565b9050600081116121275760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a206e6f206465706f73697420666f756e640000000000006044820152606401610e1b565b6001600160a01b038085166000908152601960205260409020805460ff19166001179055612178907f000000000000000000000000000000000000000000000000000000000000000016338361343d565b6001600160a01b0384167ff779df072f94d207563b1ba8c286814086f1e6bb436a2652e307dccc56ed79e86121ad8484614b91565b60405190815260200160405180910390a250505050565b6121cc6134a0565b60006121d733611e4e565b1180156121f45750336000908152601a602052604090205460ff16155b156122025761220233613780565b3360009081526019602052604090205460ff1615801561222a57506000612228336114cc565b115b801561224557506010546017546122419190614b91565b4210155b1561225357612253336134e6565b565b606080612262601b613a20565b83111561227657612273601b613a20565b92505b8284106122bb5760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e6e8c2e4e840d2dcc8caf606b1b6044820152606401610e1b565b60006122c78585614b36565b6001600160401b038111156122de576122de614676565b604051908082528060200260200182016040528015612307578160200160208202803683370190505b50905060006123168686614b36565b6001600160401b0381111561232d5761232d614676565b604051908082528060200260200182016040528015612356578160200160208202803683370190505b509050855b8581101561240157600080612371601b84613a2b565b909250905081856123828b86614b36565b8151811061239257612392614b49565b60200260200101906001600160a01b031690816001600160a01b0316815250506123bb82611e4e565b6123c59082614b36565b846123d08b86614b36565b815181106123e0576123e0614b49565b602002602001018181525050505080806123f990614b5f565b91505061235b565b5090925090505b9250929050565b612417613a3a565b61241f6134a0565b60055461242c9083614b91565b42111561247b5760405162461bcd60e51b815260206004820152601b60248201527f4661726d64726f703a207369676e6174757265206578706972656400000000006044820152606401610e1b565b6124863383836136dd565b6124d25760405162461bcd60e51b815260206004820152601b60248201527f4661726d64726f703a20496e76616c6964207369676e617475726500000000006044820152606401610e1b565b600083116125225760405162461bcd60e51b815260206004820152601860248201527f4661726d64726f703a20616d6f756e74206973207a65726f00000000000000006044820152606401610e1b565b61252a61120d565b801561253a575061253a33612b8f565b806125485750612548611688565b6125945760405162461bcd60e51b815260206004820181905260248201527f4661726d64726f703a206e6f7420616c6c6f77656420746f206465706f7369746044820152606401610e1b565b600061259f336116c4565b9050600081116125fd5760405162461bcd60e51b8152602060048201526024808201527f4661726d64726f703a206465706f73697461626c6520616d6f756e74206973206044820152637a65726f60e01b6064820152608401610e1b565b6000612607611688565b156127ed57600c54336000908152601e602052604090205461262a908790614b91565b11156126485760405162461bcd60e51b8152600401610e1b90614ba4565b81851115612654578194505b6006546301000000900460ff161561278457600e54600d5460405163af500ba360e01b81523360048201526001600160a01b039091169063af500ba390602401602060405180830381865afa1580156126b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d59190614b78565b10156127605760405162461bcd60e51b815260206004820152604e60248201527f4661726d64726f703a20596f7520646f206e6f74206861766520656e6f75676860448201527f205374616b65642046494e4320746f20706172746963697061746520696e207460648201526d6865205075626c69632053616c6560901b608482015260a401610e1b565b6006546064906127739060ff1687614af5565b61277d9190614b14565b90506127a9565b60065460649061279c90610100900460ff1687614af5565b6127a69190614b14565b90505b336000908152601e6020526040812080548792906127c8908490614b91565b9091555050600b80548691906000906127e2908490614b91565b909155506128339050565b8185111561280d5760405162461bcd60e51b8152600401610e1b90614ba4565b6006546064906128269062010000900460ff1687614af5565b6128309190614b14565b90505b600080612841601b336136a3565b91509150811561286857612862336128598984614b91565b601b9190613a93565b50612876565b612874601b3389613a93565b505b866007600201600082825461288b9190614b91565b90915550612899905061120d565b156128b95786600760030160008282546128b39190614b91565b90915550505b6128ee6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308a613ab1565b8215612a17576040516370a0823160e01b815233600482015283907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e9190614b78565b10156129db5760405162461bcd60e51b815260206004820152602660248201527f4661726d64726f703a20696e73756666696369656e742062616c616e636520666044820152656f722066656560d01b6064820152608401610e1b565b601854612a17906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169133911686613ab1565b60408051338152602081018990527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c910160405180910390a1505050506111116001600055565b6000612a69816132f4565b6006546301000000900460ff16612acd5760405162461bcd60e51b815260206004820152602260248201527f4661726d64726f703a204643465320697320616c726561647920696e61637469604482015261766560f01b6064820152608401610e1b565b506006805463ff00000019169055565b6000612ae8816132f4565b50601055565b6000612af9816132f4565b6001600160a01b038316612b685760405162461bcd60e51b815260206004820152603060248201527f4661726d64726f703a207374616b696e6720616d6f756e74732063616e6e6f7460448201526f206265207a65726f206164647265737360801b6064820152608401610e1b565b50600d80546001600160a01b0319166001600160a01b039390931692909217909155600e55565b6000610dbf601f83613aef565b6000612ba7816132f4565b600a54821015612c1f5760405162461bcd60e51b815260206004820152603760248201527f4661726d64726f703a206361702063616e6e6f74206265206c6573732074686160448201527f6e2067756172616e746565642073616c652076616c75650000000000000000006064820152608401610e1b565b50600755565b6000612c30816132f4565b6006546301000000900460ff1615612c8a5760405162461bcd60e51b815260206004820181905260248201527f4661726d64726f703a204643465320697320616c7265616479206163746976656044820152606401610e1b565b6016544211612cee5760405162461bcd60e51b815260206004820152602a60248201527f4661726d64726f703a205075626c696320726f756e6420686173206e6f7420736044820152691d185c9d1959081e595d60b21b6064820152608401610e1b565b506006805463ff00000019166301000000179055565b600082815260026020526040902060010154612d1f816132f4565b6111118383613384565b6000612d34816132f4565b60208201518251108015612d4f575081606001518260400151105b8015612d6257508160a001518260800151105b612da75760405162461bcd60e51b81526020600482015260166024820152754661726d64726f703a20696e76616c69642074696d6560501b6044820152606401610e1b565b81604001518260200151108015612dc5575081608001518260600151105b612e0a5760405162461bcd60e51b81526020600482015260166024820152754661726d64726f703a20696e76616c69642074696d6560501b6044820152606401610e1b565b508051601255602081015160135560408101516014556060810151601555608081015160165560a00151601755565b601154600090819062010000900460ff16612e52611116565b60065460405163a4f82f2760e01b81526001600160a01b0387811660048301526401000000009092049091169063a4f82f2790602401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec99190614b78565b612ed39190614af5565b612edd9190614b14565b600c54909150811115612eef5750600c545b6001600160a01b0383166000908152601e6020526040902054612f129082614b36565b600954909150612f20611eed565b612f2a9190614b36565b811115610dbf57600954612f3c611eed565b612f469190614b36565b9392505050565b6000612f58816132f4565b60008260ff1611612fb75760405162461bcd60e51b8152602060048201526024808201527f4661726d64726f703a2064656e6f6d696e61746f722063616e6e6f74206265206044820152637a65726f60e01b6064820152608401610e1b565b506011805462ffff00191661010060ff9485160262ff0000191617620100009290931691909102919091179055565b6000612ff1816132f4565b6001600160a01b0382166130475760405162461bcd60e51b815260206004820181905260248201527f4661726d64726f703a20616464726573732063616e6e6f74206265207a65726f6044820152606401610e1b565b50601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000613075816132f4565b60c88460ff1611156130995760405162461bcd60e51b8152600401610e1b90614bef565b60c88360ff1611156130bd5760405162461bcd60e51b8152600401610e1b90614bef565b60c88260ff1611156130e15760405162461bcd60e51b8152600401610e1b90614bef565b506006805462ffff0019166201000060ff9586160261ff00191617610100938516939093029290921760ff19169216919091179055565b606080613125601b613a20565b83111561313957613136601b613a20565b92505b82841061317e5760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840e6e8c2e4e840d2dcc8caf606b1b6044820152606401610e1b565b600061318a8585614b36565b6001600160401b038111156131a1576131a1614676565b6040519080825280602002602001820160405280156131ca578160200160208202803683370190505b50905060006131d98686614b36565b6001600160401b038111156131f0576131f0614676565b604051908082528060200260200182016040528015613219578160200160208202803683370190505b509050855b8581101561240157600080613234601b84613a2b565b909250905081856132458b86614b36565b8151811061325557613255614b49565b6001600160a01b039092166020928302919091019091015280846132798b86614b36565b8151811061328957613289614b49565b602002602001018181525050505080806132a290614b5f565b91505061321e565b60006020835110156132c6576132bf83613b11565b9050610dbf565b816132d18482614cbc565b5060ff9050610dbf565b90565b6000610dbf825490565b6000612f468383613b4f565b61120a8133613b79565b6133088282611e12565b6111f35760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556133403390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61338e8282611e12565b156111f35760008281526002602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6133f3613bd2565b6001805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040516001600160a01b03831660248201526044810182905261111190849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c1b565b60015460ff16156122535760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610e1b565b6010546017546134f69190614b91565b4210156135455760405162461bcd60e51b815260206004820152601e60248201527f4661726d64726f703a206c6f636b2074696d65206e6f742070617373656400006044820152606401610e1b565b6001600160a01b03811660009081526019602052604090205460ff16156135ae5760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a20616c726561647920756e6c6f636b65640000000000006044820152606401610e1b565b60006135b982611dfe565b90506000811161360b5760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a206e6f206465706f73697420666f756e640000000000006044820152606401610e1b565b6001600160a01b038083166000908152601960205260409020805460ff1916600117905561365c907f000000000000000000000000000000000000000000000000000000000000000016838361343d565b816001600160a01b03167f0f0bc5b519ddefdd8e5f9e6423433aa2b869738de2ae34d58ebc796fc749fa0d8260405161369791815260200190565b60405180910390a25050565b60008080806136bb866001600160a01b038716613cf0565b9097909650945050505050565b6000612f46836001600160a01b038416613d2a565b604080517f555de473c0691dad2578fac0f47ae8a743879daacb183338392f580610fa666460208201526001600160a01b038516918101919091526060810183905260009081906137469060800160405160208183030381529060405280519060200120613d79565b905060006137548285613da6565b9050611eda7f2aeb38be3df14d720aeb10a2de6df09b0fb3cd5c5ec256283a22d4593110ca4082611e12565b60175481904210158061379657506137966110d8565b6137e25760405162461bcd60e51b815260206004820152601860248201527f4661726d64726f703a2073616c65206e6f7420656e64656400000000000000006044820152606401610e1b565b6001600160a01b0381166000908152601a602052604090205460ff161561384b5760405162461bcd60e51b815260206004820152601a60248201527f4661726d64726f703a20616c726561647920726566756e6465640000000000006044820152606401610e1b565b600061385683611e4e565b9050600081116138a85760405162461bcd60e51b815260206004820181905260248201527f4661726d64726f703a206e6f2065786365737320616d6f756e7420666f756e646044820152606401610e1b565b6001600160a01b038084166000908152601a60205260409020805460ff191660011790556138f9907f000000000000000000000000000000000000000000000000000000000000000016848361343d565b826001600160a01b03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405161393491815260200190565b60405180910390a2505050565b6139496134a0565b6001805460ff1916811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833613420565b606060ff831461398f576132bf83613dc2565b81805461399b90614c34565b80601f01602080910402602001604051908101604052809291908181526020018280546139c790614c34565b8015613a145780601f106139e957610100808354040283529160200191613a14565b820191906000526020600020905b8154815290600101906020018083116139f757829003601f168201915b50505050509050610dbf565b6000610dbf82613e01565b60008080806136bb8686613e0c565b600260005403613a8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610e1b565b6002600055565b6000613aa9846001600160a01b03851684613e37565b949350505050565b6040516001600160a01b0380851660248301528316604482015260648101829052613ae99085906323b872dd60e01b90608401613469565b50505050565b6001600160a01b03811660009081526001830160205260408120541515612f46565b600080829050601f81511115613b3c578260405163305a27a960e01b8152600401610e1b9190614d7b565b8051613b4782614d8e565b179392505050565b6000826000018281548110613b6657613b66614b49565b9060005260206000200154905092915050565b613b838282611e12565b6111f357613b9081613e54565b613b9b836020613e66565b604051602001613bac929190614db2565b60408051601f198184030181529082905262461bcd60e51b8252610e1b91600401614d7b565b60015460ff166122535760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610e1b565b6000613c70826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166140019092919063ffffffff16565b9050805160001480613c91575080806020019051810190613c919190614e27565b6111115760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e1b565b6000818152600283016020526040812054819080613d1f57613d128585614010565b9250600091506124089050565b600192509050612408565b6000818152600183016020526040812054613d7157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610dbf565b506000610dbf565b6000610dbf613d8661401c565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000613db58585614147565b9150915061104481614189565b60606000613dcf836142d3565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000610dbf826132de565b60008080613e1a85856132e8565b600081815260029690960160205260409095205494959350505050565b60008281526002840160205260408120829055613aa984846142fb565b6060610dbf6001600160a01b03831660145b60606000613e75836002614af5565b613e80906002614b91565b6001600160401b03811115613e9757613e97614676565b6040519080825280601f01601f191660200182016040528015613ec1576020820181803683370190505b509050600360fc1b81600081518110613edc57613edc614b49565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613f0b57613f0b614b49565b60200101906001600160f81b031916908160001a9053506000613f2f846002614af5565b613f3a906001614b91565b90505b6001811115613fb2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f6e57613f6e614b49565b1a60f81b828281518110613f8457613f84614b49565b60200101906001600160f81b031916908160001a90535060049490941c93613fab81614e49565b9050613f3d565b508315612f465760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e1b565b6060613aa98484600085614307565b6000612f4683836143e2565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561407557507f000000000000000000000000000000000000000000000000000000000000000046145b1561409f57507f000000000000000000000000000000000000000000000000000000000000000090565b610eec604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080825160410361417d5760208301516040840151606085015160001a614171878285856143fa565b94509450505050612408565b50600090506002612408565b600081600481111561419d5761419d614e60565b036141a55750565b60018160048111156141b9576141b9614e60565b036142065760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610e1b565b600281600481111561421a5761421a614e60565b036142675760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610e1b565b600381600481111561427b5761427b614e60565b0361120a5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610e1b565b600060ff8216601f811115610dbf57604051632cd44ac360e21b815260040160405180910390fd5b6000612f468383613d2a565b6060824710156143685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e1b565b600080866001600160a01b031685876040516143849190614e76565b60006040518083038185875af1925050503d80600081146143c1576040519150601f19603f3d011682016040523d82523d6000602084013e6143c6565b606091505b50915091506143d7878383876144be565b979650505050505050565b60008181526001830160205260408120541515612f46565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561443157506000905060036144b5565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614485573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166144ae576000600192509250506144b5565b9150600090505b94509492505050565b6060831561452d578251600003614526576001600160a01b0385163b6145265760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e1b565b5081613aa9565b613aa983838151156145425781518083602001fd5b8060405162461bcd60e51b8152600401610e1b9190614d7b565b60006020828403121561456e57600080fd5b81356001600160e01b031981168114612f4657600080fd5b60006020828403121561459857600080fd5b5035919050565b600080604083850312156145b257600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156145fa5781516001600160a01b0316875295820195908201906001016145d5565b509495945050505050565b602081526000612f4660208301846145c1565b80356001600160a01b03811681146114c757600080fd5b60006020828403121561464157600080fd5b612f4682614618565b6000806040838503121561465d57600080fd5b8235915061466d60208401614618565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156146b4576146b4614676565b604052919050565b600060208083850312156146cf57600080fd5b82356001600160401b03808211156146e657600080fd5b818501915085601f8301126146fa57600080fd5b81358181111561470c5761470c614676565b8060051b915061471d84830161468c565b818152918301840191848101908884111561473757600080fd5b938501935b8385101561475c5761474d85614618565b8252938501939085019061473c565b98975050505050505050565b803560ff811681146114c757600080fd5b60006020828403121561478b57600080fd5b612f4682614768565b600082601f8301126147a557600080fd5b81356001600160401b038111156147be576147be614676565b6147d1601f8201601f191660200161468c565b8181528460208386010111156147e657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561481657600080fd5b8235915060208301356001600160401b0381111561483357600080fd5b61483f85828601614794565b9150509250929050565b60005b8381101561486457818101518382015260200161484c565b50506000910152565b60008151808452614885816020860160208601614849565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b838110156145fa578151875295820195908201906001016148ad565b60ff60f81b8816815260e0602082015260006148e860e083018961486d565b82810360408401526148fa818961486d565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061492b8185614899565b9a9950505050505050505050565b60408152600061494c60408301856145c1565b828103602084015261495e8185614899565b95945050505050565b60008060006060848603121561497c57600080fd5b833592506020840135915060408401356001600160401b038111156149a057600080fd5b6149ac86828701614794565b9150509250925092565b600080604083850312156149c957600080fd5b6149d283614618565b946020939093013593505050565b600060c082840312156149f257600080fd5b60405160c081018181106001600160401b0382111715614a1457614a14614676565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60008060408385031215614a6c57600080fd5b614a7583614768565b915061466d60208401614768565b600080600060608486031215614a9857600080fd5b614aa184614768565b9250614aaf60208501614768565b9150614abd60408501614768565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610dbf57610dbf614ac6565b6000816000190483118215151615614b0f57614b0f614ac6565b500290565b600082614b3157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610dbf57610dbf614ac6565b634e487b7160e01b600052603260045260246000fd5b600060018201614b7157614b71614ac6565b5060010190565b600060208284031215614b8a57600080fd5b5051919050565b80820180821115610dbf57610dbf614ac6565b6020808252602b908201527f4661726d64726f703a20616d6f756e742065786365656473206465706f73697460408201526a18589b1948185b5bdd5b9d60aa1b606082015260800190565b60208082526025908201527f4661726d64726f703a206665652063616e6e6f74206265206d6f72652074686160408201526406e203230360dc1b606082015260800190565b600181811c90821680614c4857607f821691505b602082108103614c6857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561111157600081815260208120601f850160051c81016020861015614c955750805b601f850160051c820191505b81811015614cb457828155600101614ca1565b505050505050565b81516001600160401b03811115614cd557614cd5614676565b614ce981614ce38454614c34565b84614c6e565b602080601f831160018114614d1e5760008415614d065750858301515b600019600386901b1c1916600185901b178555614cb4565b600085815260208120601f198616915b82811015614d4d57888601518255948401946001909101908401614d2e565b5085821015614d6b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000612f46602083018461486d565b80516020808301519190811015614c685760001960209190910360031b1b16919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614dea816017850160208801614849565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614e1b816028840160208801614849565b01602801949350505050565b600060208284031215614e3957600080fd5b81518015158114612f4657600080fd5b600081614e5857614e58614ac6565b506000190190565b634e487b7160e01b600052602160045260246000fd5b60008251614e88818460208701614849565b919091019291505056fea2646970667358221220a17d35dfdf49fc40a1c448ac187770359bede6b43bb032f9aba5bfdc0c61ccc164736f6c634300081000330000000000000000000000000000000000000000000000000000000068725c500000000000000000000000000000000000000000000000000000000068837fd000000000000000000000000000000000000000000000000000000000688622d00000000000000000000000000000000000000000000000000000000068877450000000000000000000000000000000000000000000000000000000006887838c000000000000000000000000000000000000000000000000000000006888d3e000000000000000000000000019e31b6ce7baa2dd9e822b2eb762794313063720000000000000000000000000a856098dcbc1b2b3a9c96c35c32bc4f71e49aed2000000000000000000000000000000000000000000017931c1885d0746c800000000000000000000000000005402e8523a99c97275a96a11d8d69b824ea9c89d000000000000000000000000a8a15ec4d496521d3a4b70e3cc2c15ff1701e3be0000000000000000000000000000000000000000000069e10de76676d08000000000000000000000000000000000000000000000000000000000000000278d00