0 txs
5 calls
constructor
constructor()
functions
checkValidity
viewfunction checkValidity(bytes signature, string action) view returns (bool)
checkValidityWithoutSender
viewfunction checkValidityWithoutSender(bytes signature, string action) view returns (bool)
claimActive
viewfunction claimActive() view returns (bool)
claimScheduleOf
viewfunction claimScheduleOf(uint8 claimType) view returns (uint256 startCycle)
claimStartDate
viewfunction claimStartDate() view returns (uint256)
claimToken
viewfunction claimToken() view returns (address)
currentNFTUnlockedBP
viewfunction currentNFTUnlockedBP() view returns (uint64)
currentNFTUnlockTimestamp
viewfunction currentNFTUnlockTimestamp() view returns (uint128)
dc
viewfunction dc() view returns (address)
dcV2
viewfunction dcV2() view returns (address)
getChainID
viewfunction getChainID() view returns (uint256)
getClaimInfo
viewfunction getClaimInfo(address _user, uint8 _claimType) view returns (uint128 claimableAmount, uint256 claimableExpiry)
getClaimInfoByNFT
viewfunction getClaimInfoByNFT(uint256 _collectionId, uint256 _tokenId) view returns (uint128 claimableAmount, uint256 claimableExpiry)
getClaimSchedule
viewfunction getClaimSchedule(uint8 _claimType) view returns (tuple)
getRewardsClaimInfoByNFT
viewfunction getRewardsClaimInfoByNFT(uint256 _collectionId, uint256 _tokenId) view returns (uint128 claimableAmount, uint256 claimableExpiry)
getTotalClaimableAmountsByNFTs
viewfunction getTotalClaimableAmountsByNFTs(uint256 _collectionId, uint256[] _tokenIds) view returns (uint128 totalClaimable)
getUserClaimDataByCollections
viewfunction getUserClaimDataByCollections(tuple[] _nftCollectionsInfo) view returns (tuple[] collectionClaimInfo)
multiClaim
viewfunction multiClaim() view returns (address)
nftCollections
viewfunction nftCollections(uint256) view returns (address)
nftUsersClaimData
viewfunction nftUsersClaimData(uint256 collectionId, uint256 tokenId) view returns (uint128 airdropTotalClaimable, uint128 rewardsTotalClaimable, uint128 airdropClaimed, uint128 rewardsClaimed)
owner
viewfunction owner() view returns (address)
previousNFTUnlockedBP
viewfunction previousNFTUnlockedBP() view returns (uint64)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
signatureActionPrefix
viewfunction signatureActionPrefix() view returns (string)
signer
viewfunction signer() view returns (address)
unclaimedNftRewards
viewfunction unclaimedNftRewards(uint256 collectionId) view returns (uint128 lastTokenId, uint128 totalUnclaimed)
unclaimedNFTRewardsWithdrawn
viewfunction unclaimedNFTRewardsWithdrawn() view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
upgrader
viewfunction upgrader() view returns (address)
upgraderRenounced
viewfunction upgraderRenounced() view returns (bool)
usedSignatures
viewfunction usedSignatures(bytes signature) view returns (bool)
usersClaimData
viewfunction usersClaimData(address userAddress, uint8 claimType) view returns (uint128 totalClaimable, uint128 claimed)
addNFTUnlockedBPAndSetUnlockTs
nonpayablefunction addNFTUnlockedBPAndSetUnlockTs(uint64 _additionalNFTUnlockedBP, uint128 _newUnlockTimestamp)
claim
nonpayablefunction claim(address _vault, uint8[] _claimTypes)
claimAfterSetClaimableByUserMultiple
nonpayablefunction claimAfterSetClaimableByUserMultiple(address _vault, uint128[] _claimables, uint8[] _claimTypes, bytes[] signatures)
claimFromMulti
nonpayablefunction claimFromMulti(address _requester, uint8[] _claimTypes)
claimInNFTs
nonpayablefunction claimInNFTs(address _vault, tuple[] _nftCollectionClaimRequests, bool _withWalletRewards)
claimInNFTsFromMulti
nonpayablefunction claimInNFTsFromMulti(address _requester, tuple[] _nftCollectionClaimRequests, bool _withWalletRewards)
depositClaimTokenAndStartClaim
nonpayablefunction depositClaimTokenAndStartClaim(uint256 _tokenAmount, uint256 _claimStartDate)
initialize
nonpayablefunction initialize(address _claimTokenAddress, address _kzgAddress, address _kubzAddress, address _ygpzAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceUpgrader
nonpayablefunction renounceUpgrader()
setClaimableByUser
nonpayablefunction setClaimableByUser(address _vault, uint128 _claimable, uint8 _claimType, bytes signature)
setClaimableByUserMultiple
nonpayablefunction setClaimableByUserMultiple(address _vault, uint128[] _claimables, uint8[] _claimTypes, bytes[] signatures)
setClaimables
nonpayablefunction setClaimables(address[] _addresses, uint128[] _claimables, uint8[] _claimTypes)
setClaimActive
nonpayablefunction setClaimActive(bool _claimActive)
setClaimSchedules
nonpayablefunction setClaimSchedules(uint8[] _claimTypes, tuple[] _claimSchedules)
setClaimStartDate
nonpayablefunction setClaimStartDate(uint256 _claimStartDate)
setMultiClaimAddress
nonpayablefunction setMultiClaimAddress(address _multiClaim)
setNFTClaimables
nonpayablefunction setNFTClaimables(tuple[] _nftClaimables)
setNFTClaimablesByUser
nonpayablefunction setNFTClaimablesByUser(tuple[] _nftClaimables, bytes[] signatures)
setRevealedNFTClaimable
nonpayablefunction setRevealedNFTClaimable(uint256 _collectionId, uint256 _tokenId, uint128 _additionalAirdropTotalClaimable)
setUnclaimedNFTRewards
nonpayablefunction setUnclaimedNFTRewards(uint256 _collectionId, uint128[] _unclaimTokenIds)
setUpgrader
nonpayablefunction setUpgrader(address _upgrader)
setupSigner
nonpayablefunction setupSigner(address _signer, string _signatureActionPrefix)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawClaimToken
nonpayablefunction withdrawClaimToken(address _receiver, uint256 _amount)
withdrawUnclaimedNFTRewards
nonpayablefunction withdrawUnclaimedNFTRewards(address _receiver)
events
ClaimedInNFTs
event ClaimedInNFTs(address indexed owner, uint128 amount, uint256 claimedAt)
ClaimSchedulesUpdated
event ClaimSchedulesUpdated()
ClaimStartDateUpdated
event ClaimStartDateUpdated(uint256 claimStartDate)
ClaimStatusUpdated
event ClaimStatusUpdated(bool claimActive)
ClaimTokenDepositedAndClaimStarted
event ClaimTokenDepositedAndClaimStarted(uint256 tokenAmount, uint256 claimStartDate)
ClaimTokenWithdrawn
event ClaimTokenWithdrawn(address receiver, uint256 amount)
Initialized
event Initialized(uint64 version)
MultiClaimAddressUpdated
event MultiClaimAddressUpdated(address newAddress)
NFTClaimablesUpdated
event NFTClaimablesUpdated(uint256 collectionId, uint256 tokenId)
NFTUnlockedBPAndUnlockTsUpdated
event NFTUnlockedBPAndUnlockTsUpdated(uint64 additionalNFTUnlockedBP, uint128 newUnlockTimestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RevealedNFTClaimableUpdated
event RevealedNFTClaimableUpdated(uint256 collectionId, uint256 tokenId, uint128 newAirdropTotalClaimable)
SignerUpdated
event SignerUpdated(address newSigner, string newsignatureActionPrefix)
UnclaimedNFTRewardsWithdrawn
event UnclaimedNFTRewardsWithdrawn(uint256 totalWithdrawn, uint256 withdrawnAt)
Upgraded
event Upgraded(address indexed implementation)
UpgraderUpdated
event UpgraderUpdated(address newUpgrader)
UserClaimed
event UserClaimed(address indexed user, uint128 amount, uint256 claimedAt)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AlreadyWithdrawn
error AlreadyWithdrawn()
ClaimNotAvailable
error ClaimNotAvailable()
ClaimNotClosed
error ClaimNotClosed()
ClaimTokenZeroAddress
error ClaimTokenZeroAddress()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedInnerCall
error FailedInnerCall()
InvalidClaimSetup
error InvalidClaimSetup()
InvalidCollectionId
error InvalidCollectionId()
InvalidDelegate
error InvalidDelegate()
InvalidInitialization
error InvalidInitialization()
InvalidWithdrawalSetup
error InvalidWithdrawalSetup()
MismatchedArrays
error MismatchedArrays()
NFTRewardsNotExpired
error NFTRewardsNotExpired()
NoClaimableToken
error NoClaimableToken()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Uint128Overflow
error Uint128Overflow()
Unauthorized
error Unauthorized()
UpgraderRenounced
error UpgraderRenounced()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051615f7c620001046000396000818161381d0152818161384601526139b20152615f7c6000f3fe60806040526004361061038c5760003560e01c80637b2d3e69116101dc578063b607bc3011610102578063e2748429116100a0578063f2fde38b1161006f578063f2fde38b14610c0d578063f60c715814610c2d578063f8c8765e14610c4d578063f92b41bd14610c6d57600080fd5b8063e274842914610b7d578063e949580e14610b9d578063f0fd108414610bd8578063f163d71214610bf857600080fd5b8063c6e4fc93116100dc578063c6e4fc9314610afc578063cbaaccb414610b1c578063d4a6a2fd14610b3c578063d8a531a614610b5d57600080fd5b8063b607bc3014610a7d578063bc5800e514610abc578063bfca66c914610adc57600080fd5b8063920123391161017a578063ad3cb1cc11610149578063ad3cb1cc146109df578063af26974514610a10578063b21185b314610a30578063b4ab6cf114610a5057600080fd5b8063920123391461095257806397520f74146109725780639762891714610992578063ab14dee4146109b257600080fd5b806385c23195116101b657806385c23195146108b557806385eab8c6146108d55780638ad0838d146108f55780638da5cb5b1461091557600080fd5b80637b2d3e69146108545780638110c50f146108745780638131fd161461089557600080fd5b8063474954c3116102c15780635f03b6b21161025f5780636d5bc5ca1161022e5780636d5bc5ca146107725780636e35d395146107d3578063715018a61461081f57806373417b091461083457600080fd5b80635f03b6b2146106fc578063675151b2146107125780636acf6eac146107325780636afffd901461075257600080fd5b806351ca0ffa1161029b57806351ca0ffa1461061257806351fa7cc21461063457806352d1902d146106c6578063564b81ef146106e957600080fd5b8063474954c3146105a05780634d9c41a7146105c05780634f1ef286146105ff57600080fd5b80633284c3b11161032e578063416b3e1e11610308578063416b3e1e1461051f578063427fa2041461053f5780634451d89f14610560578063468169b31461058057600080fd5b80633284c3b1146104a057806332e52ae1146104c05780633c11bdd6146104e057600080fd5b8063232275c11161036a578063232275c1146103f3578063238ac933146104135780632f1521581461045057806330f899531461047057600080fd5b806319a8b4a0146103915780631b878f71146103b35780631d671c5b146103d3575b600080fd5b34801561039d57600080fd5b506103b16103ac366004614e33565b610c9a565b005b3480156103bf57600080fd5b506103b16103ce366004614e87565b610dc2565b3480156103df57600080fd5b506103b16103ee366004614ec0565b610e4a565b3480156103ff57600080fd5b506103b161040e366004614f01565b610fa6565b34801561041f57600080fd5b50600d54610433906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561045c57600080fd5b506103b161046b366004614f9a565b6110e4565b34801561047c57600080fd5b5061049061048b366004615098565b6113a6565b6040519015158152602001610447565b3480156104ac57600080fd5b506104906104bb366004615098565b611522565b3480156104cc57600080fd5b506103b16104db366004614e87565b61154b565b3480156104ec57600080fd5b506105006104fb366004615114565b61169a565b604080516001600160801b039093168352602083019190915201610447565b34801561052b57600080fd5b5061050061053a366004615145565b6117e5565b34801561054b57600080fd5b5060065461049090600160a81b900460ff1681565b34801561056c57600080fd5b50600654610433906001600160a01b031681565b34801561058c57600080fd5b506103b161059b366004615171565b611990565b3480156105ac57600080fd5b506103b16105bb366004615114565b6119dd565b3480156105cc57600080fd5b506007546105e790600160401b90046001600160801b031681565b6040516001600160801b039091168152602001610447565b6103b161060d36600461523d565b611ab6565b34801561061e57600080fd5b50610627611ad5565b60405161044791906152a6565b34801561064057600080fd5b5061069361064f366004615114565b6009602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b604080516001600160801b0395861681529385166020850152918416918301919091529091166060820152608001610447565b3480156106d257600080fd5b506106db611b63565b604051908152602001610447565b3480156106f557600080fd5b50466106db565b34801561070857600080fd5b506106db60055481565b34801561071e57600080fd5b506103b161072d3660046152e7565b611b80565b34801561073e57600080fd5b506103b161074d36600461534e565b611c53565b34801561075e57600080fd5b506103b161076d3660046153c5565b611e16565b34801561077e57600080fd5b506107b361078d3660046153f1565b600b602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610447565b3480156107df57600080fd5b506107b36107ee366004615145565b60086020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b34801561082b57600080fd5b506103b1611e9d565b34801561084057600080fd5b506103b161084f36600461540a565b611eb1565b34801561086057600080fd5b506103b161086f3660046153f1565b611f06565b34801561088057600080fd5b5060065461049090600160b01b900460ff1681565b3480156108a157600080fd5b50600154610433906001600160a01b031681565b3480156108c157600080fd5b50600454610433906001600160a01b031681565b3480156108e157600080fd5b506103b16108f036600461546b565b611f43565b34801561090157600080fd5b506105e7610910366004614f9a565b612106565b34801561092157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610433565b34801561095e57600080fd5b506103b161096d3660046154d6565b61216e565b34801561097e57600080fd5b506103b161098d366004615171565b612235565b34801561099e57600080fd5b506103b16109ad3660046152e7565b6122e8565b3480156109be57600080fd5b506109d26109cd36600461551d565b6123da565b6040516104479190615538565b3480156109eb57600080fd5b50610627604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610a1c57600080fd5b50600054610433906001600160a01b031681565b348015610a3c57600080fd5b506103b1610a4b366004614e87565b612498565b348015610a5c57600080fd5b50610a70610a6b366004615590565b6124ee565b60405161044791906155d1565b348015610a8957600080fd5b50600654610aa490600160b81b90046001600160401b031681565b6040516001600160401b039091168152602001610447565b348015610ac857600080fd5b50610500610ad7366004615114565b6128eb565b348015610ae857600080fd5b50610433610af73660046153f1565b6129f7565b348015610b0857600080fd5b506103b1610b17366004615688565b612a21565b348015610b2857600080fd5b506103b1610b373660046156bd565b612a33565b348015610b4857600080fd5b5060065461049090600160a01b900460ff1681565b348015610b6957600080fd5b50600354610433906001600160a01b031681565b348015610b8957600080fd5b50600754610aa4906001600160401b031681565b348015610ba957600080fd5b50610490610bb83660046156f2565b8051602081830181018051600c8252928201919093012091525460ff1681565b348015610be457600080fd5b506103b1610bf3366004614e33565b612ae5565b348015610c0457600080fd5b506103b1612be3565b348015610c1957600080fd5b506103b1610c28366004614e87565b612c6e565b348015610c3957600080fd5b506103b1610c48366004615726565b612cac565b348015610c5957600080fd5b506103b1610c6836600461575f565b612fac565b348015610c7957600080fd5b506106db610c8836600461551d565b600a6020526000908152604090205481565b610ca26132bd565b600654600160a01b900460ff161580610cbb5750600554155b80610cc7575060055442105b15610ce557604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b0316610d0e5760405163206d376f60e01b815260040160405180910390fd5b6001546001600160a01b0316336001600160a01b031614610d41576040516282b42960e81b815260040160405180910390fd5b6000610d80848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506132f592505050565b6006546001600160801b03919091169150610da5906001600160a01b0316858361337f565b50610dbd6001600080516020615f2783398151915255565b505050565b610dca6133f2565b600654600160b01b900460ff1615610df557604051639a8d50df60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527fef1cd24a01120da2689be4a7980f64da049419dcd5866a87bff7b5d978a5078c906020015b60405180910390a150565b610e526133f2565b600654600754600160b81b9091046001600160401b0390811691600160401b90046001600160801b03169084161580610e9e5750612710610e9385846157c6565b6001600160401b0316115b80610ebb5750806001600160801b0316836001600160801b031611155b15610ed957604051630a6428c360e11b815260040160405180910390fd5b600780546001600160401b038481166001600160c01b031990921691909117600160401b6001600160801b0387160217909155600680548692601791610f28918591600160b81b9004166157c6565b82546101009290920a6001600160401b0381810219909316918316021790915560065460075460408051600160b81b9093049093168252600160401b90046001600160801b031660208201527f9192c0214a8cdbd582aaaecda67c8e54fb3c6c1b5762e9abf01d78bf9681cf5992500160405180910390a150505050565b610fae6133f2565b848381141580610fbe5750808214155b15610fdc5760405163a121188760e01b815260040160405180910390fd5b60005b818110156110da57858582818110610ff957610ff96157e6565b905060200201602081019061100e91906157fc565b600860008a8a85818110611024576110246157e6565b90506020020160208101906110399190614e87565b6001600160a01b03166001600160a01b03168152602001908152602001600020600086868581811061106d5761106d6157e6565b9050602002016020810190611082919061551d565b600581111561109357611093615817565b60058111156110a4576110a4615817565b8152602081019190915260400160002080546001600160801b0319166001600160801b0392909216919091179055600101610fdf565b5050505050505050565b600254839081106111085760405163017e9c7d60e41b815260040160405180910390fd5b6111106133f2565b624f1a00600554611121919061582d565b421161114057604051632e9cc64960e21b815260040160405180910390fd5b6000848152600b602052604090208280158061119057508484600081811061116a5761116a6157e6565b905060200201602081019061117f91906157fc565b82546001600160801b039182169116115b156111ae57604051633be4064960e01b815260040160405180910390fd5b6000805b828110156113115780156112495786866111cd600184615840565b8181106111dc576111dc6157e6565b90506020020160208101906111f191906157fc565b6001600160801b031687878381811061120c5761120c6157e6565b905060200201602081019061122191906157fc565b6001600160801b0316101561124957604051633be4064960e01b815260040160405180910390fd5b60008881526009602052604081208189898581811061126a5761126a6157e6565b905060200201602081019061127f91906157fc565b6001600160801b03908116825260208083019390935260409182016000908120835160808101855281548085168252600160801b90819004851696820187905260019092015480851695820195909552930490911660608301819052919350916112e99190615853565b90506001600160801b03811615611307576113048185615873565b93505b50506001016111b2565b50858561131f600185615840565b81811061132e5761132e6157e6565b905060200201602081019061134391906157fc565b83546001600160801b0319166001600160801b039182161780855582918591601091611379918591600160801b90910416615873565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050505050505050565b600d546040516000916001600160a01b0316906114569061141a906113d190339087906020016158af565b604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061344d92505050565b6001600160a01b0316146114a55760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b60448201526064015b60405180910390fd5b600c84846040516114b79291906158e7565b9081526040519081900360200190205460ff16156115175760405162461bcd60e51b815260206004820152601a60248201527f7369676e61747572652063616e6e6f7420626520726575736564000000000000604482015260640161149c565b5060015b9392505050565b600d546040516000916001600160a01b0316906114569061141a906113d19086906020016158f7565b6115536133f2565b600654600160a81b900460ff161561157e57604051636507689f60e01b815260040160405180910390fd5b624f1a0060055461158f919061582d565b42116115ae57604051632e9cc64960e21b815260040160405180910390fd5b6001600160a01b0381166115d557604051633be4064960e01b815260040160405180910390fd5b6000805b600254811015611649576000818152600b602052604090208054600160801b90046001600160801b0316801561163f57600654611629906001600160a01b0316866001600160801b03841661337f565b61163c6001600160801b0382168561582d565b93505b50506001016115d9565b506006805460ff60a81b1916600160a81b179055604080518281524260208201527f51c3c049b061ef6ad9b287a90842a19c63db19253589bf999293790b4adffa1491015b60405180910390a15050565b6006546000908190600160a01b900460ff1615806116b85750600554155b806116c4575060055442105b156116e257604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b031661170b5760405163206d376f60e01b815260040160405180910390fd5b6002548490811061172f5760405163017e9c7d60e41b815260040160405180910390fd5b6000858152600960209081526040808320878452825291829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015261179381613479565b6006549094506001600160401b03600160b81b90910416612710146117b95760006117da565b6007546117da90624f1a0090600160401b90046001600160801b031661582d565b925050509250929050565b6006546000908190600160a01b900460ff1615806118035750600554155b8061180f575060055442105b1561182d57604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b03166118565760405163206d376f60e01b815260040160405180910390fd5b6000600a600085600581111561186e5761186e615817565b600581111561187f5761187f615817565b815260200190815260200160002060010180549050905061192260086000876001600160a01b03166001600160a01b0316815260200190815260200160002060008660058111156118d2576118d2615817565b60058111156118e3576118e3615817565b815260208082019290925260409081016000208151808301909252546001600160801b038082168352600160801b909104169181019190915285613533565b9250600084600581111561193857611938615817565b146119755762278d0061194c8260b4615913565b6119599062015180615913565b600554611966919061582d565b611970919061582d565b611986565b62278d00600554611986919061582d565b9150509250929050565b848314801561199e57508481145b6119ba5760405162461bcd60e51b815260040161149c9061592a565b6119c987878787878787612235565b6119d4878585612ae5565b50505050505050565b6119e56133f2565b6006546001600160a01b0316611a0e5760405163206d376f60e01b815260040160405180910390fd5b81600003611a2f57604051630a6428c360e11b815260040160405180910390fd5b80600003611a5057604051630a6428c360e11b815260040160405180910390fd5b611a68336006546001600160a01b03169030856137d9565b60058190556006805460ff60a01b1916600160a01b17905560408051838152602081018390527f5ba5bfb53e85b015ce3b9ccbb1c00fe1fbee62fe700c131b5835bed2982a73d0910161168e565b611abe613812565b611ac7826138b7565b611ad182826138ea565b5050565b600e8054611ae290615961565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0e90615961565b8015611b5b5780601f10611b3057610100808354040283529160200191611b5b565b820191906000526020600020905b815481529060010190602001808311611b3e57829003601f168201915b505050505081565b6000611b6d6139a7565b50600080516020615f0783398151915290565b611b886132bd565b600654600160a01b900460ff161580611ba15750600554155b80611bad575060055442105b15611bcb57604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b0316611bf45760405163206d376f60e01b815260040160405180910390fd5b6000611bff856139f0565b90506000611c0f82868686613b4a565b6006546001600160801b03919091169150611c34906001600160a01b0316838361337f565b5050611c4d6001600080516020615f2783398151915255565b50505050565b6000611c5e866139f0565b6001600160a01b0381166000908152600860205260408120919250856005811115611c8b57611c8b615817565b6005811115611c9c57611c9c615817565b81526020810191909152604001600020546001600160801b031615611cfb5760405162461bcd60e51b815260206004820152601560248201527410db185a5b58589b1948185b1c9958591e481cd95d605a1b604482015260640161149c565b6000600e611d11876001600160801b0316613c6b565b611d2b876005811115611d2657611d26615817565b613c6b565b611d3446613c6b565b611d3d30613c6b565b604051602001611d51959493929190615a0b565b6040516020818303038152906040529050611d6d8484836113a6565b506001600c8585604051611d829291906158e7565b9081526040805160209281900383019020805460ff1916931515939093179092556001600160a01b038416600090815260089091529081208791876005811115611dce57611dce615817565b6005811115611ddf57611ddf615817565b8152602081019190915260400160002080546001600160801b0319166001600160801b039290921691909117905550505050505050565b611e1e6133f2565b6006546001600160a01b0316611e475760405163206d376f60e01b815260040160405180910390fd5b600654611e5e906001600160a01b0316838361337f565b604080516001600160a01b0384168152602081018390527f4353f051398deb19bad16ba01c2250d186a65981b71a1c9cd7ef86f65cd25960910161168e565b611ea56133f2565b611eaf6000613cfd565b565b611eb96133f2565b60068054821515600160a01b0260ff60a01b199091161790556040517f7d9bc7474aa5661520727056d5036520e3004dfa67eebc8ea98dd139b044aae190610e3f90831515815260200190565b611f0e6133f2565b60058190556040518181527f964c90bd7629d544979f969dfe29b81336f2721db971a878cca932fd2a5b86ad90602001610e3f565b828114611f625760405162461bcd60e51b815260040161149c9061592a565b60005b838110156120fb576000858583818110611f8157611f816157e6565b9050608002016000013590506000868684818110611fa157611fa16157e6565b9050608002016020013590506000878785818110611fc157611fc16157e6565b9050608002016040016020810190611fd991906157fc565b90506000888886818110611fef57611fef6157e6565b905060800201606001602081019061200791906157fc565b905036600088888881811061201e5761201e6157e6565b90506020028101906120309190615aa1565b915091506000600e61204188613c6b565b61204a88613c6b565b61205c886001600160801b0316613c6b565b61206e886001600160801b0316613c6b565b61207746613c6b565b61208030613c6b565b6040516020016120969796959493929190615ae7565b60405160208183030381529060405290506120b2838383611522565b506001600c84846040516120c79291906158e7565b908152604051908190036020019020805491151560ff199092169190911790555050506001949094019350611f6592505050565b50611c4d8484613d6e565b6000805b828110156121665760006121368686868581811061212a5761212a6157e6565b9050602002013561169a565b509050806001600160801b0316600003612150575061215e565b61215a8184615873565b9250505b60010161210a565b509392505050565b6121766133f2565b6001600160a01b0383166121cc5760405162461bcd60e51b815260206004820152601760248201527f5f7369676e65722073686f756c64206e6f742062652030000000000000000000604482015260640161149c565b600d80546001600160a01b0319166001600160a01b038516179055600e6121f4828483615c0d565b507f91aa25cae04634ee896b374dca60a793204082970a8967624866b381095da9b283838360405161222893929190615ccc565b60405180910390a1505050565b848314801561224357508481145b61225f5760405162461bcd60e51b815260040161149c9061592a565b60005b838110156110da576122e088888884818110612280576122806157e6565b905060200201602081019061229591906157fc565b8787858181106122a7576122a76157e6565b90506020020160208101906122bc919061551d565b8686868181106122ce576122ce6157e6565b905060200281019061074d9190615aa1565b600101612262565b6122f06132bd565b600654600160a01b900460ff1615806123095750600554155b80612315575060055442105b1561233357604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b031661235c5760405163206d376f60e01b815260040160405180910390fd5b6001546001600160a01b0316336001600160a01b03161461238f576040516282b42960e81b815260040160405180910390fd5b600061239d85858585613b4a565b6006546001600160801b039190911691506123c2906001600160a01b0316868361337f565b50611c4d6001600080516020615f2783398151915255565b604080518082019091526000815260606020820152600a600083600581111561240557612405615817565b600581111561241657612416615817565b8152602001908152602001600020604051806040016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561248857602002820191906000526020600020905b815481526020019060010190808311612474575b5050505050815250509050919050565b6124a06133f2565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f3d2fa335e1b3b6a3bd407f2f0792f840681697b303f66e46d6ca77f62636632c90602001610e3f565b6060600082815b818110156125445785858281811061250f5761250f6157e6565b90506020028101906125219190615d0c565b61252f906020810190615d22565b61253a91508461582d565b92506001016124f5565b50816001600160401b0381111561255d5761255d61500d565b6040519080825280602002602001820160405280156125dc57816020015b604080516101408101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201819052610120820152825260001990920191018161257b5790505b5092506000805b828110156128e15760008787838181106125ff576125ff6157e6565b90506020028101906126119190615d0c565b3590506000888884818110612628576126286157e6565b905060200281019061263a9190615d0c565b612648906020810190615d22565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509394505050505b81518110156128d6576000806126ab8585858151811061269e5761269e6157e6565b602002602001015161169a565b915091506000806126d5878787815181106126c8576126c86157e6565b60200260200101516128eb565b915091506040518061014001604052808881526020018787815181106126fd576126fd6157e6565b60200260200101518152602001856001600160801b03168152602001848152602001600960008a81526020019081526020016000206000898981518110612746576127466157e6565b60209081029190910181015182528181019290925260409081016000908120546001600160801b031684528b8152600983529081208a5193909201928a908a908110612794576127946157e6565b6020026020010151815260200190815260200160002060010160009054906101000a90046001600160801b03166001600160801b03168152602001836001600160801b03168152602001828152602001600960008a8152602001908152602001600020600089898151811061280b5761280b6157e6565b6020026020010151815260200190815260200160002060000160109054906101000a90046001600160801b03166001600160801b03168152602001600960008a8152602001908152602001600020600089898151811061286d5761286d6157e6565b602090810291909101810151825281019190915260400160002060010154600160801b90046001600160801b031690528c8a6128a881615d6b565b9b50815181106128ba576128ba6157e6565b602002602001018190525050505050808060010191505061267c565b5050506001016125e3565b5050505092915050565b6006546000908190600160a01b900460ff1615806129095750600554155b80612915575060055442105b1561293357604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b031661295c5760405163206d376f60e01b815260040160405180910390fd5b600254849081106129805760405163017e9c7d60e41b815260040160405180910390fd5b6000858152600960209081526040808320878452825291829020825160808101845281546001600160801b038082168352600160801b918290048116948301949094526001909201548084169482019490945292041660608201526129e481613e8d565b9350624f1a006005546117da919061582d565b60028181548110612a0757600080fd5b6000918252602090912001546001600160a01b0316905081565b612a296133f2565b611ad18282613d6e565b612a3b6133f2565b600083815260096020908152604080832085845290915281208054839290612a6d9084906001600160801b0316615873565b82546101009290920a6001600160801b038181021990931691831602179091556000858152600960209081526040808320878452825291829020548251888152918201879052909216908201527f39fd505972d80ed67ab0942151362990601c9c1d28ca49134865138bf4d0893a9150606001612228565b612aed6132bd565b600654600160a01b900460ff161580612b065750600554155b80612b12575060055442105b15612b3057604051633c21f90f60e01b815260040160405180910390fd5b6006546001600160a01b0316612b595760405163206d376f60e01b815260040160405180910390fd5b6000612b64846139f0565b90506000612ba5828585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506132f592505050565b6006546001600160801b03919091169150612bca906001600160a01b0316838361337f565b5050610dbd6001600080516020615f2783398151915255565b612beb6133f2565b600654600160b01b900460ff1615612c1657604051639a8d50df60e01b815260040160405180910390fd5b6006805460ff60b01b1916600160b01b179055600080546001600160a01b03191681556040519081527fef1cd24a01120da2689be4a7980f64da049419dcd5866a87bff7b5d978a5078c9060200160405180910390a1565b612c766133f2565b6001600160a01b038116612ca057604051631e4fbdf760e01b81526000600482015260240161149c565b612ca981613cfd565b50565b612cb46133f2565b600654600160a01b900460ff1615612cdf5760405163f1a3368f60e01b815260040160405180910390fd5b80838114612d005760405163a121188760e01b815260040160405180910390fd5b60005b81811015612f7b57838382818110612d1d57612d1d6157e6565b9050602002810190612d2f9190615d0c565b612d3d906020810190615d22565b9050848483818110612d5157612d516157e6565b9050602002810190612d639190615d0c565b3510612dcd5760405162461bcd60e51b815260206004820152603360248201527f5374617274206379636c652073686f756c6420626520736d616c6c65722074686044820152720c2dc40d8dec6d6aae084a0e65cd8cadccee8d606b1b606482015260840161149c565b6000848483818110612de157612de16157e6565b9050602002810190612df39190615d0c565b612e01906020810190615d22565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509394505050505b8151811015612ee457612710828281518110612e5357612e536157e6565b60200260200101511115612e7a57604051630a6428c360e11b815260040160405180910390fd5b8015612edc5781612e8c600183615840565b81518110612e9c57612e9c6157e6565b6020026020010151828281518110612eb657612eb66157e6565b602002602001015111612edc57604051630a6428c360e11b815260040160405180910390fd5b600101612e35565b50848483818110612ef757612ef76157e6565b9050602002810190612f099190615d0c565b600a6000898986818110612f1f57612f1f6157e6565b9050602002016020810190612f34919061551d565b6005811115612f4557612f45615817565b6005811115612f5657612f56615817565b81526020019081526020016000208181612f709190615d84565b505050600101612d03565b506040517f9f3def91475ff17701f8c108d79b21c495e90c3ad9bccb265a6510720a832d7790600090a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015612ff15750825b90506000826001600160401b0316600114801561300d5750303b155b90508115801561301b575080155b156130395760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561306357845460ff60401b1916600160401b1785555b6001600160a01b0389166130c45760405162461bcd60e51b815260206004820152602260248201527f5f636c61696d546f6b656e416464726573732073686f756c64206e6f74206265604482015261020360f41b606482015260840161149c565b6001600160a01b03881661311a5760405162461bcd60e51b815260206004820152601b60248201527f5f6b7a67416464726573732073686f756c64206e6f7420626520300000000000604482015260640161149c565b6001600160a01b0387166131705760405162461bcd60e51b815260206004820152601c60248201527f5f6b75627a416464726573732073686f756c64206e6f74206265203000000000604482015260640161149c565b6001600160a01b0386166131c65760405162461bcd60e51b815260206004820152601c60248201527f5f7967707a416464726573732073686f756c64206e6f74206265203000000000604482015260640161149c565b6131ce613f06565b6131d733613f0e565b6131df613f16565b600380546001600160a01b03199081166d76a84fef008cdabe6409d2fe638b1782556004805482166c447e69651d841bd8d104bed493179055600680546001600160a01b038d811691909316179055604080516060810182528b831681528a83166020820152918916908201526132599160029190614d62565b50600080546001600160a01b0319163317905583156132b257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600080516020615f278339815191528054600119016132ef57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60006133018383613f1e565b9050806001600160801b031660000361332d576040516358c45ad560e01b815260040160405180910390fd5b604080516001600160801b03831681524260208201526001600160a01b038516917f7a61a2933ee34cf5cca59f8cd920eb077db0bd64d01b5f67c1387e2e4f0a81ec910160405180910390a292915050565b6040516001600160a01b03838116602483015260448201839052610dbd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061402e565b6001600080516020615f2783398151915255565b336134247f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611eaf5760405163118cdaa760e01b815233600482015260240161149c565b60008060008061345d8686614091565b92509250925061346d82826140de565b50909150505b92915050565b600654600090600160b81b90046001600160401b031680820361349f5750600092915050565b61271081036134d9576007546134c99062278d0090600160401b90046001600160801b031661582d565b4211156134d95750600092915050565b825160408401516001600160801b03821615806135085750816001600160801b0316816001600160801b031610155b1561351857506000949350505050565b61352a61352483614197565b82614213565b95945050505050565b81516020830151600091906001600160801b03821615806135665750816001600160801b0316816001600160801b031610155b1561357657600092505050613473565b600084600581111561358a5761358a615817565b036135ba5762278d006005546135a0919061582d565b4211156135b257600092505050613473565b509050613473565b6000600a60008660058111156135d2576135d2615817565b60058111156135e3576135e3615817565b8152602001908152602001600020604051806040016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561365557602002820191906000526020600020905b815481526020019060010190808311613641575b5050505050815250509050600081602001515190508060000361368b57604051630a6428c360e11b815260040160405180910390fd5b62278d0061369a8260b4615913565b6136a79062015180615913565b6005546136b4919061582d565b6136be919061582d565b4211156136d2576000945050505050613473565b600062015180600554426136e69190615840565b6136f09190615e4a565b905060006136ff60b483615e4a565b9050600188600581111561371557613715615817565b148015613722575060b482105b156137365760009650505050505050613473565b6000600589600581111561374c5761374c615817565b1415801561375b575060048210155b9050600060058a600581111561377357613773615817565b148015613781575060068310155b9050818061378c5750805b156137aa5761379b8888614213565b98505050505050505050613473565b6137ca6137c487878b6137be88600161582d565b89614240565b88614213565b9b9a5050505050505050505050565b6040516001600160a01b038481166024830152838116604483015260648201839052611c4d9186918216906323b872dd906084016133ac565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061389957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661388d600080516020615f07833981519152546001600160a01b031690565b6001600160a01b031614155b15611eaf5760405163703e46dd60e11b815260040160405180910390fd5b6000546001600160a01b0316336001600160a01b031614612ca9576040516282b42960e81b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613944575060408051601f3d908101601f1916820190925261394191810190615e5e565b60015b61396c57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b600080516020615f07833981519152811461399d57604051632a87526960e21b81526004810182905260240161149c565b610dbd83836142e1565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611eaf5760405163703e46dd60e11b815260040160405180910390fd5b60006001600160a01b038216613a065733613473565b6004546000906001600160a01b031663e839bd53336040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908616602482015260006044820152606401602060405180830381865afa158015613a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a929190615e77565b90508015613aa1575090919050565b6003546001600160a01b0316639c395bc2336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529086166024820152604401602060405180830381865afa158015613aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b239190615e77565b905080613b4357604051632d618d8160e21b815260040160405180910390fd5b5090919050565b6000613b57858585614337565b90508115613bed576001600160a01b03851660009081526008602090815260408083208380528252808320815180830190925280546001600160801b038082168452600160801b9091041692820192909252909190613bb69082613533565b90506001600160801b03811615613bea5781546001600160801b03600160801b808304821684018216029116178255918201915b50505b806001600160801b0316600003613c17576040516358c45ad560e01b815260040160405180910390fd5b604080516001600160801b03831681524260208201526001600160a01b038716917f6bae97ad4b952cdee3720ed0ea228b5eb79d5adb4475c05d9f3f6539627d8e2a910160405180910390a2949350505050565b60606000613c78836145fd565b60010190506000816001600160401b03811115613c9757613c9761500d565b6040519080825280601f01601f191660200182016040528015613cc1576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084613ccb57509392505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b81811015610dbd576000838383818110613d8d57613d8d6157e6565b9050608002016000013590506000848484818110613dad57613dad6157e6565b9050608002016020013590506000858585818110613dcd57613dcd6157e6565b9050608002016040016020810190613de591906157fc565b90506000868686818110613dfb57613dfb6157e6565b9050608002016060016020810190613e1391906157fc565b60008581526009602090815260408083208784528252918290206001600160801b03848116600160801b029087161790558151878152908101869052600197909701969192507f6765cbdf175c095017f6961e716b812497f2e6022d292faa2aaf88591434190c910160405180910390a150505050613d71565b60208101516060820151600091906001600160801b0382161580613ec35750816001600160801b0316816001600160801b031610155b15613ed2575060009392505050565b624f1a00600554613ee3919061582d565b421115613ef4575060009392505050565b613efe8282614213565b949350505050565b6133de6146d5565b612c766146d5565b611eaf6146d5565b6000805b8251811015614027576001600160a01b038416600090815260086020526040812084518290869085908110613f5957613f596157e6565b60200260200101516005811115613f7257613f72615817565b6005811115613f8357613f83615817565b815260208082019290925260409081016000908120825180840190935280546001600160801b038082168552600160801b9091041693830193909352865192935091613fe99190879086908110613fdc57613fdc6157e6565b6020026020010151613533565b90506001600160801b0381161561401d5781546001600160801b03600160801b808304821684018216029116178255928301925b5050600101613f22565b5092915050565b60006140436001600160a01b0384168361471e565b905080516000141580156140685750808060200190518101906140669190615e77565b155b15610dbd57604051635274afe760e01b81526001600160a01b038416600482015260240161149c565b600080600083516041036140cb5760208401516040850151606086015160001a6140bd8882858561472c565b9550955095505050506140d7565b50508151600091506002905b9250925092565b60008260038111156140f2576140f2615817565b036140fb575050565b600182600381111561410f5761410f615817565b0361412d5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561414157614141615817565b036141625760405163fce698f760e01b81526004810182905260240161149c565b600382600381111561417657614176615817565b03611ad1576040516335e2f38360e21b81526004810182905260240161149c565b600754600090600160401b90046001600160801b031642106141f5576006546141f090612710906141d890600160b81b90046001600160401b031685615e94565b6001600160801b03166141eb9190615e4a565b6147fb565b613473565b60075461347390612710906141d8906001600160401b031685615e94565b6000816001600160801b0316836001600160801b031611156142375781830361151b565b60009392505050565b84516000908310156142545750600061352a565b8483111561426357508261352a565b600085841461428f5786602001518481518110614282576142826157e6565b6020026020010151614293565b6127105b90506142d68588602001516001876142ab9190615840565b815181106142bb576142bb6157e6565b60200260200101518360b4876142d19190615ebf565b614825565b979650505050505050565b6142ea826148c7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561432f57610dbd828261492c565b611ad1614999565b6000805b8281101561216657366000858584818110614358576143586157e6565b905060200281019061436a9190615ed3565b614378906020810190615d22565b91509150366000878786818110614391576143916157e6565b90506020028101906143a39190615ed3565b6143b1906040810190615d22565b915091503660008989888181106143ca576143ca6157e6565b90506020028101906143dc9190615ed3565b6143ea906060810190615d22565b90925090508483811415806143ff5750808214155b1561441d5760405163a121188760e01b815260040160405180910390fd5b60008b8b8a818110614431576144316157e6565b90506020028101906144439190615ed3565b35905060005b828110156145e9576000878783818110614465576144656157e6565b905060200201602081019061447a919061540a565b15614519576144a28f848c8c86818110614496576144966157e6565b905060200201356149b8565b90506001600160801b0381161561451957600083815260096020526040812082918c8c868181106144d5576144d56157e6565b6020908102929092013583525081019190915260400160002060010180546001600160801b031981166001600160801b0391821693909301169190911790559a8b019a5b85858381811061452b5761452b6157e6565b9050602002016020810190614540919061540a565b156145e0576145688f848c8c8681811061455c5761455c6157e6565b90506020020135614afc565b90506001600160801b038116156145e057600083815260096020526040812082918c8c8681811061459b5761459b6157e6565b6020908102929092013583525081019190915260400160002060010180546001600160801b03600160801b8083048216909401811690930292169190911790559a8b019a5b50600101614449565b50886001019850505050505050505061433b565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061463c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614668576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061468657662386f26fc10000830492506010015b6305f5e100831061469e576305f5e100830492506008015b61271083106146b257612710830492506004015b606483106146c4576064830492506002015b600a83106134735760010192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611eaf57604051631afcd79f60e31b815260040160405180910390fd5b606061151b83836000614c40565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561476757506000915060039050826147f1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156147bb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147e7575060009250600191508290506147f1565b9250600091508190505b9450945094915050565b6000600160801b82106148215760405163ede341c760e01b815260040160405180910390fd5b5090565b60008160000361485957614852612710614848866001600160801b038916615913565b6141eb9190615e4a565b9050613efe565b61352a60b46127108461486c8888615840565b61487f906001600160801b038b16615913565b6148899190615913565b6148939190615e4a565b61489d9190615e4a565b6127106148b3876001600160801b038a16615913565b6148bd9190615e4a565b6141eb919061582d565b806001600160a01b03163b6000036148fd57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b600080516020615f0783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161494991906158f7565b600060405180830381855af49150503d8060008114614984576040519150601f19603f3d011682016040523d82523d6000602084013e614989565b606091505b509150915061352a858383614cdd565b3415611eaf5760405163b398979f60e01b815260040160405180910390fd5b600254600090839081106149df5760405163017e9c7d60e41b815260040160405180910390fd5b846001600160a01b0316600285815481106149fc576149fc6157e6565b6000918252602090912001546040516331a9108f60e11b8152600481018690526001600160a01b0390911690636352211e90602401602060405180830381865afa158015614a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a729190615ee9565b6001600160a01b031614614a98576040516282b42960e81b815260040160405180910390fd5b6000848152600960209081526040808320868452825291829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015261352a90613479565b60025460009083908110614b235760405163017e9c7d60e41b815260040160405180910390fd5b846001600160a01b031660028581548110614b4057614b406157e6565b6000918252602090912001546040516331a9108f60e11b8152600481018690526001600160a01b0390911690636352211e90602401602060405180830381865afa158015614b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bb69190615ee9565b6001600160a01b031614614bdc576040516282b42960e81b815260040160405180910390fd5b6000848152600960209081526040808320868452825291829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015261352a90613e8d565b606081471015614c655760405163cd78605960e01b815230600482015260240161149c565b600080856001600160a01b03168486604051614c8191906158f7565b60006040518083038185875af1925050503d8060008114614cbe576040519150601f19603f3d011682016040523d82523d6000602084013e614cc3565b606091505b5091509150614cd3868383614cdd565b9695505050505050565b606082614cf257614ced82614d39565b61151b565b8151158015614d0957506001600160a01b0384163b155b15614d3257604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b508061151b565b805115614d495780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b828054828255906000526020600020908101928215614db7579160200282015b82811115614db757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d82565b506148219291505b808211156148215760008155600101614dbf565b6001600160a01b0381168114612ca957600080fd5b60008083601f840112614dfa57600080fd5b5081356001600160401b03811115614e1157600080fd5b6020830191508360208260051b8501011115614e2c57600080fd5b9250929050565b600080600060408486031215614e4857600080fd5b8335614e5381614dd3565b925060208401356001600160401b03811115614e6e57600080fd5b614e7a86828701614de8565b9497909650939450505050565b600060208284031215614e9957600080fd5b813561151b81614dd3565b80356001600160801b0381168114614ebb57600080fd5b919050565b60008060408385031215614ed357600080fd5b82356001600160401b0381168114614eea57600080fd5b9150614ef860208401614ea4565b90509250929050565b60008060008060008060608789031215614f1a57600080fd5b86356001600160401b0380821115614f3157600080fd5b614f3d8a838b01614de8565b90985096506020890135915080821115614f5657600080fd5b614f628a838b01614de8565b90965094506040890135915080821115614f7b57600080fd5b50614f8889828a01614de8565b979a9699509497509295939492505050565b600080600060408486031215614faf57600080fd5b8335925060208401356001600160401b03811115614e6e57600080fd5b60008083601f840112614fde57600080fd5b5081356001600160401b03811115614ff557600080fd5b602083019150836020828501011115614e2c57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561503d5761503d61500d565b604051601f8501601f19908116603f011681019082821181831017156150655761506561500d565b8160405280935085815286868601111561507e57600080fd5b858560208301376000602087830101525050509392505050565b6000806000604084860312156150ad57600080fd5b83356001600160401b03808211156150c457600080fd5b6150d087838801614fcc565b909550935060208601359150808211156150e957600080fd5b508401601f810186136150fb57600080fd5b61510a86823560208401615023565b9150509250925092565b6000806040838503121561512757600080fd5b50508035926020909101359150565b803560068110614ebb57600080fd5b6000806040838503121561515857600080fd5b823561516381614dd3565b9150614ef860208401615136565b60008060008060008060006080888a03121561518c57600080fd5b873561519781614dd3565b965060208801356001600160401b03808211156151b357600080fd5b6151bf8b838c01614de8565b909850965060408a01359150808211156151d857600080fd5b6151e48b838c01614de8565b909650945060608a01359150808211156151fd57600080fd5b5061520a8a828b01614de8565b989b979a50959850939692959293505050565b600082601f83011261522e57600080fd5b61151b83833560208501615023565b6000806040838503121561525057600080fd5b823561525b81614dd3565b915060208301356001600160401b0381111561527657600080fd5b6119868582860161521d565b60005b8381101561529d578181015183820152602001615285565b50506000910152565b60208152600082518060208401526152c5816040850160208701615282565b601f01601f19169190910160400192915050565b8015158114612ca957600080fd5b600080600080606085870312156152fd57600080fd5b843561530881614dd3565b935060208501356001600160401b0381111561532357600080fd5b61532f87828801614de8565b9094509250506040850135615343816152d9565b939692955090935050565b60008060008060006080868803121561536657600080fd5b853561537181614dd3565b945061537f60208701614ea4565b935061538d60408701615136565b925060608601356001600160401b038111156153a857600080fd5b6153b488828901614fcc565b969995985093965092949392505050565b600080604083850312156153d857600080fd5b82356153e381614dd3565b946020939093013593505050565b60006020828403121561540357600080fd5b5035919050565b60006020828403121561541c57600080fd5b813561151b816152d9565b60008083601f84011261543957600080fd5b5081356001600160401b0381111561545057600080fd5b6020830191508360208260071b8501011115614e2c57600080fd5b6000806000806040858703121561548157600080fd5b84356001600160401b038082111561549857600080fd5b6154a488838901615427565b909650945060208701359150808211156154bd57600080fd5b506154ca87828801614de8565b95989497509550505050565b6000806000604084860312156154eb57600080fd5b83356154f681614dd3565b925060208401356001600160401b0381111561551157600080fd5b614e7a86828701614fcc565b60006020828403121561552f57600080fd5b61151b82615136565b60208082528251828201528281015160408084015280516060840181905260009291820190839060808601905b808310156155855783518252928401926001929092019190840190615565565b509695505050505050565b600080602083850312156155a357600080fd5b82356001600160401b038111156155b957600080fd5b6155c585828601614de8565b90969095509350505050565b602080825282518282018190526000919060409081850190868401855b8281101561567b578151805185528681015187860152858101516001600160801b03908116878701526060808301519087015260808083015182169087015260a08083015182169087015260c08083015182169087015260e080830151908701526101008083015182169087015261012091820151169085015261014090930192908501906001016155ee565b5091979650505050505050565b6000806020838503121561569b57600080fd5b82356001600160401b038111156156b157600080fd5b6155c585828601615427565b6000806000606084860312156156d257600080fd5b83359250602084013591506156e960408501614ea4565b90509250925092565b60006020828403121561570457600080fd5b81356001600160401b0381111561571a57600080fd5b613efe8482850161521d565b6000806000806040858703121561573c57600080fd5b84356001600160401b038082111561575357600080fd5b6154a488838901614de8565b6000806000806080858703121561577557600080fd5b843561578081614dd3565b9350602085013561579081614dd3565b925060408501356157a081614dd3565b9150606085013561534381614dd3565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019080821115614027576140276157b0565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561580e57600080fd5b61151b82614ea4565b634e487b7160e01b600052602160045260246000fd5b80820180821115613473576134736157b0565b81810381811115613473576134736157b0565b6001600160801b03828116828216039080821115614027576140276157b0565b6001600160801b03818116838216019080821115614027576140276157b0565b600081516158a5818560208601615282565b9290920192915050565b6bffffffffffffffffffffffff198360601b168152600082516158d9816014850160208701615282565b919091016014019392505050565b8183823760009101908152919050565b60008251615909818460208701615282565b9190910192915050565b8082028115828204841417613473576134736157b0565b60208082526019908201527f696e636f6e73697374616e7420696e707574206c656e67746800000000000000604082015260600190565b600181811c9082168061597557607f821691505b60208210810361599557634e487b7160e01b600052602260045260246000fd5b50919050565b600081546159a881615961565b600182811680156159c057600181146159d5576128e1565b60ff19841687528215158302870194506128e1565b8560005260208060002060005b858110156159fb5781548a8201529084019082016159e2565b5050509590910195945050505050565b6000615a17828861599b565b652d736362752d60d01b81528651615a36816006840160208b01615282565b808201915050602d60f81b8060068301528651615a5a816007850160208b01615282565b600792019182018190528551615a77816008850160208a01615282565b60089201918201528351615a92816009840160208801615282565b01600901979650505050505050565b6000808335601e19843603018112615ab857600080fd5b8301803591506001600160401b03821115615ad257600080fd5b602001915036819003821315614e2c57600080fd5b6000615af3828a61599b565b662d736e6362752d60c81b81528851615b13816007840160208d01615282565b808201915050602d60f81b8060078301528851615b37816008850160208d01615282565b600892019182018190528751615b54816009850160208c01615282565b600992019182018190528651615b7181600a850160208b01615282565b600a9201918201528451615b8c81600b840160208901615282565b01615b9d600b8201602d60f81b9052565b615baa600c820185615893565b9a9950505050505050505050565b5b81811015611ad15760008155600101615bb9565b601f821115610dbd57806000526020600020601f840160051c81016020851015615bf45750805b615c06601f850160051c830182615bb8565b5050505050565b6001600160401b03831115615c2457615c2461500d565b615c3883615c328354615961565b83615bcd565b6000601f841160018114615c6c5760008515615c545750838201355b600019600387901b1c1916600186901b178355615c06565b600083815260209020601f19861690835b82811015615c9d5786850135825560209485019460019092019101615c7d565b5086821015615cba5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b60008235603e1983360301811261590957600080fd5b6000808335601e19843603018112615d3957600080fd5b8301803591506001600160401b03821115615d5357600080fd5b6020019150600581901b3603821315614e2c57600080fd5b600060018201615d7d57615d7d6157b0565b5060010190565b813581556001808201602080850135601e19863603018112615da557600080fd5b850180356001600160401b03811115615dbd57600080fd5b6020820191508060051b3603821315615dd557600080fd5b600160401b811115615de957615de961500d565b835481855580821015615e0f57846000526020600020615e0d828201848301615bb8565b505b50600093845260208420935b818110156110da57823585820155918301918501615e1b565b634e487b7160e01b600052601260045260246000fd5b600082615e5957615e59615e34565b500490565b600060208284031215615e7057600080fd5b5051919050565b600060208284031215615e8957600080fd5b815161151b816152d9565b6001600160801b03818116838216028082169190828114615eb757615eb76157b0565b505092915050565b600082615ece57615ece615e34565b500690565b60008235607e1983360301811261590957600080fd5b600060208284031215615efb57600080fd5b815161151b81614dd356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220f2893ee070f6baab61f4f55788abb83acc79840513de8daab48d773a4330423364736f6c63430008180033