0 txs
1 call
constructor
constructor(address _rolesManager, address _storageAdministrator, address _initialOwner, address _pauser)
functions
addressRefToLink
viewfunction addressRefToLink(address) view returns (string)
getIPFSLink
viewfunction getIPFSLink(uint96 _nftId) view returns (string)
getMyDirectSponsorAddress
viewfunction getMyDirectSponsorAddress(address _address) view returns (address)
getMyNFTIds
viewfunction getMyNFTIds(address _address) view returns (uint96[])
getMySponsorNFTId
viewfunction getMySponsorNFTId(uint96 _nftId) view returns (uint96)
getMySponsorRefLinkFromMyAddress
viewfunction getMySponsorRefLinkFromMyAddress(address _address) view returns (string)
getNFTAccountById
viewfunction getNFTAccountById(uint96 _id) view returns (tuple)
getNFTidFromARefLink
viewfunction getNFTidFromARefLink(string _link) view returns (uint96)
getSponsorAddressByReferralLink
viewfunction getSponsorAddressByReferralLink(string _link) view returns (address)
getSponsorDataByAddress
viewfunction getSponsorDataByAddress(address _address) view returns (address[])
getUsersRegisteredBulk
viewfunction getUsersRegisteredBulk(uint96 _fromIndex, uint96 _limit) view returns (address[] users)
isAnSponsor
viewfunction isAnSponsor(address) view returns (bool)
isImageIdSelected
viewfunction isImageIdSelected(uint96) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
LAST_IMG_USED
viewfunction LAST_IMG_USED() view returns (uint96)
nftIPFSLink
viewfunction nftIPFSLink(uint96) view returns (string)
nftReferrentToAnIndex
viewfunction nftReferrentToAnIndex(uint96) view returns (uint96)
nftRegistered
viewfunction nftRegistered(uint96) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
sponsorDirectReferral
viewfunction sponsorDirectReferral(uint96) view returns (address)
sponsorDirectReferralCount
viewfunction sponsorDirectReferralCount(address) view returns (uint96)
sponsorNftIDFromANFT
viewfunction sponsorNftIDFromANFT(uint96) view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
totalUsersRegistered
viewfunction totalUsersRegistered() view returns (uint96)
userHasNFT
viewfunction userHasNFT(address, uint96) view returns (bool)
userNFTAccount
viewfunction userNFTAccount(uint96) view returns (string name, uint96 nftImgId, uint96 NFT_COLLECTION_ID, uint96 tokenId, address ownerAddress, string referralsLink, uint96 planId, uint256 createdAt, uint256 membershipPlanBoughtDate)
userNFTIds
viewfunction userNFTIds(address, uint256) view returns (uint96)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
renounceOwnership
nonpayablefunction renounceOwnership()
saveNFTAccount
nonpayablefunction saveNFTAccount(tuple _data, address _sponsorAddress, uint96 _sponsorNFTId, string _referralLink, uint8 _side, string _ipfsLink)
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
transferNFT
nonpayablefunction transferNFT(address _oldOwner, address _newOwner, uint96 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
N1
error N1()
N2
error N2()
N3
error N3()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V3
error V3()
V4
error V4()
creation bytecode
0x608060405234801562000010575f80fd5b5060405162004d6938038062004d698339818101604052810190620000369190620002b6565b8160016017819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b2575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a9919062000336565b60405180910390fd5b620000c3816200018e60201b60201c565b508360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000351565b5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002808262000255565b9050919050565b620002928162000274565b81146200029d575f80fd5b50565b5f81519050620002b08162000287565b92915050565b5f805f8060808587031215620002d157620002d062000251565b5b5f620002e087828801620002a0565b9450506020620002f387828801620002a0565b93505060406200030687828801620002a0565b92505060606200031987828801620002a0565b91505092959194509250565b620003308162000274565b82525050565b5f6020820190506200034b5f83018462000325565b92915050565b614a0a806200035f5f395ff3fe608060405234801561000f575f80fd5b506004361061021a575f3560e01c806371b0859b11610123578063b187bd26116100ab578063e14a39101161007a578063e14a3910146106d6578063e550a51e146106f2578063efb8d49d14610722578063f2fde38b14610752578063ff51ea6a1461076e5761021a565b8063b187bd2614610628578063c0a5a8cd14610646578063cb47066414610676578063d5463067146106a65761021a565b80638a6be067116100f25780638a6be0671461054a5780638bf7e6c71461057a5780638da5cb5b146105aa578063927ae7c5146105c8578063a457fd0d146105f85761021a565b806371b0859b146104b057806376a6bf2c146104e0578063858ce6bb146104fc5780638690e43b1461052c5761021a565b806351858e27116101a65780635e3355aa116101755780635e3355aa146103e65780635e3cafb91461041657806367eb8560146104465780636bf59f5c14610476578063715018a6146104a65761021a565b806351858e271461037057806359c606131461037a5780635ae461d2146103985780635c975abb146103c85761021a565b8063243717e0116101ed578063243717e0146102a65780632ab1c188146102d657806343441837146103065780634a4e3bd5146103365780634fffd0b9146103405761021a565b8063085a512f1461021e5780630a2dd68d1461024e5780630d82cfa11461026c5780630eea54d61461028a575b5f80fd5b610238600480360381019061023391906136eb565b6107a6565b60405161024591906137cd565b60405180910390f35b61025661080f565b60405161026391906137fc565b60405180910390f35b610274610834565b604051610281919061383b565b60405180910390f35b6102a4600480360381019061029f919061387e565b61084f565b005b6102c060048036038101906102bb91906138ce565b610c55565b6040516102cd9190613b53565b60405180910390f35b6102f060048036038101906102eb91906138ce565b61103d565b6040516102fd919061383b565b60405180910390f35b610320600480360381019061031b91906138ce565b61104e565b60405161032d9190613b8d565b60405180910390f35b61033e61106b565b005b61035a600480360381019061035591906136eb565b611113565b6040516103679190613c12565b60405180910390f35b6103786111e1565b005b610382611289565b60405161038f919061383b565b60405180910390f35b6103b260048036038101906103ad9190613c5c565b6112a6565b6040516103bf919061383b565b60405180910390f35b6103d06112f2565b6040516103dd9190613b8d565b60405180910390f35b61040060048036038101906103fb9190613c9a565b611308565b60405161040d9190613b8d565b60405180910390f35b610430600480360381019061042b91906136eb565b611332565b60405161043d919061383b565b60405180910390f35b610460600480360381019061045b91906136eb565b61135a565b60405161046d91906137fc565b60405180910390f35b610490600480360381019061048b91906138ce565b6113bf565b60405161049d91906137fc565b60405180910390f35b6104ae6113ef565b005b6104ca60048036038101906104c591906138ce565b611402565b6040516104d7919061383b565b60405180910390f35b6104fa60048036038101906104f59190613cfb565b61142a565b005b610516600480360381019061051191906138ce565b61150f565b6040516105239190613d81565b60405180910390f35b6105346115aa565b60405161054191906137fc565b60405180910390f35b610564600480360381019061055f91906136eb565b6115cf565b6040516105719190613d81565b60405180910390f35b610594600480360381019061058f9190613e02565b61169c565b6040516105a1919061383b565b60405180910390f35b6105b261171c565b6040516105bf91906137fc565b60405180910390f35b6105e260048036038101906105dd91906138ce565b611744565b6040516105ef9190613d81565b60405180910390f35b610612600480360381019061060d91906138ce565b611801565b60405161061f919061383b565b60405180910390f35b610630611829565b60405161063d9190613b8d565b60405180910390f35b610660600480360381019061065b91906136eb565b611837565b60405161066d9190613d81565b60405180910390f35b610690600480360381019061068b91906138ce565b6118d2565b60405161069d9190613b8d565b60405180910390f35b6106c060048036038101906106bb9190613e02565b6118ef565b6040516106cd91906137fc565b60405180910390f35b6106f060048036038101906106eb91906141ec565b6119bd565b005b61070c600480360381019061070791906136eb565b6125d2565b6040516107199190613b8d565b60405180910390f35b61073c600480360381019061073791906142ce565b6125ef565b60405161074991906137cd565b60405180910390f35b61076c600480360381019061076791906136eb565b61261e565b005b610788600480360381019061078391906138ce565b6126a2565b60405161079d9998979695949392919061431b565b60405180910390f35b606061080860075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a90046bffffffffffffffffffffffff166128756128ca565b9050919050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a90046bffffffffffffffffffffffff1681565b6108576129cc565b61088160165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a0d565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f826bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661092c576040517fc71326c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160035f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610ae860025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020018280548015610add57602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610a905790505b505050505082612a75565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209080519060200190610b389291906134ff565b506001600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b610c5d6135c4565b60035f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20604051806101600160405290815f82018054610ca5906143e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd1906143e1565b8015610d1c5780601f10610cf357610100808354040283529160200191610d1c565b820191905f5260205f20905b815481529060010190602001808311610cff57829003601f168201915b50505050508152602001600182015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600282015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160028201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054610e43906143e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6f906143e1565b8015610eba5780601f10610e9157610100808354040283529160200191610eba565b820191905f5260205f20905b815481529060010190602001808311610e9d57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610f4b57602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610efe5790505b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015610fdc57602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610f8f5790505b50505050508152602001600682015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600782015481526020016008820154815250509050919050565b5f61104782612bda565b9050919050565b600d602052805f5260405f205f915054906101000a900460ff1681565b611073612c97565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110f9576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611101612ca1565b611109612ce7565b611111612d49565b565b606060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156111d557602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116111885790505b50505050509050919050565b6111e9612c97565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461126f576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611277612ca1565b61127f612d53565b611287612d49565b565b60105f9054906101000a90046bffffffffffffffffffffffff1681565b6002602052815f5260405f2081815481106112bf575f80fd5b905f5260205f209060029182820401919006600c02915091509054906101000a90046bffffffffffffffffffffffff1681565b5f601860149054906101000a900460ff16905090565b600a602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6007602052805f5260405f205f915054906101000a90046bffffffffffffffffffffffff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6009602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f7612db6565b6114005f612e3d565b565b6013602052805f5260405f205f915054906101000a90046bffffffffffffffffffffffff1681565b61148b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612f00565b611493612ca1565b61149b612c97565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611500576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81815561150b612d49565b5050565b6004602052805f5260405f205f91509050805461152b906143e1565b80601f0160208091040260200160405190810160405280929190818152602001828054611557906143e1565b80156115a25780601f10611579576101008083540402835291602001916115a2565b820191905f5260205f20905b81548152906001019060200180831161158557829003601f168201915b505050505081565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054611619906143e1565b80601f0160208091040260200160405190810160405280929190818152602001828054611645906143e1565b80156116905780601f1061166757610100808354040283529160200191611690565b820191905f5260205f20905b81548152906001019060200180831161167357829003601f168201915b50505050509050919050565b5f600f83836040516116af92919061443f565b90815260200160405180910390205f9054906101000a900460ff166116db576402540be3ff9050611716565b600583836040516116ed92919061443f565b90815260200160405180910390205f9054906101000a90046bffffffffffffffffffffffff1690505b92915050565b5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060045f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20805461177e906143e1565b80601f01602080910402602001604051908101604052809291908181526020018280546117aa906143e1565b80156117f55780601f106117cc576101008083540402835291602001916117f5565b820191905f5260205f20905b8154815290600101906020018083116117d857829003601f168201915b50505050509050919050565b6011602052805f5260405f205f915054906101000a90046bffffffffffffffffffffffff1681565b5f6118326112f2565b905090565b6006602052805f5260405f205f915090508054611853906143e1565b80601f016020809104026020016040519081016040528092919081815260200182805461187f906143e1565b80156118ca5780601f106118a1576101008083540402835291602001916118ca565b820191905f5260205f20905b8154815290600101906020018083116118ad57829003601f168201915b505050505081565b600e602052805f5260405f205f915054906101000a900460ff1681565b5f80600f848460405161190392919061443f565b90815260200160405180910390205f9054906101000a900460ff1690508061192b575f6119b4565b60035f6005868660405161194092919061443f565b90815260200160405180910390205f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b91505092915050565b6119c56129cc565b6119ef60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a0d565b600e5f88602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a64576040517fbc7ce92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e0857600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611b3b576001600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b600c5f886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611ce457866080015160095f60075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81819054906101000a90046bffffffffffffffffffffffff1680929190611cb490614484565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b5f60035f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f611dc289606001515f8660ff1614611d305783600501611d35565b836004015b805480602002602001604051908101604052809291908181526020018280548015611db857602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411611d6b5790505b5050505050612f10565b90505f8460ff1614611deb5780826005019080519060200190611de69291906134ff565b611e04565b80826004019080519060200190611e039291906134ff565b5b5050505b600c5f886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e9357505f73ffffffffffffffffffffffffffffffffffffffff16876080015173ffffffffffffffffffffffffffffffffffffffff1614155b15611f7957866080015160015f805f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b8460115f89606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505f8081819054906101000a90046bffffffffffffffffffffffff168092919061200090614484565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550506001600d5f89602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508560085f896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866060015160058860a0015160405161211091906144e7565b90815260200160405180910390205f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506001600f8860a0015160405161216191906144e7565b90815260200160405180910390205f6101000a81548160ff021916908315150217905550838360065f8a6080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2091826121d59291906146a4565b506001600e5f89602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f89606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025f886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208760600151908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550866020015160105f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508660035f89606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f0190816123bf9190614771565b506020820151816001015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550604082015181600101600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506060820151816002015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160030190816124bf9190614771565b5060c08201518160040190805190602001906124dc9291906134ff565b5060e08201518160050190805190602001906124f99291906134ff565b50610100820151816006015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550610120820151816007015561014082015181600801559050505f81511115612597578060045f89606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090816125919190614771565b506125c9565b6040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600b602052805f5260405f205f915054906101000a900460ff1681565b606061261683835f8054906101000a90046bffffffffffffffffffffffff166130556130aa565b905092915050565b612626612db6565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612696575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161268d91906137fc565b60405180910390fd5b61269f81612e3d565b50565b6003602052805f5260405f205f91509050805f0180546126c1906143e1565b80601f01602080910402602001604051908101604052809291908181526020018280546126ed906143e1565b80156127385780601f1061270f57610100808354040283529160200191612738565b820191905f5260205f20905b81548152906001019060200180831161271b57829003601f168201915b505050505090806001015f9054906101000a90046bffffffffffffffffffffffff169080600101600c9054906101000a90046bffffffffffffffffffffffff1690806002015f9054906101000a90046bffffffffffffffffffffffff169080600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030180546127cb906143e1565b80601f01602080910402602001604051908101604052809291908181526020018280546127f7906143e1565b80156128425780601f1061281957610100808354040283529160200191612842565b820191905f5260205f20905b81548152906001019060200180831161282557829003601f168201915b505050505090806006015f9054906101000a90046bffffffffffffffffffffffff16908060070154908060080154905089565b5f60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60605f836bffffffffffffffffffffffff1667ffffffffffffffff8111156128f5576128f4613e51565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b5090505f5b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610156129c157612959818563ffffffff16565b82826bffffffffffffffffffffffff168151811061297a57612979614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050612928565b508091505092915050565b6129d46112f2565b15612a0b576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a72576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60605f60018451612a86919061486d565b67ffffffffffffffff811115612a9f57612a9e613e51565b5b604051908082528060200260200182016040528015612acd5781602001602082028036833780820191505090505b5090505f805f90505b8551816bffffffffffffffffffffffff161015612bce57846bffffffffffffffffffffffff1686826bffffffffffffffffffffffff1681518110612b1d57612b1c614840565b5b60200260200101516bffffffffffffffffffffffff1614612bbb5785816bffffffffffffffffffffffff1681518110612b5957612b58614840565b5b602002602001015183836bffffffffffffffffffffffff1681518110612b8257612b81614840565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508180612bb790614484565b9250505b8080612bc690614484565b915050612ad6565b50819250505092915050565b5f600d5f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612c4b576040517fcb76ae1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60115f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a90046bffffffffffffffffffffffff169050919050565b612c9f6132bb565b565b600260175403612cdd576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601781905550565b612cef613353565b5f601860146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d32613393565b604051612d3f91906137fc565b60405180910390a1565b6001601781905550565b612d5b6129cc565b6001601860146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612d9f613393565b604051612dac91906137fc565b60405180910390a1565b612dbe613393565b73ffffffffffffffffffffffffffffffffffffffff16612ddc61171c565b73ffffffffffffffffffffffffffffffffffffffff1614612e3b57612dff613393565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612e3291906137fc565b60405180910390fd5b565b5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612f0b83838361339a565b505050565b60605f60018351612f2191906148a0565b67ffffffffffffffff811115612f3a57612f39613e51565b5b604051908082528060200260200182016040528015612f685781602001602082028036833780820191505090505b5090505f5b8351816bffffffffffffffffffffffff16101561300b5783816bffffffffffffffffffffffff1681518110612fa557612fa4614840565b5b602002602001015182826bffffffffffffffffffffffff1681518110612fce57612fcd614840565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff1681525050808061300390614484565b915050612f6d565b50838184518151811061302157613020614840565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508091505092915050565b5f60015f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060826bffffffffffffffffffffffff16856bffffffffffffffffffffffff161061311f575f67ffffffffffffffff8111156130e9576130e8613e51565b5b6040519080825280602002602001820160405280156131175781602001602082028036833780820191505090505b5090506132b3565b5f848661312c91906148d3565b9050836bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115613156578390505b5f6131628783866133e0565b905086816131709190614912565b6bffffffffffffffffffffffff1667ffffffffffffffff81111561319757613196613e51565b5b6040519080825280602002602001820160405280156131c55781602001602082028036833780820191505090505b5092505f808890505b836bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610156132ae575f613200828863ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146132a0578086846bffffffffffffffffffffffff168151811061325757613256614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828061329c90614484565b9350505b5080806001019150506131ce565b505050505b949350505050565b5f80339050803b91505f8211156132fe576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b111561334f576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61335b6112f2565b613391576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b6133a583838361347a565b6133db576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f90505f8590505b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101561346e575f61341c828663ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461346057828061345c90614484565b9350505b5080806001019150506133ea565b50809150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016134b6929190614951565b6020604051808303815f875af11580156134d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134f691906149a9565b90509392505050565b828054828255905f5260205f20906001016002900481019282156135b3579160200282015f5b8382111561357957835183826101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509260200192600c01602081600b01049283019260010302613525565b80156135b15782816101000a8154906bffffffffffffffffffffffff0219169055600c01602081600b01049283019260010302613579565b505b5090506135c09190613665565b5090565b604051806101600160405280606081526020015f6bffffffffffffffffffffffff1681526020015f6bffffffffffffffffffffffff1681526020015f6bffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81525090565b5b8082111561367c575f815f905550600101613666565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136ba82613691565b9050919050565b6136ca816136b0565b81146136d4575f80fd5b50565b5f813590506136e5816136c1565b92915050565b5f60208284031215613700576136ff613689565b5b5f61370d848285016136d7565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613748816136b0565b82525050565b5f613759838361373f565b60208301905092915050565b5f602082019050919050565b5f61377b82613716565b6137858185613720565b935061379083613730565b805f5b838110156137c05781516137a7888261374e565b97506137b283613765565b925050600181019050613793565b5085935050505092915050565b5f6020820190508181035f8301526137e58184613771565b905092915050565b6137f6816136b0565b82525050565b5f60208201905061380f5f8301846137ed565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b61383581613815565b82525050565b5f60208201905061384e5f83018461382c565b92915050565b61385d81613815565b8114613867575f80fd5b50565b5f8135905061387881613854565b92915050565b5f805f6060848603121561389557613894613689565b5b5f6138a2868287016136d7565b93505060206138b3868287016136d7565b92505060406138c48682870161386a565b9150509250925092565b5f602082840312156138e3576138e2613689565b5b5f6138f08482850161386a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613930578082015181840152602081019050613915565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613955826138f9565b61395f8185613903565b935061396f818560208601613913565b6139788161393b565b840191505092915050565b61398c81613815565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6139c68383613983565b60208301905092915050565b5f602082019050919050565b5f6139e882613992565b6139f2818561399c565b93506139fd836139ac565b805f5b83811015613a2d578151613a1488826139bb565b9750613a1f836139d2565b925050600181019050613a00565b5085935050505092915050565b5f819050919050565b613a4c81613a3a565b82525050565b5f61016083015f8301518482035f860152613a6d828261394b565b9150506020830151613a826020860182613983565b506040830151613a956040860182613983565b506060830151613aa86060860182613983565b506080830151613abb608086018261373f565b5060a083015184820360a0860152613ad3828261394b565b91505060c083015184820360c0860152613aed82826139de565b91505060e083015184820360e0860152613b0782826139de565b915050610100830151613b1e610100860182613983565b50610120830151613b33610120860182613a43565b50610140830151613b48610140860182613a43565b508091505092915050565b5f6020820190508181035f830152613b6b8184613a52565b905092915050565b5f8115159050919050565b613b8781613b73565b82525050565b5f602082019050613ba05f830184613b7e565b92915050565b5f82825260208201905092915050565b5f613bc082613992565b613bca8185613ba6565b9350613bd5836139ac565b805f5b83811015613c05578151613bec88826139bb565b9750613bf7836139d2565b925050600181019050613bd8565b5085935050505092915050565b5f6020820190508181035f830152613c2a8184613bb6565b905092915050565b613c3b81613a3a565b8114613c45575f80fd5b50565b5f81359050613c5681613c32565b92915050565b5f8060408385031215613c7257613c71613689565b5b5f613c7f858286016136d7565b9250506020613c9085828601613c48565b9150509250929050565b5f8060408385031215613cb057613caf613689565b5b5f613cbd858286016136d7565b9250506020613cce8582860161386a565b9150509250929050565b60028110613ce4575f80fd5b50565b5f81359050613cf581613cd8565b92915050565b5f8060408385031215613d1157613d10613689565b5b5f613d1e858286016136d7565b9250506020613d2f85828601613ce7565b9150509250929050565b5f82825260208201905092915050565b5f613d53826138f9565b613d5d8185613d39565b9350613d6d818560208601613913565b613d768161393b565b840191505092915050565b5f6020820190508181035f830152613d998184613d49565b905092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112613dc257613dc1613da1565b5b8235905067ffffffffffffffff811115613ddf57613dde613da5565b5b602083019150836001820283011115613dfb57613dfa613da9565b5b9250929050565b5f8060208385031215613e1857613e17613689565b5b5f83013567ffffffffffffffff811115613e3557613e3461368d565b5b613e4185828601613dad565b92509250509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613e878261393b565b810181811067ffffffffffffffff82111715613ea657613ea5613e51565b5b80604052505050565b5f613eb8613680565b9050613ec48282613e7e565b919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115613eeb57613eea613e51565b5b613ef48261393b565b9050602081019050919050565b828183375f83830152505050565b5f613f21613f1c84613ed1565b613eaf565b905082815260208101848484011115613f3d57613f3c613ecd565b5b613f48848285613f01565b509392505050565b5f82601f830112613f6457613f63613da1565b5b8135613f74848260208601613f0f565b91505092915050565b5f67ffffffffffffffff821115613f9757613f96613e51565b5b602082029050602081019050919050565b5f613fba613fb584613f7d565b613eaf565b90508083825260208201905060208402830185811115613fdd57613fdc613da9565b5b835b818110156140065780613ff2888261386a565b845260208401935050602081019050613fdf565b5050509392505050565b5f82601f83011261402457614023613da1565b5b8135614034848260208601613fa8565b91505092915050565b5f610160828403121561405357614052613e4d565b5b61405e610160613eaf565b90505f82013567ffffffffffffffff81111561407d5761407c613ec9565b5b61408984828501613f50565b5f83015250602061409c8482850161386a565b60208301525060406140b08482850161386a565b60408301525060606140c48482850161386a565b60608301525060806140d8848285016136d7565b60808301525060a082013567ffffffffffffffff8111156140fc576140fb613ec9565b5b61410884828501613f50565b60a08301525060c082013567ffffffffffffffff81111561412c5761412b613ec9565b5b61413884828501614010565b60c08301525060e082013567ffffffffffffffff81111561415c5761415b613ec9565b5b61416884828501614010565b60e08301525061010061417d8482850161386a565b6101008301525061012061419384828501613c48565b610120830152506101406141a984828501613c48565b6101408301525092915050565b5f60ff82169050919050565b6141cb816141b6565b81146141d5575f80fd5b50565b5f813590506141e6816141c2565b92915050565b5f805f805f805f60c0888a03121561420757614206613689565b5b5f88013567ffffffffffffffff8111156142245761422361368d565b5b6142308a828b0161403d565b97505060206142418a828b016136d7565b96505060406142528a828b0161386a565b955050606088013567ffffffffffffffff8111156142735761427261368d565b5b61427f8a828b01613dad565b945094505060806142928a828b016141d8565b92505060a088013567ffffffffffffffff8111156142b3576142b261368d565b5b6142bf8a828b01613f50565b91505092959891949750929550565b5f80604083850312156142e4576142e3613689565b5b5f6142f18582860161386a565b92505060206143028582860161386a565b9150509250929050565b61431581613a3a565b82525050565b5f610120820190508181035f830152614334818c613d49565b9050614343602083018b61382c565b614350604083018a61382c565b61435d606083018961382c565b61436a60808301886137ed565b81810360a083015261437c8187613d49565b905061438b60c083018661382c565b61439860e083018561430c565b6143a661010083018461430c565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806143f857607f821691505b60208210810361440b5761440a6143b4565b5b50919050565b5f81905092915050565b5f6144268385614411565b9350614433838584613f01565b82840190509392505050565b5f61444b82848661441b565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61448e82613815565b91506bffffffffffffffffffffffff82036144ac576144ab614457565b5b600182019050919050565b5f6144c1826138f9565b6144cb8185614411565b93506144db818560208601613913565b80840191505092915050565b5f6144f282846144b7565b915081905092915050565b5f82905092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026145637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614528565b61456d8683614528565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6145a86145a361459e84613a3a565b614585565b613a3a565b9050919050565b5f819050919050565b6145c18361458e565b6145d56145cd826145af565b848454614534565b825550505050565b5f90565b6145e96145dd565b6145f48184846145b8565b505050565b5b818110156146175761460c5f826145e1565b6001810190506145fa565b5050565b601f82111561465c5761462d81614507565b61463684614519565b81016020851015614645578190505b61465961465185614519565b8301826145f9565b50505b505050565b5f82821c905092915050565b5f61467c5f1984600802614661565b1980831691505092915050565b5f614694838361466d565b9150826002028217905092915050565b6146ae83836144fd565b67ffffffffffffffff8111156146c7576146c6613e51565b5b6146d182546143e1565b6146dc82828561461b565b5f601f831160018114614709575f84156146f7578287013590505b6147018582614689565b865550614768565b601f19841661471786614507565b5f5b8281101561473e57848901358255600182019150602085019450602081019050614719565b8683101561475b5784890135614757601f89168261466d565b8355505b6001600288020188555050505b50505050505050565b61477a826138f9565b67ffffffffffffffff81111561479357614792613e51565b5b61479d82546143e1565b6147a882828561461b565b5f60209050601f8311600181146147d9575f84156147c7578287015190505b6147d18582614689565b865550614838565b601f1984166147e786614507565b5f5b8281101561480e578489015182556001820191506020850194506020810190506147e9565b8683101561482b5784890151614827601f89168261466d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61487782613a3a565b915061488283613a3a565b925082820390508181111561489a57614899614457565b5b92915050565b5f6148aa82613a3a565b91506148b583613a3a565b92508282019050808211156148cd576148cc614457565b5b92915050565b5f6148dd82613815565b91506148e883613815565b925082820190506bffffffffffffffffffffffff81111561490c5761490b614457565b5b92915050565b5f61491c82613815565b915061492783613815565b925082820390506bffffffffffffffffffffffff81111561494b5761494a614457565b5b92915050565b5f6040820190506149645f8301856137ed565b81810360208301526149768184613d49565b90509392505050565b61498881613b73565b8114614992575f80fd5b50565b5f815190506149a38161497f565b92915050565b5f602082840312156149be576149bd613689565b5b5f6149cb84828501614995565b9150509291505056fea2646970667358221220cf26eb14d47515b38e3703475c1a89a885e9a107b0c24138205748d7f409503a64736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb25394909000000000000000000000000937d2ad2625029bed18e462d7a9b75621a4cae210000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99