1 tx
2 calls
constructor
constructor(address _rolesManager, address _initialOwner, address _pauser)
functions
ACCOUNT_MANAGER
viewfunction ACCOUNT_MANAGER() view returns (address)
getMyDirectSponsorAddress
viewfunction getMyDirectSponsorAddress(address _address) view returns (address)
getMyNFTIds
viewfunction getMyNFTIds(address _address) view returns (uint96[])
getMySponsorNFTId
viewfunction getMySponsorNFTId(uint96 _myNFTId) view returns (uint96)
getNFTAccountById
viewfunction getNFTAccountById(uint96 _id) view returns (tuple)
getNftIPFSLinkBulk
viewfunction getNftIPFSLinkBulk(uint96[] _nftIds) view returns (string[])
getNFTLastImageUsed
viewfunction getNFTLastImageUsed() view returns (uint256)
getPOIWalletsWithPOI
viewfunction getPOIWalletsWithPOI() view returns (address[])
getSponsorAddressByReferralLink
viewfunction getSponsorAddressByReferralLink(string _link) view returns (address)
getSponsorDataByAddress
viewfunction getSponsorDataByAddress(address _address) view returns (address[])
getSponsorNFTIdByRefLink
viewfunction getSponsorNFTIdByRefLink(string _link) view returns (uint256)
getTotalUserRegistered
viewfunction getTotalUserRegistered() view returns (uint256)
getUserNftAccDataBulk
viewfunction getUserNftAccDataBulk(uint96[] _ids) view returns (tuple[])
getUserPOIData
viewfunction getUserPOIData(address _address) view returns (tuple)
getUserPOIDataBulk
viewfunction getUserPOIDataBulk(address[] _walletAddresses) view returns (tuple[])
getUsersRegisteredBulk
viewfunction getUsersRegisteredBulk(uint96 _fromIndex, uint96 _limit) view returns (address[])
isPaused
viewfunction isPaused() view returns (bool)
isUserRegistered
viewfunction isUserRegistered(address _address) view returns (bool)
MEMBERSHIP_CONTRACT_ADDRESS
viewfunction MEMBERSHIP_CONTRACT_ADDRESS() view returns (address)
NFT_ID_COUNTER
viewfunction NFT_ID_COUNTER() view returns (uint96)
NFT_STORAGE
viewfunction NFT_STORAGE() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
POI_CONTRACT_ADDRESS
viewfunction POI_CONTRACT_ADDRESS() view returns (address)
POI_STORAGE
viewfunction POI_STORAGE() view returns (address)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
userExists
viewfunction userExists(address _address) view returns (bool)
createNFTAccount
nonpayablefunction createNFTAccount(tuple _data, address _sponsorAddress, uint96 _sponsorNFTId, string _referralLink, uint8 _side, string _ipfsLink)
createPOIUser
nonpayablefunction createPOIUser(tuple _user, address _userAddress)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
renounceOwnership
nonpayablefunction renounceOwnership()
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
transferNFT
nonpayablefunction transferNFT(address _oldOwner, address _newOwner, uint96 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePOIUserData
nonpayablefunction updatePOIUserData(tuple _userData, address _address)
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()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V8
error V8()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004f0638038062004f06833981810160405281019062000037919062000282565b816001600081905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000ac9190620002ef565b60405180910390fd5b620000c6816200015260201b60201c565b5082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200030c565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200024a826200021d565b9050919050565b6200025c816200023d565b81146200026857600080fd5b50565b6000815190506200027c8162000251565b92915050565b6000806000606084860312156200029e576200029d62000218565b5b6000620002ae868287016200026b565b9350506020620002c1868287016200026b565b9250506040620002d4868287016200026b565b9150509250925092565b620002e9816200023d565b82525050565b6000602082019050620003066000830184620002de565b92915050565b614bea806200031c6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063624afeb011610125578063a25eb596116100ad578063ed6a98b31161007c578063ed6a98b314610643578063efb8d49d14610673578063f2fde38b146106a3578063f95cb040146106bf578063ffa2abff146106dd5761021c565b8063a25eb596146105bb578063a8def318146105d9578063b187bd26146105f5578063d5463067146106135761021c565b80636ee2e7d9116100f45780636ee2e7d91461053b578063715018a61461055957806376a6bf2c146105635780638690e43b1461057f5780638da5cb5b1461059d5761021c565b8063624afeb0146104b557806367eb8560146104d1578063684581c7146105015780636b01e7511461051d5761021c565b80633ea7e783116101a8578063527d0b4811610177578063527d0b481461040d57806355c9bcff1461042b5780635c975abb1461045b5780635de87bff146104795780635e92e3ed146104975761021c565b80633ea7e783146103ab5780634a4e3bd5146103c95780634fffd0b9146103d357806351858e27146104035761021c565b80631c9851fc116101ef5780631c9851fc146102cd578063243717e0146102eb5780632ab1c1881461031b5780632e57096e1461034b5780633c8bc14c1461037b5761021c565b8063085a512f146102215780630e666e49146102515780630eea54d614610281578063163f75221461029d575b600080fd5b61023b6004803603810190610236919061264d565b61070d565b6040516102489190612738565b60405180910390f35b61026b6004803603810190610266919061264d565b6107b7565b6040516102789190612775565b60405180910390f35b61029b600480360381019061029691906127d4565b61085c565b005b6102b760048036038101906102b2919061264d565b610935565b6040516102c49190612775565b60405180910390f35b6102d56109da565b6040516102e29190612738565b60405180910390f35b61030560048036038101906103009190612827565b610a77565b6040516103129190612abf565b60405180910390f35b61033560048036038101906103309190612827565b610b27565b6040516103429190612af0565b60405180910390f35b61036560048036038101906103609190612c40565b610bcc565b6040516103729190612c98565b60405180910390f35b61039560048036038101906103909190612d13565b610c7f565b6040516103a29190612fa5565b60405180910390f35b6103b3610d11565b6040516103c09190613026565b60405180910390f35b6103d1610d37565b005b6103ed60048036038101906103e8919061264d565b610de0565b6040516103fa91906130b0565b60405180910390f35b61040b610e8a565b005b610415610f33565b6040516104229190612c98565b60405180910390f35b61044560048036038101906104409190613128565b610fcb565b6040516104529190613237565b60405180910390f35b61046361105d565b6040516104709190612775565b60405180910390f35b610481611074565b60405161048e9190612c98565b60405180910390f35b61049f61111a565b6040516104ac9190613268565b60405180910390f35b6104cf60048036038101906104ca9190613587565b611140565b005b6104eb60048036038101906104e6919061264d565b61127a565b6040516104f89190613268565b60405180910390f35b61051b60048036038101906105169190613693565b61131f565b005b6105256113f5565b6040516105329190612af0565b60405180910390f35b610543611413565b6040516105509190613268565b60405180910390f35b610561611439565b005b61057d60048036038101906105789190613714565b61144d565b005b61058761176a565b6040516105949190613268565b60405180910390f35b6105a5611790565b6040516105b29190613268565b60405180910390f35b6105c36117ba565b6040516105d09190613775565b60405180910390f35b6105f360048036038101906105ee91906137b0565b6117e0565b005b6105fd6118b9565b60405161060a9190612775565b60405180910390f35b61062d6004803603810190610628919061380c565b6118c8565b60405161063a9190613268565b60405180910390f35b61065d60048036038101906106589190613128565b611970565b60405161066a9190613a1f565b60405180910390f35b61068d60048036038101906106889190613a41565b611a02565b60405161069a9190612738565b60405180910390f35b6106bd60048036038101906106b8919061264d565b611aaf565b005b6106c7611b35565b6040516106d49190613268565b60405180910390f35b6106f760048036038101906106f2919061264d565b611b5b565b6040516107049190613b8c565b60405180910390f35b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663085a512f836040518263ffffffff1660e01b815260040161076a9190613268565b600060405180830381865afa158015610787573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906107b09190613c86565b9050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e666e49836040518263ffffffff1660e01b81526004016108149190613268565b602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108559190613cfb565b9050919050565b610864611c0b565b61086c611c4c565b610897600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c92565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630eea54d68484846040518463ffffffff1660e01b81526004016108f693929190613d28565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050610930611cfa565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163f7522836040518263ffffffff1660e01b81526004016109929190613268565b602060405180830381865afa1580156109af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d39190613cfb565b9050919050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9c99c306040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a49573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a729190613c86565b905090565b610a7f6124b2565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243717e0836040518263ffffffff1660e01b8152600401610ada9190612af0565b600060405180830381865afa158015610af7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b20919061400c565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188836040518263ffffffff1660e01b8152600401610b849190612af0565b602060405180830381865afa158015610ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc59190614055565b9050919050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638bf7e6c7836040518263ffffffff1660e01b8152600401610c2991906140cc565b602060405180830381865afa158015610c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6a9190614055565b6bffffffffffffffffffffffff169050919050565b6060610d09838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffa2abff611d04565b905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d3f611e4b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dce611c4c565b610dd6611e55565b610dde611cfa565b565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fffd0b9836040518263ffffffff1660e01b8152600401610e3d9190613268565b600060405180830381865afa158015610e5a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610e8391906140ee565b9050919050565b610e92611e4b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f19576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f21611c4c565b610f29611eb8565b610f31611cfa565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359c606136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614137565b905090565b6060611055838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663927ae7c5611f1b565b905092915050565b6000600960149054906101000a900460ff16905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d82cfa16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111079190614055565b6bffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611148611c4c565b611173600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c92565b60006001600660149054906101000a90046bffffffffffffffffffffffff1661119c9190614193565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e14a3910898989898989896040518863ffffffff1660e01b8152600401611205979695949392919061420f565b600060405180830381600087803b15801561121f57600080fd5b505af1158015611233573d6000803e3d6000fd5b5050505080600660146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050611271611cfa565b50505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166367eb8560836040518263ffffffff1660e01b81526004016112d79190613268565b602060405180830381865afa1580156112f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113189190614287565b9050919050565b611327611c0b565b61132f611c4c565b61135a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c92565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e572d21583836040518363ffffffff1660e01b81526004016113b792919061457e565b600060405180830381600087803b1580156113d157600080fd5b505af11580156113e5573d6000803e3d6000fd5b505050506113f1611cfa565b5050565b600660149054906101000a90046bffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61144161205c565b61144b60006120e3565b565b6114af600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506121a9565b6114b7611c4c565b6114bf611e4b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611525576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006004811115611539576115386145ae565b5b81600481111561154c5761154b6145ae565b5b036115975781600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061175e565b600160048111156115ab576115aa6145ae565b5b8160048111156115be576115bd6145ae565b5b036116095781600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061175d565b6002600481111561161d5761161c6145ae565b5b8160048111156116305761162f6145ae565b5b0361167b5781600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061175c565b6003600481111561168f5761168e6145ae565b5b8160048111156116a2576116a16145ae565b5b036116ed5781600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061175b565b600480811115611700576116ff6145ae565b5b816004811115611713576117126145ae565b5b0361175a5781600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b611766611cfa565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117e8611c0b565b6117f0611c4c565b61181b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c92565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634e839aee838360016040518463ffffffff1660e01b815260040161187b93929190614746565b600060405180830381600087803b15801561189557600080fd5b505af11580156118a9573d6000803e3d6000fd5b505050506118b5611cfa565b5050565b60006118c361105d565b905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d546306784846040518363ffffffff1660e01b8152600401611927929190614784565b602060405180830381865afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190614287565b905092915050565b60606119fa838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663243717e06121b9565b905092915050565b6060600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efb8d49d84846040518363ffffffff1660e01b8152600401611a619291906147a8565b600060405180830381865afa158015611a7e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611aa79190613c86565b905092915050565b611ab761205c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b295760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611b209190613268565b60405180910390fd5b611b32816120e3565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b6361255a565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffa2abff836040518263ffffffff1660e01b8152600401611bbe9190613268565b600060405180830381865afa158015611bdb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611c049190614a8f565b9050919050565b611c1361105d565b15611c4a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260005403611c88576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600081905550565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf7576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6001600081905550565b6060835167ffffffffffffffff811115611d2157611d20612b15565b5b604051908082528060200260200182016040528015611d5a57816020015b611d4761255a565b815260200190600190039081611d3f5790505b50905060005b8451816bffffffffffffffffffffffff161015611e4357838386836bffffffffffffffffffffffff1681518110611d9a57611d99614ad8565b5b60200260200101516040518263ffffffff1660e01b8152600401611dbe9190613268565b600060405180830381865afa158015611ddb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e049190614a8f565b82826bffffffffffffffffffffffff1681518110611e2557611e24614ad8565b5b60200260200101819052508080611e3b90614b07565b915050611d60565b509392505050565b611e53612300565b565b611e5d61239b565b6000600960146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611ea16123db565b604051611eae9190613268565b60405180910390a1565b611ec0611c0b565b6001600960146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f046123db565b604051611f119190613268565b60405180910390a1565b6060835167ffffffffffffffff811115611f3857611f37612b15565b5b604051908082528060200260200182016040528015611f6b57816020015b6060815260200190600190039081611f565790505b50905060005b8451816bffffffffffffffffffffffff16101561205457838386836bffffffffffffffffffffffff1681518110611fab57611faa614ad8565b5b60200260200101516040518263ffffffff1660e01b8152600401611fcf9190612af0565b600060405180830381865afa158015611fec573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906120159190614b3b565b82826bffffffffffffffffffffffff168151811061203657612035614ad8565b5b6020026020010181905250808061204c90614b07565b915050611f71565b509392505050565b6120646123db565b73ffffffffffffffffffffffffffffffffffffffff16612082611790565b73ffffffffffffffffffffffffffffffffffffffff16146120e1576120a56123db565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016120d89190613268565b60405180910390fd5b565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6121b48383836123e3565b505050565b6060835167ffffffffffffffff8111156121d6576121d5612b15565b5b60405190808252806020026020018201604052801561220f57816020015b6121fc6124b2565b8152602001906001900390816121f45790505b50905060005b8451816bffffffffffffffffffffffff1610156122f857838386836bffffffffffffffffffffffff168151811061224f5761224e614ad8565b5b60200260200101516040518263ffffffff1660e01b81526004016122739190612af0565b600060405180830381865afa158015612290573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906122b9919061400c565b82826bffffffffffffffffffffffff16815181106122da576122d9614ad8565b5b602002602001018190525080806122f090614b07565b915050612215565b509392505050565b600080339050803b91506000821115612345576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff163b1115612397576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6123a361105d565b6123d9576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600033905090565b6123ee838383612429565b612424576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b8152600401612466929190614b84565b6020604051808303816000875af1158015612485573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a99190613cfb565b90509392505050565b6040518061016001604052806060815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020016060815260200160006bffffffffffffffffffffffff16815260200160008152602001600081525090565b60405180610140016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160008152602001606081526020016125a66125b3565b8152602001600081525090565b6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061261a826125ef565b9050919050565b61262a8161260f565b811461263557600080fd5b50565b60008135905061264781612621565b92915050565b600060208284031215612663576126626125e5565b5b600061267184828501612638565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6126af8161260f565b82525050565b60006126c183836126a6565b60208301905092915050565b6000602082019050919050565b60006126e58261267a565b6126ef8185612685565b93506126fa83612696565b8060005b8381101561272b57815161271288826126b5565b975061271d836126cd565b9250506001810190506126fe565b5085935050505092915050565b6000602082019050818103600083015261275281846126da565b905092915050565b60008115159050919050565b61276f8161275a565b82525050565b600060208201905061278a6000830184612766565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6127b181612790565b81146127bc57600080fd5b50565b6000813590506127ce816127a8565b92915050565b6000806000606084860312156127ed576127ec6125e5565b5b60006127fb86828701612638565b935050602061280c86828701612638565b925050604061281d868287016127bf565b9150509250925092565b60006020828403121561283d5761283c6125e5565b5b600061284b848285016127bf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561288e578082015181840152602081019050612873565b60008484015250505050565b6000601f19601f8301169050919050565b60006128b682612854565b6128c0818561285f565b93506128d0818560208601612870565b6128d98161289a565b840191505092915050565b6128ed81612790565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061292b83836128e4565b60208301905092915050565b6000602082019050919050565b600061294f826128f3565b61295981856128fe565b93506129648361290f565b8060005b8381101561299557815161297c888261291f565b975061298783612937565b925050600181019050612968565b5085935050505092915050565b6000819050919050565b6129b5816129a2565b82525050565b60006101608301600083015184820360008601526129d982826128ab565b91505060208301516129ee60208601826128e4565b506040830151612a0160408601826128e4565b506060830151612a1460608601826128e4565b506080830151612a2760808601826126a6565b5060a083015184820360a0860152612a3f82826128ab565b91505060c083015184820360c0860152612a598282612944565b91505060e083015184820360e0860152612a738282612944565b915050610100830151612a8a6101008601826128e4565b50610120830151612a9f6101208601826129ac565b50610140830151612ab46101408601826129ac565b508091505092915050565b60006020820190508181036000830152612ad981846129bb565b905092915050565b612aea81612790565b82525050565b6000602082019050612b056000830184612ae1565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b4d8261289a565b810181811067ffffffffffffffff82111715612b6c57612b6b612b15565b5b80604052505050565b6000612b7f6125db565b9050612b8b8282612b44565b919050565b600067ffffffffffffffff821115612bab57612baa612b15565b5b612bb48261289a565b9050602081019050919050565b82818337600083830152505050565b6000612be3612bde84612b90565b612b75565b905082815260208101848484011115612bff57612bfe612b10565b5b612c0a848285612bc1565b509392505050565b600082601f830112612c2757612c26612b0b565b5b8135612c37848260208601612bd0565b91505092915050565b600060208284031215612c5657612c556125e5565b5b600082013567ffffffffffffffff811115612c7457612c736125ea565b5b612c8084828501612c12565b91505092915050565b612c92816129a2565b82525050565b6000602082019050612cad6000830184612c89565b92915050565b600080fd5b600080fd5b60008083601f840112612cd357612cd2612b0b565b5b8235905067ffffffffffffffff811115612cf057612cef612cb3565b5b602083019150836020820283011115612d0c57612d0b612cb8565b5b9250929050565b60008060208385031215612d2a57612d296125e5565b5b600083013567ffffffffffffffff811115612d4857612d476125ea565b5b612d5485828601612cbd565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006080830160008301518482036000860152612da982826128ab565b91505060208301518482036020860152612dc382826128ab565b91505060408301518482036040860152612ddd82826128ab565b91505060608301518482036060860152612df782826128ab565b9150508091505092915050565b6000610140830160008301518482036000860152612e2282826128ab565b91505060208301518482036020860152612e3c82826128ab565b91505060408301518482036040860152612e5682826128ab565b91505060608301518482036060860152612e7082826128ab565b91505060808301518482036080860152612e8a82826128ab565b91505060a083015184820360a0860152612ea482826128ab565b91505060c0830151612eb960c08601826129ac565b5060e083015184820360e0860152612ed182826128ab565b915050610100830151848203610100860152612eed8282612d8c565b915050610120830151612f046101208601826129ac565b508091505092915050565b6000612f1b8383612e04565b905092915050565b6000602082019050919050565b6000612f3b82612d60565b612f458185612d6b565b935083602082028501612f5785612d7c565b8060005b85811015612f935784840389528151612f748582612f0f565b9450612f7f83612f23565b925060208a01995050600181019050612f5b565b50829750879550505050505092915050565b60006020820190508181036000830152612fbf8184612f30565b905092915050565b6000819050919050565b6000612fec612fe7612fe2846125ef565b612fc7565b6125ef565b9050919050565b6000612ffe82612fd1565b9050919050565b600061301082612ff3565b9050919050565b61302081613005565b82525050565b600060208201905061303b6000830184613017565b92915050565b600082825260208201905092915050565b600061305d826128f3565b6130678185613041565b93506130728361290f565b8060005b838110156130a357815161308a888261291f565b975061309583612937565b925050600181019050613076565b5085935050505092915050565b600060208201905081810360008301526130ca8184613052565b905092915050565b60008083601f8401126130e8576130e7612b0b565b5b8235905067ffffffffffffffff81111561310557613104612cb3565b5b60208301915083602082028301111561312157613120612cb8565b5b9250929050565b6000806020838503121561313f5761313e6125e5565b5b600083013567ffffffffffffffff81111561315d5761315c6125ea565b5b613169858286016130d2565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006131ad83836128ab565b905092915050565b6000602082019050919050565b60006131cd82613175565b6131d78185613180565b9350836020820285016131e985613191565b8060005b85811015613225578484038952815161320685826131a1565b9450613211836131b5565b925060208a019950506001810190506131ed565b50829750879550505050505092915050565b6000602082019050818103600083015261325181846131c2565b905092915050565b6132628161260f565b82525050565b600060208201905061327d6000830184613259565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156132a8576132a7612b15565b5b602082029050602081019050919050565b60006132cc6132c78461328d565b612b75565b905080838252602082019050602084028301858111156132ef576132ee612cb8565b5b835b81811015613318578061330488826127bf565b8452602084019350506020810190506132f1565b5050509392505050565b600082601f83011261333757613336612b0b565b5b81356133478482602086016132b9565b91505092915050565b613359816129a2565b811461336457600080fd5b50565b60008135905061337681613350565b92915050565b6000610160828403121561339357613392613283565b5b61339e610160612b75565b9050600082013567ffffffffffffffff8111156133be576133bd613288565b5b6133ca84828501612c12565b60008301525060206133de848285016127bf565b60208301525060406133f2848285016127bf565b6040830152506060613406848285016127bf565b606083015250608061341a84828501612638565b60808301525060a082013567ffffffffffffffff81111561343e5761343d613288565b5b61344a84828501612c12565b60a08301525060c082013567ffffffffffffffff81111561346e5761346d613288565b5b61347a84828501613322565b60c08301525060e082013567ffffffffffffffff81111561349e5761349d613288565b5b6134aa84828501613322565b60e0830152506101006134bf848285016127bf565b610100830152506101206134d584828501613367565b610120830152506101406134eb84828501613367565b6101408301525092915050565b60008083601f84011261350e5761350d612b0b565b5b8235905067ffffffffffffffff81111561352b5761352a612cb3565b5b60208301915083600182028301111561354757613546612cb8565b5b9250929050565b600060ff82169050919050565b6135648161354e565b811461356f57600080fd5b50565b6000813590506135818161355b565b92915050565b600080600080600080600060c0888a0312156135a6576135a56125e5565b5b600088013567ffffffffffffffff8111156135c4576135c36125ea565b5b6135d08a828b0161337c565b97505060206135e18a828b01612638565b96505060406135f28a828b016127bf565b955050606088013567ffffffffffffffff811115613613576136126125ea565b5b61361f8a828b016134f8565b945094505060806136328a828b01613572565b92505060a088013567ffffffffffffffff811115613653576136526125ea565b5b61365f8a828b01612c12565b91505092959891949750929550565b600080fd5b6000610120828403121561368a5761368961366e565b5b81905092915050565b600080604083850312156136aa576136a96125e5565b5b600083013567ffffffffffffffff8111156136c8576136c76125ea565b5b6136d485828601613673565b92505060206136e585828601612638565b9150509250929050565b600581106136fc57600080fd5b50565b60008135905061370e816136ef565b92915050565b6000806040838503121561372b5761372a6125e5565b5b600061373985828601612638565b925050602061374a858286016136ff565b9150509250929050565b600061375f82612ff3565b9050919050565b61376f81613754565b82525050565b600060208201905061378a6000830184613766565b92915050565b600061014082840312156137a7576137a661366e565b5b81905092915050565b600080604083850312156137c7576137c66125e5565b5b600083013567ffffffffffffffff8111156137e5576137e46125ea565b5b6137f185828601613790565b925050602061380285828601612638565b9150509250929050565b60008060208385031215613823576138226125e5565b5b600083013567ffffffffffffffff811115613841576138406125ea565b5b61384d858286016134f8565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006101608301600083015184820360008601526138a382826128ab565b91505060208301516138b860208601826128e4565b5060408301516138cb60408601826128e4565b5060608301516138de60608601826128e4565b5060808301516138f160808601826126a6565b5060a083015184820360a086015261390982826128ab565b91505060c083015184820360c08601526139238282612944565b91505060e083015184820360e086015261393d8282612944565b9150506101008301516139546101008601826128e4565b506101208301516139696101208601826129ac565b5061014083015161397e6101408601826129ac565b508091505092915050565b60006139958383613885565b905092915050565b6000602082019050919050565b60006139b582613859565b6139bf8185613864565b9350836020820285016139d185613875565b8060005b85811015613a0d57848403895281516139ee8582613989565b94506139f98361399d565b925060208a019950506001810190506139d5565b50829750879550505050505092915050565b60006020820190508181036000830152613a3981846139aa565b905092915050565b60008060408385031215613a5857613a576125e5565b5b6000613a66858286016127bf565b9250506020613a77858286016127bf565b9150509250929050565b6000610140830160008301518482036000860152613a9f82826128ab565b91505060208301518482036020860152613ab982826128ab565b91505060408301518482036040860152613ad382826128ab565b91505060608301518482036060860152613aed82826128ab565b91505060808301518482036080860152613b0782826128ab565b91505060a083015184820360a0860152613b2182826128ab565b91505060c0830151613b3660c08601826129ac565b5060e083015184820360e0860152613b4e82826128ab565b915050610100830151848203610100860152613b6a8282612d8c565b915050610120830151613b816101208601826129ac565b508091505092915050565b60006020820190508181036000830152613ba68184613a81565b905092915050565b600067ffffffffffffffff821115613bc957613bc8612b15565b5b602082029050602081019050919050565b600081519050613be981612621565b92915050565b6000613c02613bfd84613bae565b612b75565b90508083825260208201905060208402830185811115613c2557613c24612cb8565b5b835b81811015613c4e5780613c3a8882613bda565b845260208401935050602081019050613c27565b5050509392505050565b600082601f830112613c6d57613c6c612b0b565b5b8151613c7d848260208601613bef565b91505092915050565b600060208284031215613c9c57613c9b6125e5565b5b600082015167ffffffffffffffff811115613cba57613cb96125ea565b5b613cc684828501613c58565b91505092915050565b613cd88161275a565b8114613ce357600080fd5b50565b600081519050613cf581613ccf565b92915050565b600060208284031215613d1157613d106125e5565b5b6000613d1f84828501613ce6565b91505092915050565b6000606082019050613d3d6000830186613259565b613d4a6020830185613259565b613d576040830184612ae1565b949350505050565b6000613d72613d6d84612b90565b612b75565b905082815260208101848484011115613d8e57613d8d612b10565b5b613d99848285612870565b509392505050565b600082601f830112613db657613db5612b0b565b5b8151613dc6848260208601613d5f565b91505092915050565b600081519050613dde816127a8565b92915050565b6000613df7613df28461328d565b612b75565b90508083825260208201905060208402830185811115613e1a57613e19612cb8565b5b835b81811015613e435780613e2f8882613dcf565b845260208401935050602081019050613e1c565b5050509392505050565b600082601f830112613e6257613e61612b0b565b5b8151613e72848260208601613de4565b91505092915050565b600081519050613e8a81613350565b92915050565b60006101608284031215613ea757613ea6613283565b5b613eb2610160612b75565b9050600082015167ffffffffffffffff811115613ed257613ed1613288565b5b613ede84828501613da1565b6000830152506020613ef284828501613dcf565b6020830152506040613f0684828501613dcf565b6040830152506060613f1a84828501613dcf565b6060830152506080613f2e84828501613bda565b60808301525060a082015167ffffffffffffffff811115613f5257613f51613288565b5b613f5e84828501613da1565b60a08301525060c082015167ffffffffffffffff811115613f8257613f81613288565b5b613f8e84828501613e4d565b60c08301525060e082015167ffffffffffffffff811115613fb257613fb1613288565b5b613fbe84828501613e4d565b60e083015250610100613fd384828501613dcf565b61010083015250610120613fe984828501613e7b565b61012083015250610140613fff84828501613e7b565b6101408301525092915050565b600060208284031215614022576140216125e5565b5b600082015167ffffffffffffffff8111156140405761403f6125ea565b5b61404c84828501613e90565b91505092915050565b60006020828403121561406b5761406a6125e5565b5b600061407984828501613dcf565b91505092915050565b600082825260208201905092915050565b600061409e82612854565b6140a88185614082565b93506140b8818560208601612870565b6140c18161289a565b840191505092915050565b600060208201905081810360008301526140e68184614093565b905092915050565b600060208284031215614104576141036125e5565b5b600082015167ffffffffffffffff811115614122576141216125ea565b5b61412e84828501613e4d565b91505092915050565b60006020828403121561414d5761414c6125e5565b5b600061415b84828501613e7b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061419e82612790565b91506141a983612790565b925082820190506bffffffffffffffffffffffff8111156141cd576141cc614164565b5b92915050565b60006141df8385614082565b93506141ec838584612bc1565b6141f58361289a565b840190509392505050565b6142098161354e565b82525050565b600060c0820190508181036000830152614229818a6129bb565b90506142386020830189613259565b6142456040830188612ae1565b81810360608301526142588186886141d3565b90506142676080830185614200565b81810360a08301526142798184614093565b905098975050505050505050565b60006020828403121561429d5761429c6125e5565b5b60006142ab84828501613bda565b91505092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126142e0576142df6142be565b5b83810192508235915060208301925067ffffffffffffffff821115614308576143076142b4565b5b60018202360383131561431e5761431d6142b9565b5b509250929050565b6000614332838561285f565b935061433f838584612bc1565b6143488361289a565b840190509392505050565b60006143626020840184613367565b905092915050565b600082356001608003833603038112614386576143856142be565b5b82810191505092915050565b6000608083016143a560008401846142c3565b85830360008701526143b8838284614326565b925050506143c960208401846142c3565b85830360208701526143dc838284614326565b925050506143ed60408401846142c3565b8583036040870152614400838284614326565b9250505061441160608401846142c3565b8583036060870152614424838284614326565b925050508091505092915050565b6000610120830161444660008401846142c3565b8583036000870152614459838284614326565b9250505061446a60208401846142c3565b858303602087015261447d838284614326565b9250505061448e60408401846142c3565b85830360408701526144a1838284614326565b925050506144b260608401846142c3565b85830360608701526144c5838284614326565b925050506144d660808401846142c3565b85830360808701526144e9838284614326565b925050506144fa60a08401846142c3565b85830360a087015261450d838284614326565b9250505061451e60c0840184614353565b61452b60c08601826129ac565b5061453960e08401846142c3565b85830360e087015261454c838284614326565b9250505061455e61010084018461436a565b8482036101008601526145718282614392565b9150508091505092915050565b600060408201905081810360008301526145988185614432565b90506145a76020830184613259565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600061014083016145f160008401846142c3565b8583036000870152614604838284614326565b9250505061461560208401846142c3565b8583036020870152614628838284614326565b9250505061463960408401846142c3565b858303604087015261464c838284614326565b9250505061465d60608401846142c3565b8583036060870152614670838284614326565b9250505061468160808401846142c3565b8583036080870152614694838284614326565b925050506146a560a08401846142c3565b85830360a08701526146b8838284614326565b925050506146c960c0840184614353565b6146d660c08601826129ac565b506146e460e08401846142c3565b85830360e08701526146f7838284614326565b9250505061470961010084018461436a565b84820361010086015261471c8282614392565b91505061472d610120840184614353565b61473b6101208601826129ac565b508091505092915050565b6000606082019050818103600083015261476081866145dd565b905061476f6020830185613259565b61477c6040830184612766565b949350505050565b6000602082019050818103600083015261479f8184866141d3565b90509392505050565b60006040820190506147bd6000830185612ae1565b6147ca6020830184612ae1565b9392505050565b6000608082840312156147e7576147e6613283565b5b6147f16080612b75565b9050600082015167ffffffffffffffff81111561481157614810613288565b5b61481d84828501613da1565b600083015250602082015167ffffffffffffffff81111561484157614840613288565b5b61484d84828501613da1565b602083015250604082015167ffffffffffffffff81111561487157614870613288565b5b61487d84828501613da1565b604083015250606082015167ffffffffffffffff8111156148a1576148a0613288565b5b6148ad84828501613da1565b60608301525092915050565b600061014082840312156148d0576148cf613283565b5b6148db610140612b75565b9050600082015167ffffffffffffffff8111156148fb576148fa613288565b5b61490784828501613da1565b600083015250602082015167ffffffffffffffff81111561492b5761492a613288565b5b61493784828501613da1565b602083015250604082015167ffffffffffffffff81111561495b5761495a613288565b5b61496784828501613da1565b604083015250606082015167ffffffffffffffff81111561498b5761498a613288565b5b61499784828501613da1565b606083015250608082015167ffffffffffffffff8111156149bb576149ba613288565b5b6149c784828501613da1565b60808301525060a082015167ffffffffffffffff8111156149eb576149ea613288565b5b6149f784828501613da1565b60a08301525060c0614a0b84828501613e7b565b60c08301525060e082015167ffffffffffffffff811115614a2f57614a2e613288565b5b614a3b84828501613da1565b60e08301525061010082015167ffffffffffffffff811115614a6057614a5f613288565b5b614a6c848285016147d1565b61010083015250610120614a8284828501613e7b565b6101208301525092915050565b600060208284031215614aa557614aa46125e5565b5b600082015167ffffffffffffffff811115614ac357614ac26125ea565b5b614acf848285016148b9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614b1282612790565b91506bffffffffffffffffffffffff8203614b3057614b2f614164565b5b600182019050919050565b600060208284031215614b5157614b506125e5565b5b600082015167ffffffffffffffff811115614b6f57614b6e6125ea565b5b614b7b84828501613da1565b91505092915050565b6000604082019050614b996000830185613259565b8181036020830152614bab8184614093565b9050939250505056fea264697066735822122076a0109c2d61178bf2136711098c60c30a3b1dee07436ee1bd3b5d7e82f3c58f64736f6c63430008180033000000000000000000000000ed39ca015de48eaff48c091d70728bce7893eafd0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99