10 txs
11 calls
constructor
constructor(address _rolesManager, address _nftContract, address _paymentSplitter, address _storageAdministrator, address _bonusAndReward, address _usdcContract, address _initialOwner, address _pauser)
functions
BONUS_AND_REWARD
viewfunction BONUS_AND_REWARD() view returns (address)
cancelLPFees
viewfunction cancelLPFees() view returns (uint256)
getAllPools
viewfunction getAllPools() view returns (tuple[])
getClosedSeason
viewfunction getClosedSeason() view returns (tuple)
getCurrentSeason
viewfunction getCurrentSeason() view returns (tuple)
getMyPurchases
viewfunction getMyPurchases(uint96 _nftId) view returns (tuple[])
getMyPurchasesIds
viewfunction getMyPurchasesIds(uint96 _nftId) view returns (uint96[])
getPoolById
viewfunction getPoolById(uint16 poolId) view returns (tuple)
getPurchaseById
viewfunction getPurchaseById(uint96 _nftId, uint96 _purchaseId) view returns (tuple)
getSeasonbyId
viewfunction getSeasonbyId(uint96 _id) view returns (tuple)
isPaused
viewfunction isPaused() view returns (bool)
isPurchaseActive
viewfunction isPurchaseActive(uint96 _nftId, uint96 _purchaseId) view
LP_TOTAL_AMOUNT_INVESTED
viewfunction LP_TOTAL_AMOUNT_INVESTED() view returns (uint256)
lpPurchasesCount
viewfunction lpPurchasesCount() view returns (uint96)
NFT
viewfunction NFT() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PAYMENT_SPLITTER
viewfunction PAYMENT_SPLITTER() view returns (address)
poolsCounter
viewfunction poolsCounter() view returns (uint16)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
seasonsClosedCount
viewfunction seasonsClosedCount() view returns (uint96)
seasonsCount
viewfunction seasonsCount() view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
USDC
viewfunction USDC() view returns (address)
autoBoostLP
nonpayablefunction autoBoostLP(uint96 _nftId, uint96 _purchaseId)
boostLP
nonpayablefunction boostLP(uint96 _nftId, uint96 _purchaseId)
buyLP
nonpayablefunction buyLP(uint96 _nftId, uint16 _poolId)
cancelSubscription
nonpayablefunction cancelSubscription(uint96 _nftId, uint96 _purchaseId)
closeSeason
nonpayablefunction closeSeason(uint256 _totalAmountCollected)
createPool
nonpayablefunction createPool(string _name, uint256 _price, uint256 _feePercentage)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
InitSeasons
nonpayablefunction InitSeasons()
migrateNftsLPpurchase
nonpayablefunction migrateNftsLPpurchase(uint96[] _nftIds, uint16[] _poolIds, uint96[] _purchaseIds, uint256[] _timeStamps, uint256[] _boostedAmounts)
migrateSeason
nonpayablefunction migrateSeason(tuple[] _data)
purchaseEnded
nonpayablefunction purchaseEnded(uint96 _nftId, uint96 _purchaseId)
renounceOwnership
nonpayablefunction renounceOwnership()
setCancelLPFees
nonpayablefunction setCancelLPFees(uint256 _cancelLPFees)
setContracts
nonpayablefunction setContracts(address _address, uint8 _contractOption)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePool
nonpayablefunction updatePool(uint16 _poolId, string _name, uint256 _price, uint256 _feePercentage, bool _isActive)
events
AutoBoostToggled
event AutoBoostToggled(uint96 indexed purchaseId, bool newState, uint256 timestamp)
LPBoosted
event LPBoosted(uint96 indexed _nftId, uint96 indexed _purchaseId, uint256 amountToBoost, uint256 timestamp)
MigrateLpPurchases
event MigrateLpPurchases(uint96 nftQuantity)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolCreated
event PoolCreated(uint96 indexed poolId, string name, uint256 price, uint256 feePercentage)
PoolPurchased
event PoolPurchased(address indexed buyer, uint96 nftId, uint96 nftSponsorId, uint96 purchaseId, uint16 poolId, uint96 seasonId, uint256 timestamp)
PoolPurchased
event PoolPurchased(address indexed signer, uint96 indexed nftId, uint96 nftSponsorId, uint96 indexed purchaseId, uint16 poolId)
SeasonClosed
event SeasonClosed(uint96 indexed seasonId, uint256 totalProfit)
SeasonOpened
event SeasonOpened(uint96 indexed seasonId, uint256 startTime, uint256 endTime)
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)
P2
error P2(uint96 _purchaseId)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
S2
error S2()
S4
error S4()
S5
error S5()
V1
error V1()
V2
error V2()
V3
error V3()
V5
error V5()
V6
error V6()
V8
error V8()
creation bytecode
0x608060405234801562000010575f80fd5b506040516200584238038062005842833981810160405281019062000036919062000251565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a1919062000326565b60405180910390fd5b620000bb816200012960201b60201c565b506001601081905550875f55866001558560025584600355836004558260055580600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000341565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200021b82620001f0565b9050919050565b6200022d816200020f565b811462000238575f80fd5b50565b5f815190506200024b8162000222565b92915050565b5f805f805f805f80610100898b031215620002715762000270620001ec565b5b5f620002808b828c016200023b565b9850506020620002938b828c016200023b565b9750506040620002a68b828c016200023b565b9650506060620002b98b828c016200023b565b9550506080620002cc8b828c016200023b565b94505060a0620002df8b828c016200023b565b93505060c0620002f28b828c016200023b565b92505060e0620003058b828c016200023b565b9150509295985092959890939650565b62000320816200020f565b82525050565b5f6020820190506200033b5f83018462000315565b92915050565b6154f3806200034f5f395ff3fe608060405234801561000f575f80fd5b5060043610610251575f3560e01c806389a3027111610144578063b187bd26116100c1578063d3b30b7511610085578063d3b30b7514610661578063d88ff1f41461067f578063dbf80a031461069d578063df7049e6146106b9578063f1ad7055146106d7578063f2fde38b146106f557610251565b8063b187bd26146105bd578063b29a1575146105db578063c34a2987146105f9578063cc8dfc7914610629578063cf7e80371461064557610251565b80639e1f22e1116101085780639e1f22e11461051b578063a5f0292b14610537578063a99fc55914610555578063afcdcdb614610571578063b14feb621461058d57610251565b806389a30271146104775780638afbe183146104955780638da5cb5b146104c5578063969a56a0146104e35780639b6c5283146104ff57610251565b80634f60e6c1116101d2578063715018a611610196578063715018a6146103e35780637c0b8de2146103ed578063821ba66d1461040b5780638690e43b1461043b5780638999dd6a1461045957610251565b80634f60e6c11461036557806351858e27146103815780635c975abb1461038b5780635d0aeec1146103a95780635d0eb31a146103c557610251565b80631f9b054d116102195780631f9b054d146102d357806344443064146102f157806345cd36f9146103215780634a4e3bd51461033f5780634df931fb1461034957610251565b8063018950261461025557806301afd56e14610271578063074383a71461027b5780630a2dd68d1461029957806319d3da97146102b7575b5f80fd5b61026f600480360381019061026a9190613996565b610711565b005b6102796107b9565b005b610283610889565b6040516102909190613a76565b60405180910390f35b6102a16109c7565b6040516102ae9190613b09565b60405180910390f35b6102d160048036038101906102cc9190613996565b6109ec565b005b6102db610c32565b6040516102e89190613b31565b60405180910390f35b61030b60048036038101906103069190613b74565b610c4f565b6040516103189190613a76565b60405180910390f35b610329610d0a565b6040516103369190613b31565b60405180910390f35b610347610d28565b005b610363600480360381019061035e9190613d3c565b610dd0565b005b61037f600480360381019061037a9190613ed6565b610f97565b005b6103896111c1565b005b610393611269565b6040516103a09190613ffc565b60405180910390f35b6103c360048036038101906103be9190614015565b61127f565b005b6103cd6113df565b6040516103da9190614062565b60405180910390f35b6103eb6113f2565b005b6103f5611405565b604051610402919061409b565b60405180910390f35b61042560048036038101906104209190613b74565b61142a565b6040516104329190614221565b60405180910390f35b6104436115a7565b604051610450919061409b565b60405180910390f35b6104616115ca565b60405161046e9190613b31565b60405180910390f35b61047f6115e8565b60405161048c919061409b565b60405180910390f35b6104af60048036038101906104aa9190613b74565b61160d565b6040516104bc91906142e9565b60405180910390f35b6104cd6116cb565b6040516104da919061409b565b60405180910390f35b6104fd60048036038101906104f89190614309565b6116f3565b005b61051960048036038101906105149190614347565b611aac565b005b61053560048036038101906105309190614015565b611cb0565b005b61053f611cda565b60405161054c91906143d3565b60405180910390f35b61056f600480360381019061056a9190614015565b611cff565b005b61058b60048036038101906105869190614015565b611f8c565b005b6105a760048036038101906105a29190614015565b612226565b6040516105b491906144a1565b60405180910390f35b6105c561237e565b6040516105d29190613ffc565b60405180910390f35b6105e361238c565b6040516105f091906144ca565b60405180910390f35b610613600480360381019061060e91906144e3565b612392565b60405161062091906145fb565b60405180910390f35b610643600480360381019061063e9190614668565b6124a1565b005b61065f600480360381019061065a91906146fb565b612811565b005b610669612a47565b6040516106769190613a76565b60405180910390f35b610687612b26565b6040516106949190614874565b60405180910390f35b6106b760048036038101906106b29190614015565b612b48565b005b6106c1612bf2565b6040516106ce91906148b4565b60405180910390f35b6106df612c17565b6040516106ec91906144ca565b60405180910390f35b61070f600480360381019061070a91906148cd565b612c1d565b005b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506107725f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b60648311156107ad576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600d81905550505050565b336040518060400160405280600681526020017f53595354454d000000000000000000000000000000000000000000000000000081525061081a5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b5f600a600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16111561087c576040517f3a347c7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108855f612cb1565b5050565b610891613882565b5f600b5f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036108f1576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095f6001600b5f9054906101000a90046bffffffffffffffffffffffff1661091a9190614925565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610a4d5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b610a55612e4e565b610a5d612e8f565b5f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f816bffffffffffffffffffffffff1603610ac2576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182610ad09190614925565b90505f60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615610b4a576040517f6558179300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8581600301819055506001816004015f6101000a81548160ff021916908315150217905550600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190610b9890614964565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbd4185a09dd89c1703a5e891dcf85f1e0b7b0c1f32fad28b60570c0bb8d5948587604051610c0591906144ca565b60405180910390a2610c22600183610c1d9190614997565b612cb1565b505050610c2d612ed5565b505050565b600b5f9054906101000a90046bffffffffffffffffffffffff1681565b610c57613882565b60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b600a60029054906101000a90046bffffffffffffffffffffffff1681565b610d30612edf565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db6576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dbe612e8f565b610dc6612ee9565b610dce612ed5565b565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250610e315f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b610e39612e8f565b610e41612e4e565b610e49612edf565b600a5f9054906101000a900461ffff1661ffff168761ffff1610610e99576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064841115610ed4576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a001604052808861ffff16815260200187815260200186815260200185815260200184151581525060065f8961ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081610f4f9190614bc7565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050610f8e612ed5565b50505050505050565b3360405180602001604052805f815250610fd15f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b610fd9612e4e565b610fe1612edf565b5f8c8c905090505f811480610ff65750603281115b1561102d576040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f90505b8e8e9050816bffffffffffffffffffffffff161015611198575f8f8f836bffffffffffffffffffffffff1681811061106e5761106d614c96565b5b90506020020160208101906110839190613b74565b90505f8e8e846bffffffffffffffffffffffff168181106110a7576110a6614c96565b5b90506020020160208101906110bc91906144e3565b90505f8b8b856bffffffffffffffffffffffff168181106110e0576110df614c96565b5b9050602002013590505f8a8a866bffffffffffffffffffffffff1681811061110b5761110a614c96565b5b9050602002013590505f8f8f876bffffffffffffffffffffffff1681811061113657611135614c96565b5b905060200201602081019061114b9190613b74565b90505f61115d86868686866001612f4b565b9150505f60028261116e9190614cf0565b9050808961117c9190614d20565b985050505050505050808061119090614964565b915050611033565b5080600c5f8282546111aa9190614d20565b925050819055505050505050505050505050505050565b6111c9612edf565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124f576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611257612e8f565b61125f613349565b611267612ed5565b565b5f600f60149054906101000a900460ff16905090565b336040518060400160405280600581526020017f41444d494e0000000000000000000000000000000000000000000000000000008152506112e05f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b6112e8612e4e565b6112f0612e8f565b6112f8612edf565b5f60075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff16158061137357505f8160030154145b156113b557836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016113ac9190613b31565b60405180910390fd5b5f816004015f6101000a81548160ff021916908315150217905550506113d9612ed5565b50505050565b600a5f9054906101000a900461ffff1681565b6113fa6133ac565b6114035f613433565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f818054905090505f81036114c8575f67ffffffffffffffff81111561148557611484613bee565b5b6040519080825280602002602001820160405280156114be57816020015b6114ab6138bc565b8152602001906001900390816114a35790505b50925050506115a2565b5f8167ffffffffffffffff8111156114e3576114e2613bee565b5b60405190808252806020026020018201604052801561151c57816020015b6115096138bc565b8152602001906001900390816115015790505b5090505f5b8281101561159a57611571868583815481106115405761153f614c96565b5b905f5260205f209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff16612226565b82828151811061158457611583614c96565b5b6020026020010181905250806001019050611521565b508093505050505b919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a600e9054906101000a90046bffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060085f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156116bf57602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116116725790505b50505050509050919050565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117659190614d83565b602060405180830381865afa158015611780573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a49190614db0565b73ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117f9612e8f565b611801612e4e565b611809612edf565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188856040518263ffffffff1660e01b81526004016118649190613b31565b602060405180830381865afa15801561187f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a39190614def565b90505f806118b58686425f805f612f4b565b915091508060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611914919061409b565b602060405180830381865afa15801561192f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119539190614e2e565b101561198b576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636dec04e9335f868560015f806040518863ffffffff1660e01b81526004016119f29796959493929190614f12565b5f604051808303815f87803b158015611a09575f80fd5b505af1158015611a1b573d5f803e3d5ffd5b5050505080600c5f8282540192505081905550816bffffffffffffffffffffffff16866bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27309e519004512d0fb9fbcdc060e3690e558c9bd68e064df57f1bfcee44f8ed8689604051611a94929190614f7f565b60405180910390a4505050611aa7612ed5565b505050565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611b0d5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b611b15612e8f565b611b1d612e4e565b611b25612edf565b6064831115611b60576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f9054906101000a900461ffff1690506040518060a001604052808261ffff1681526020018781526020018681526020018581526020016001151581525060065f8361ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081611bef9190614bc7565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a5f81819054906101000a900461ffff1680929190611c4590614fa6565b91906101000a81548161ffff021916908361ffff160217905550508061ffff167f202127a3b621c057f83d5f6394c98a33490b6d93f38e17d6ef33cabe43d3d218878787604051611c9893929190615017565b60405180910390a250611ca9612ed5565b5050505050565b611cd682823073ffffffffffffffffffffffffffffffffffffffff1663b14feb626134f6565b5050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611d719190614d83565b602060405180830381865afa158015611d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db09190614db0565b73ffffffffffffffffffffffffffffffffffffffff1614611dfd576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e05612e4e565b611e0d612e8f565b611e178383611cb0565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a99fc55985856040518363ffffffff1660e01b8152600401611e74929190615053565b6020604051808303815f875af1158015611e90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb49190614e2e565b90508060075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206005015f828254611f209190614d20565b92505081905550826bffffffffffffffffffffffff16846bffffffffffffffffffffffff167fee345a8d877e3f266620b91711eaa4125404bcf2a352ca8369c0e4abc5be8f858342604051611f7692919061507a565b60405180910390a350611f87612ed5565b505050565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611ffe9190614d83565b602060405180830381865afa158015612019573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203d9190614db0565b73ffffffffffffffffffffffffffffffffffffffff161461208a576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612092612e4e565b61209a612e8f565b6120a48383611cb0565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163af7aa846040518263ffffffff1660e01b81526004016120ff9190613b31565b6020604051808303815f875af115801561211b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213f91906150b5565b9050806121d05760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663438e0ce185856040518363ffffffff1660e01b81526004016121a2929190615053565b5f604051808303815f87803b1580156121b9575f80fd5b505af11580156121cb573d5f803e3d5ffd5b505050505b826bffffffffffffffffffffffff167f2b11a5aeebe95d970d0d3a523b0f4d6bf3ae63cff2226c9aa50dc5229207017682426040516122109291906150e0565b60405180910390a250612221612ed5565b505050565b61222e6138bc565b60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815260200160058201548152602001600682015481525050905092915050565b5f612387611269565b905090565b600c5481565b61239a613921565b60065f8361ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020016001820180546123ec90614a03565b80601f016020809104026020016040519081016040528092919081815260200182805461241890614a03565b80156124635780601f1061243a57610100808354040283529160200191612463565b820191905f5260205f20905b81548152906001019060200180831161244657829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506125025f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612567576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600581111561257a57612579614e59565b5b83600581111561258d5761258c614e59565b5b036125d657835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061280b565b600160058111156125ea576125e9614e59565b5b8360058111156125fd576125fc614e59565b5b03612647578360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061280a565b6002600581111561265b5761265a614e59565b5b83600581111561266e5761266d614e59565b5b036126b8578360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612809565b600360058111156126cc576126cb614e59565b5b8360058111156126df576126de614e59565b5b03612729578360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612808565b6004600581111561273d5761273c614e59565b5b8360058111156127505761274f614e59565b5b0361279a578360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612807565b6005808111156127ad576127ac614e59565b5b8360058111156127c0576127bf614e59565b5b03612806578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b50505050565b336040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152506128725f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612ca1565b61287a612e4e565b612882612e8f565b5f84849050036128be576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84849050811015612a38578484828181106128de576128dd614c96565b5b905060a0020160095f8787858181106128fa576128f9614c96565b5b905060a002015f0160208101906129119190613b74565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081816129469190615335565b905050600a600e81819054906101000a90046bffffffffffffffffffffffff168092919061297390614964565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550508484828181106129b5576129b4614c96565b5b905060a0020160800160208101906129cd9190615343565b15612a2b57600b5f81819054906101000a90046bffffffffffffffffffffffff16809291906129fb90614964565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b80806001019150506128c0565b50612a41612ed5565b50505050565b612a4f613882565b60095f6001600a600e9054906101000a90046bffffffffffffffffffffffff16612a799190614925565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b6060612b43600a5f9054906101000a900461ffff166123926135b7565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b7381613670565b612b7b612e4e565b5f60075f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206004015f6101000a81548160ff021916908315150217905550505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612c256133ac565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c95575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612c8c919061409b565b60405180910390fd5b612c9e81613433565b50565b612cac8383836136d8565b505050565b5f4290506040518060a00160405280836bffffffffffffffffffffffff16815260200182815260200162093a8083612ce99190614d20565b81526020015f81526020015f151581525060095f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a600e81819054906101000a90046bffffffffffffffffffffffff1680929190612dc590614964565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbbc94c2557f1a2c3d21f45c50ef2d72721a9a84973f1d9d529f8edbc0cfdea838262093a8084612e349190614d20565b604051612e4292919061507a565b60405180910390a25050565b612e56611269565b15612e8d576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260105403612ecb576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601081905550565b6001601081905550565b612ee761371e565b565b612ef16137b6565b5f600f60146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f346137f6565b604051612f41919061409b565b60405180910390a1565b5f805f60065f8961ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff168152602001600182018054612fa090614a03565b80601f0160208091040260200160405190810160405280929190818152602001828054612fcc90614a03565b80156130175780601f10612fee57610100808354040283529160200191613017565b820191905f5260205f20905b815481529060010190602001808311612ffa57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff16151515158152505090505f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f8561309457600a60029054906101000a90046bffffffffffffffffffffffff16613096565b865b9050604051806101200160405280826bffffffffffffffffffffffff168152602001845f015161ffff168152602001836bffffffffffffffffffffffff168152602001846040015181526020015f81526020018a81526020016001151581526020018981526020015f81525060075f8d6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151815f01600c6101000a81548161ffff021916908361ffff1602179055506040820151815f01600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a0820151816003015560c0820151816004015f6101000a81548160ff02191690831515021790555060e0820151816005015561010082015181600601559050508561326c576001600a60029054906101000a90046bffffffffffffffffffffffff166132679190614997565b61327a565b6001876132799190614997565b5b600a60026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060085f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080836040015194509450505050965096945050505050565b613351612e4e565b6001600f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586133956137f6565b6040516133a2919061409b565b60405180910390a1565b6133b46137f6565b73ffffffffffffffffffffffffffffffffffffffff166133d26116cb565b73ffffffffffffffffffffffffffffffffffffffff1614613431576133f56137f6565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613428919061409b565b60405180910390fd5b565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f828286866040518363ffffffff1660e01b8152600401613518929190615053565b61012060405180830381865afa158015613534573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135589190615463565b90508060c00151158061356e57505f8160a00151145b156135b057836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016135a79190613b31565b60405180910390fd5b5050505050565b60605f8361ffff1667ffffffffffffffff8111156135d8576135d7613bee565b5b60405190808252806020026020018201604052801561361157816020015b6135fe613921565b8152602001906001900390816135f65790505b5090505f5b81518161ffff16101561366557613630818563ffffffff16565b828261ffff168151811061364757613646614c96565b5b6020026020010181905250808061365d90614fa6565b915050613616565b508091505092915050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136d5576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6136e38383836137fd565b613719576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f80339050803b91505f821115613761576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11156137b2576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6137be611269565b6137f4576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b815260040161383992919061548f565b6020604051808303815f875af1158015613855573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061387991906150b5565b90509392505050565b6040518060a001604052805f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581525090565b6040518061012001604052805f6bffffffffffffffffffffffff1681526020015f61ffff1681526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81525090565b6040518060a001604052805f61ffff168152602001606081526020015f81526020015f81526020015f151581525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61397581613963565b811461397f575f80fd5b50565b5f813590506139908161396c565b92915050565b5f602082840312156139ab576139aa61395b565b5b5f6139b884828501613982565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b6139e1816139c1565b82525050565b6139f081613963565b82525050565b5f8115159050919050565b613a0a816139f6565b82525050565b60a082015f820151613a245f8501826139d8565b506020820151613a3760208501826139e7565b506040820151613a4a60408501826139e7565b506060820151613a5d60608501826139e7565b506080820151613a706080850182613a01565b50505050565b5f60a082019050613a895f830184613a10565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613ad1613acc613ac784613a8f565b613aae565b613a8f565b9050919050565b5f613ae282613ab7565b9050919050565b5f613af382613ad8565b9050919050565b613b0381613ae9565b82525050565b5f602082019050613b1c5f830184613afa565b92915050565b613b2b816139c1565b82525050565b5f602082019050613b445f830184613b22565b92915050565b613b53816139c1565b8114613b5d575f80fd5b50565b5f81359050613b6e81613b4a565b92915050565b5f60208284031215613b8957613b8861395b565b5b5f613b9684828501613b60565b91505092915050565b5f61ffff82169050919050565b613bb581613b9f565b8114613bbf575f80fd5b50565b5f81359050613bd081613bac565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c2482613bde565b810181811067ffffffffffffffff82111715613c4357613c42613bee565b5b80604052505050565b5f613c55613952565b9050613c618282613c1b565b919050565b5f67ffffffffffffffff821115613c8057613c7f613bee565b5b613c8982613bde565b9050602081019050919050565b828183375f83830152505050565b5f613cb6613cb184613c66565b613c4c565b905082815260208101848484011115613cd257613cd1613bda565b5b613cdd848285613c96565b509392505050565b5f82601f830112613cf957613cf8613bd6565b5b8135613d09848260208601613ca4565b91505092915050565b613d1b816139f6565b8114613d25575f80fd5b50565b5f81359050613d3681613d12565b92915050565b5f805f805f60a08688031215613d5557613d5461395b565b5b5f613d6288828901613bc2565b955050602086013567ffffffffffffffff811115613d8357613d8261395f565b5b613d8f88828901613ce5565b9450506040613da088828901613982565b9350506060613db188828901613982565b9250506080613dc288828901613d28565b9150509295509295909350565b5f80fd5b5f80fd5b5f8083601f840112613dec57613deb613bd6565b5b8235905067ffffffffffffffff811115613e0957613e08613dcf565b5b602083019150836020820283011115613e2557613e24613dd3565b5b9250929050565b5f8083601f840112613e4157613e40613bd6565b5b8235905067ffffffffffffffff811115613e5e57613e5d613dcf565b5b602083019150836020820283011115613e7a57613e79613dd3565b5b9250929050565b5f8083601f840112613e9657613e95613bd6565b5b8235905067ffffffffffffffff811115613eb357613eb2613dcf565b5b602083019150836020820283011115613ecf57613ece613dd3565b5b9250929050565b5f805f805f805f805f8060a08b8d031215613ef457613ef361395b565b5b5f8b013567ffffffffffffffff811115613f1157613f1061395f565b5b613f1d8d828e01613dd7565b9a509a505060208b013567ffffffffffffffff811115613f4057613f3f61395f565b5b613f4c8d828e01613e2c565b985098505060408b013567ffffffffffffffff811115613f6f57613f6e61395f565b5b613f7b8d828e01613dd7565b965096505060608b013567ffffffffffffffff811115613f9e57613f9d61395f565b5b613faa8d828e01613e81565b945094505060808b013567ffffffffffffffff811115613fcd57613fcc61395f565b5b613fd98d828e01613e81565b92509250509295989b9194979a5092959850565b613ff6816139f6565b82525050565b5f60208201905061400f5f830184613fed565b92915050565b5f806040838503121561402b5761402a61395b565b5b5f61403885828601613b60565b925050602061404985828601613b60565b9150509250929050565b61405c81613b9f565b82525050565b5f6020820190506140755f830184614053565b92915050565b5f61408582613a8f565b9050919050565b6140958161407b565b82525050565b5f6020820190506140ae5f83018461408c565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140e681613b9f565b82525050565b61012082015f8201516141015f8501826139d8565b50602082015161411460208501826140dd565b50604082015161412760408501826139d8565b50606082015161413a60608501826139e7565b50608082015161414d60808501826139e7565b5060a082015161416060a08501826139e7565b5060c082015161417360c0850182613a01565b5060e082015161418660e08501826139e7565b5061010082015161419b6101008501826139e7565b50505050565b5f6141ac83836140ec565b6101208301905092915050565b5f602082019050919050565b5f6141cf826140b4565b6141d981856140be565b93506141e4836140ce565b805f5b838110156142145781516141fb88826141a1565b9750614206836141b9565b9250506001810190506141e7565b5085935050505092915050565b5f6020820190508181035f83015261423981846141c5565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f61427583836139d8565b60208301905092915050565b5f602082019050919050565b5f61429782614241565b6142a1818561424b565b93506142ac8361425b565b805f5b838110156142dc5781516142c3888261426a565b97506142ce83614281565b9250506001810190506142af565b5085935050505092915050565b5f6020820190508181035f830152614301818461428d565b905092915050565b5f806040838503121561431f5761431e61395b565b5b5f61432c85828601613b60565b925050602061433d85828601613bc2565b9150509250929050565b5f805f6060848603121561435e5761435d61395b565b5b5f84013567ffffffffffffffff81111561437b5761437a61395f565b5b61438786828701613ce5565b935050602061439886828701613982565b92505060406143a986828701613982565b9150509250925092565b5f6143bd82613ad8565b9050919050565b6143cd816143b3565b82525050565b5f6020820190506143e65f8301846143c4565b92915050565b61012082015f8201516144015f8501826139d8565b50602082015161441460208501826140dd565b50604082015161442760408501826139d8565b50606082015161443a60608501826139e7565b50608082015161444d60808501826139e7565b5060a082015161446060a08501826139e7565b5060c082015161447360c0850182613a01565b5060e082015161448660e08501826139e7565b5061010082015161449b6101008501826139e7565b50505050565b5f610120820190506144b55f8301846143ec565b92915050565b6144c481613963565b82525050565b5f6020820190506144dd5f8301846144bb565b92915050565b5f602082840312156144f8576144f761395b565b5b5f61450584828501613bc2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561454557808201518184015260208101905061452a565b5f8484015250505050565b5f61455a8261450e565b6145648185614518565b9350614574818560208601614528565b61457d81613bde565b840191505092915050565b5f60a083015f83015161459d5f8601826140dd565b50602083015184820360208601526145b58282614550565b91505060408301516145ca60408601826139e7565b5060608301516145dd60608601826139e7565b5060808301516145f06080860182613a01565b508091505092915050565b5f6020820190508181035f8301526146138184614588565b905092915050565b6146248161407b565b811461462e575f80fd5b50565b5f8135905061463f8161461b565b92915050565b60068110614651575f80fd5b50565b5f8135905061466281614645565b92915050565b5f806040838503121561467e5761467d61395b565b5b5f61468b85828601614631565b925050602061469c85828601614654565b9150509250929050565b5f8083601f8401126146bb576146ba613bd6565b5b8235905067ffffffffffffffff8111156146d8576146d7613dcf565b5b6020830191508360a08202830111156146f4576146f3613dd3565b5b9250929050565b5f80602083850312156147115761471061395b565b5b5f83013567ffffffffffffffff81111561472e5761472d61395f565b5b61473a858286016146a6565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f60a083015f8301516147845f8601826140dd565b506020830151848203602086015261479c8282614550565b91505060408301516147b160408601826139e7565b5060608301516147c460608601826139e7565b5060808301516147d76080860182613a01565b508091505092915050565b5f6147ed838361476f565b905092915050565b5f602082019050919050565b5f61480b82614746565b6148158185614750565b93508360208202850161482785614760565b805f5b85811015614862578484038952815161484385826147e2565b945061484e836147f5565b925060208a0199505060018101905061482a565b50829750879550505050505092915050565b5f6020820190508181035f83015261488c8184614801565b905092915050565b5f61489e82613ad8565b9050919050565b6148ae81614894565b82525050565b5f6020820190506148c75f8301846148a5565b92915050565b5f602082840312156148e2576148e161395b565b5b5f6148ef84828501614631565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61492f826139c1565b915061493a836139c1565b925082820390506bffffffffffffffffffffffff81111561495e5761495d6148f8565b5b92915050565b5f61496e826139c1565b91506bffffffffffffffffffffffff820361498c5761498b6148f8565b5b600182019050919050565b5f6149a1826139c1565b91506149ac836139c1565b925082820190506bffffffffffffffffffffffff8111156149d0576149cf6148f8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a1a57607f821691505b602082108103614a2d57614a2c6149d6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614a8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a54565b614a998683614a54565b95508019841693508086168417925050509392505050565b5f614acb614ac6614ac184613963565b613aae565b613963565b9050919050565b5f819050919050565b614ae483614ab1565b614af8614af082614ad2565b848454614a60565b825550505050565b5f90565b614b0c614b00565b614b17818484614adb565b505050565b5b81811015614b3a57614b2f5f82614b04565b600181019050614b1d565b5050565b601f821115614b7f57614b5081614a33565b614b5984614a45565b81016020851015614b68578190505b614b7c614b7485614a45565b830182614b1c565b50505b505050565b5f82821c905092915050565b5f614b9f5f1984600802614b84565b1980831691505092915050565b5f614bb78383614b90565b9150826002028217905092915050565b614bd08261450e565b67ffffffffffffffff811115614be957614be8613bee565b5b614bf38254614a03565b614bfe828285614b3e565b5f60209050601f831160018114614c2f575f8415614c1d578287015190505b614c278582614bac565b865550614c8e565b601f198416614c3d86614a33565b5f5b82811015614c6457848901518255600182019150602085019450602081019050614c3f565b86831015614c815784890151614c7d601f891682614b90565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614cfa82613963565b9150614d0583613963565b925082614d1557614d14614cc3565b5b828204905092915050565b5f614d2a82613963565b9150614d3583613963565b9250828201905080821115614d4d57614d4c6148f8565b5b92915050565b5f614d6d614d68614d63846139c1565b613aae565b613963565b9050919050565b614d7d81614d53565b82525050565b5f602082019050614d965f830184614d74565b92915050565b5f81519050614daa8161461b565b92915050565b5f60208284031215614dc557614dc461395b565b5b5f614dd284828501614d9c565b91505092915050565b5f81519050614de981613b4a565b92915050565b5f60208284031215614e0457614e0361395b565b5b5f614e1184828501614ddb565b91505092915050565b5f81519050614e288161396c565b92915050565b5f60208284031215614e4357614e4261395b565b5b5f614e5084828501614e1a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110614e9757614e96614e59565b5b50565b5f819050614ea782614e86565b919050565b5f614eb682614e9a565b9050919050565b614ec681614eac565b82525050565b60038110614edd57614edc614e59565b5b50565b5f819050614eed82614ecc565b919050565b5f614efc82614ee0565b9050919050565b614f0c81614ef2565b82525050565b5f60e082019050614f255f83018a61408c565b614f32602083018961408c565b614f3f6040830188613b22565b614f4c60608301876144bb565b614f596080830186614ebd565b614f6660a0830185614f03565b614f7360c0830184613fed565b98975050505050505050565b5f604082019050614f925f830185613b22565b614f9f6020830184614053565b9392505050565b5f614fb082613b9f565b915061ffff8203614fc457614fc36148f8565b5b600182019050919050565b5f82825260208201905092915050565b5f614fe98261450e565b614ff38185614fcf565b9350615003818560208601614528565b61500c81613bde565b840191505092915050565b5f6060820190508181035f83015261502f8186614fdf565b905061503e60208301856144bb565b61504b60408301846144bb565b949350505050565b5f6040820190506150665f830185613b22565b6150736020830184613b22565b9392505050565b5f60408201905061508d5f8301856144bb565b61509a60208301846144bb565b9392505050565b5f815190506150af81613d12565b92915050565b5f602082840312156150ca576150c961395b565b5b5f6150d7848285016150a1565b91505092915050565b5f6040820190506150f35f830185613fed565b61510060208301846144bb565b9392505050565b5f813561511381613b4a565b80915050919050565b5f815f1b9050919050565b5f6bffffffffffffffffffffffff61513e8461511c565b9350801983169250808416831791505092915050565b5f61516e615169615164846139c1565b613aae565b6139c1565b9050919050565b5f819050919050565b61518782615154565b61519a61519382615175565b8354615127565b8255505050565b5f81356151ad8161396c565b80915050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6151e18461511c565b9350801983169250808416831791505092915050565b61520082614ab1565b61521361520c82614ad2565b83546151b6565b8255505050565b5f813561522681613d12565b80915050919050565b5f60ff61523b8461511c565b9350801983169250808416831791505092915050565b5f61525b826139f6565b9050919050565b5f819050919050565b61527482615251565b61528761528082615262565b835461522f565b8255505050565b5f81015f83018061529e81615107565b90506152aa818461517e565b5050506001810160208301806152bf816151a1565b90506152cb81846151f7565b5050506002810160408301806152e0816151a1565b90506152ec81846151f7565b505050600381016060830180615301816151a1565b905061530d81846151f7565b5050506004810160808301806153228161521a565b905061532e818461526b565b5050505050565b61533f828261528e565b5050565b5f602082840312156153585761535761395b565b5b5f61536584828501613d28565b91505092915050565b5f80fd5b5f8151905061538081613bac565b92915050565b5f610120828403121561539c5761539b61536e565b5b6153a7610120613c4c565b90505f6153b684828501614ddb565b5f8301525060206153c984828501615372565b60208301525060406153dd84828501614ddb565b60408301525060606153f184828501614e1a565b606083015250608061540584828501614e1a565b60808301525060a061541984828501614e1a565b60a08301525060c061542d848285016150a1565b60c08301525060e061544184828501614e1a565b60e08301525061010061545684828501614e1a565b6101008301525092915050565b5f61012082840312156154795761547861395b565b5b5f61548684828501615386565b91505092915050565b5f6040820190506154a25f83018561408c565b81810360208301526154b48184614fdf565b9050939250505056fea26469706673582212201a234a544766ac532748486947159535c4fdb2a323f3ceaaaf659c32edfb530364736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb25394909000000000000000000000000a784aa9d9ca760a1d7973c3ad902c1d0052581dd0000000000000000000000000ac38e7334b0f14053963f4ebe2db463351c96ad000000000000000000000000eeef0f55712c709cbaf17f98df88aeba7a3c298c000000000000000000000000487fb2dae4dd19f4cb34db11d9ab56974551249e0000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99