33 txs
1.6k 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
0x608060405234801561000f575f5ffd5b5060405161582d38038061582d8339818101604052810190610031919061023f565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009991906102ff565b60405180910390fd5b6100b18161011e60201b60201c565b506001601081905550875f55866001558560025584600355836004558260055580600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050610318565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61020e826101e5565b9050919050565b61021e81610204565b8114610228575f5ffd5b50565b5f8151905061023981610215565b92915050565b5f5f5f5f5f5f5f5f610100898b03121561025c5761025b6101e1565b5b5f6102698b828c0161022b565b985050602061027a8b828c0161022b565b975050604061028b8b828c0161022b565b965050606061029c8b828c0161022b565b95505060806102ad8b828c0161022b565b94505060a06102be8b828c0161022b565b93505060c06102cf8b828c0161022b565b92505060e06102e08b828c0161022b565b9150509295985092959890939650565b6102f981610204565b82525050565b5f6020820190506103125f8301846102f0565b92915050565b615508806103255f395ff3fe608060405234801561000f575f5ffd5b5060043610610251575f3560e01c806389a3027111610144578063b187bd26116100c1578063d3b30b7511610085578063d3b30b7514610661578063d88ff1f41461067f578063dbf80a031461069d578063df7049e6146106b9578063f1ad7055146106d7578063f2fde38b146106f557610251565b8063b187bd26146105bd578063b29a1575146105db578063c34a2987146105f9578063cc8dfc7914610629578063cf7e80371461064557610251565b80639e1f22e1116101085780639e1f22e11461051b578063a5f0292b14610537578063a99fc55914610555578063afcdcdb614610571578063b14feb621461058d57610251565b806389a30271146104775780638afbe183146104955780638da5cb5b146104c5578063969a56a0146104e35780639b6c5283146104ff57610251565b80634f60e6c1116101d2578063715018a611610196578063715018a6146103e35780637c0b8de2146103ed578063821ba66d1461040b5780638690e43b1461043b5780638999dd6a1461045957610251565b80634f60e6c11461036557806351858e27146103815780635c975abb1461038b5780635d0aeec1146103a95780635d0eb31a146103c557610251565b80631f9b054d116102195780631f9b054d146102d357806344443064146102f157806345cd36f9146103215780634a4e3bd51461033f5780634df931fb1461034957610251565b8063018950261461025557806301afd56e14610271578063074383a71461027b5780630a2dd68d1461029957806319d3da97146102b7575b5f5ffd5b61026f600480360381019061026a91906139d0565b610711565b005b6102796107ba565b005b61028361088b565b6040516102909190613ab0565b60405180910390f35b6102a16109c9565b6040516102ae9190613b43565b60405180910390f35b6102d160048036038101906102cc91906139d0565b6109ee565b005b6102db610c35565b6040516102e89190613b6b565b60405180910390f35b61030b60048036038101906103069190613bae565b610c52565b6040516103189190613ab0565b60405180910390f35b610329610d0d565b6040516103369190613b6b565b60405180910390f35b610347610d2b565b005b610363600480360381019061035e9190613d76565b610dd3565b005b61037f600480360381019061037a9190613f10565b610f9b565b005b6103896111ed565b005b610393611295565b6040516103a09190614036565b60405180910390f35b6103c360048036038101906103be919061404f565b6112ab565b005b6103cd61140c565b6040516103da919061409c565b60405180910390f35b6103eb61141f565b005b6103f5611432565b60405161040291906140d5565b60405180910390f35b61042560048036038101906104209190613bae565b611457565b604051610432919061425b565b60405180910390f35b6104436115d7565b60405161045091906140d5565b60405180910390f35b6104616115fb565b60405161046e9190613b6b565b60405180910390f35b61047f611619565b60405161048c91906140d5565b60405180910390f35b6104af60048036038101906104aa9190613bae565b61163e565b6040516104bc9190614323565b60405180910390f35b6104cd6116fc565b6040516104da91906140d5565b60405180910390f35b6104fd60048036038101906104f89190614343565b611724565b005b61051960048036038101906105149190614381565b611adb565b005b6105356004803603810190610530919061404f565b611ce0565b005b61053f611d0a565b60405161054c919061440d565b60405180910390f35b61056f600480360381019061056a919061404f565b611d2f565b005b61058b6004803603810190610586919061404f565b611fd4565b005b6105a760048036038101906105a2919061404f565b61226e565b6040516105b491906144db565b60405180910390f35b6105c56123c6565b6040516105d29190614036565b60405180910390f35b6105e36123d4565b6040516105f09190614504565b60405180910390f35b610613600480360381019061060e919061451d565b6123da565b604051610620919061461b565b60405180910390f35b610643600480360381019061063e9190614688565b6124e9565b005b61065f600480360381019061065a919061471b565b61285a565b005b610669612a94565b6040516106769190613ab0565b60405180910390f35b610687612b73565b6040516106949190614894565b60405180910390f35b6106b760048036038101906106b2919061404f565b612b95565b005b6106c1612c3f565b6040516106ce91906148d4565b60405180910390f35b6106df612c64565b6040516106ec9190614504565b60405180910390f35b61070f600480360381019061070a91906148ed565b612c6a565b005b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506107735f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b60648311156107ae576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600d81905550505050565b336040518060400160405280600681526020017f53595354454d000000000000000000000000000000000000000000000000000081525061081c5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b5f600a600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16111561087e576040517f3a347c7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108875f612cfe565b5050565b6108936138bc565b5f600b5f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036108f3576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095f6001600b5f9054906101000a90046bffffffffffffffffffffffff1661091c9190614945565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610a505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b610a58612e9b565b610a60612edc565b5f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f816bffffffffffffffffffffffff1603610ac5576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182610ad39190614945565b90505f60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615610b4d576040517f6558179300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8581600301819055506001816004015f6101000a81548160ff021916908315150217905550600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190610b9b90614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbd4185a09dd89c1703a5e891dcf85f1e0b7b0c1f32fad28b60570c0bb8d5948587604051610c089190614504565b60405180910390a2610c25600183610c2091906149b7565b612cfe565b505050610c30612f22565b505050565b600b5f9054906101000a90046bffffffffffffffffffffffff1681565b610c5a6138bc565b60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b600a60029054906101000a90046bffffffffffffffffffffffff1681565b610d33612f2c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dc1612edc565b610dc9612f36565b610dd1612f22565b565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250610e355f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b610e3d612edc565b610e45612e9b565b610e4d612f2c565b600a5f9054906101000a900461ffff1661ffff168761ffff1610610e9d576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064841115610ed8576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a001604052808861ffff16815260200187815260200186815260200185815260200184151581525060065f8961ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081610f539190614bea565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050610f92612f22565b50505050505050565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610ffd5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b611005612e9b565b61100d612f2c565b5f8c8c905090505f8114806110225750603281115b15611059576040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f90505b8e8e9050816bffffffffffffffffffffffff1610156111c4575f8f8f836bffffffffffffffffffffffff1681811061109a57611099614cb9565b5b90506020020160208101906110af9190613bae565b90505f8e8e846bffffffffffffffffffffffff168181106110d3576110d2614cb9565b5b90506020020160208101906110e8919061451d565b90505f8b8b856bffffffffffffffffffffffff1681811061110c5761110b614cb9565b5b9050602002013590505f8a8a866bffffffffffffffffffffffff1681811061113757611136614cb9565b5b9050602002013590505f8f8f876bffffffffffffffffffffffff1681811061116257611161614cb9565b5b90506020020160208101906111779190613bae565b90505f61118986868686866001612f98565b9150505f60028261119a9190614d13565b905080896111a89190614d43565b98505050505050505080806111bc90614984565b91505061105f565b5080600c5f8282546111d69190614d43565b925050819055505050505050505050505050505050565b6111f5612f2c565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611283612edc565b61128b613380565b611293612f22565b565b5f600f60149054906101000a900460ff16905090565b336040518060400160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525061130d5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b611315612e9b565b61131d612edc565b611325612f2c565b5f60075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615806113a057505f8160030154145b156113e257836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016113d99190613b6b565b60405180910390fd5b5f816004015f6101000a81548160ff02191690831515021790555050611406612f22565b50505050565b600a5f9054906101000a900461ffff1681565b6114276133e3565b6114305f61346a565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f818054905090505f81036114f5575f67ffffffffffffffff8111156114b2576114b1613c28565b5b6040519080825280602002602001820160405280156114eb57816020015b6114d86138f6565b8152602001906001900390816114d05790505b50925050506115d2565b5f8167ffffffffffffffff8111156115105761150f613c28565b5b60405190808252806020026020018201604052801561154957816020015b6115366138f6565b81526020019060019003908161152e5790505b5090505f5f90505b828110156115ca576115a1868583815481106115705761156f614cb9565b5b905f5260205f209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff1661226e565b8282815181106115b4576115b3614cb9565b5b6020026020010181905250806001019050611551565b508093505050505b919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a600e9054906101000a90046bffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060085f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156116f057602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116116a35790505b50505050509050919050565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117969190614da6565b602060405180830381865afa1580156117b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d59190614dd3565b73ffffffffffffffffffffffffffffffffffffffff1614611822576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61182a612edc565b611832612e9b565b61183a612f2c565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188856040518263ffffffff1660e01b81526004016118959190613b6b565b602060405180830381865afa1580156118b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d49190614e12565b90505f5f6118e68686425f5f5f612f98565b915091508060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161194591906140d5565b602060405180830381865afa158015611960573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119849190614e51565b10156119bc576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356476851335f868560015f6040518763ffffffff1660e01b8152600401611a2196959493929190614f35565b5f604051808303815f87803b158015611a38575f5ffd5b505af1158015611a4a573d5f5f3e3d5ffd5b5050505080600c5f8282540192505081905550816bffffffffffffffffffffffff16866bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27309e519004512d0fb9fbcdc060e3690e558c9bd68e064df57f1bfcee44f8ed8689604051611ac3929190614f94565b60405180910390a4505050611ad6612f22565b505050565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611b3d5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b611b45612edc565b611b4d612e9b565b611b55612f2c565b6064831115611b90576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f9054906101000a900461ffff1690506040518060a001604052808261ffff1681526020018781526020018681526020018581526020016001151581525060065f8361ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081611c1f9190614bea565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a5f81819054906101000a900461ffff1680929190611c7590614fbb565b91906101000a81548161ffff021916908361ffff160217905550508061ffff167f202127a3b621c057f83d5f6394c98a33490b6d93f38e17d6ef33cabe43d3d218878787604051611cc89392919061502c565b60405180910390a250611cd9612f22565b5050505050565b611d0682823073ffffffffffffffffffffffffffffffffffffffff1663b14feb6261352d565b5050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611da19190614da6565b602060405180830381865afa158015611dbc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de09190614dd3565b73ffffffffffffffffffffffffffffffffffffffff1614611e2d576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e35612e9b565b611e3d612edc565b611e478383611ce0565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a99fc55985856040518363ffffffff1660e01b8152600401611ea4929190615068565b6020604051808303815f875af1158015611ec0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee49190614e51565b90508060075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206005015f828254611f509190614d43565b9250508190555080600c5f828254611f689190614d43565b92505081905550826bffffffffffffffffffffffff16846bffffffffffffffffffffffff167fee345a8d877e3f266620b91711eaa4125404bcf2a352ca8369c0e4abc5be8f858342604051611fbe92919061508f565b60405180910390a350611fcf612f22565b505050565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016120469190614da6565b602060405180830381865afa158015612061573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120859190614dd3565b73ffffffffffffffffffffffffffffffffffffffff16146120d2576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120da612e9b565b6120e2612edc565b6120ec8383611ce0565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163af7aa846040518263ffffffff1660e01b81526004016121479190613b6b565b6020604051808303815f875af1158015612163573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061218791906150ca565b9050806122185760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663438e0ce185856040518363ffffffff1660e01b81526004016121ea929190615068565b5f604051808303815f87803b158015612201575f5ffd5b505af1158015612213573d5f5f3e3d5ffd5b505050505b826bffffffffffffffffffffffff167f2b11a5aeebe95d970d0d3a523b0f4d6bf3ae63cff2226c9aa50dc5229207017682426040516122589291906150f5565b60405180910390a250612269612f22565b505050565b6122766138f6565b60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815260200160058201548152602001600682015481525050905092915050565b5f6123cf611295565b905090565b600c5481565b6123e261395b565b60065f8361ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff16815260200160018201805461243490614a23565b80601f016020809104026020016040519081016040528092919081815260200182805461246090614a23565b80156124ab5780601f10612482576101008083540402835291602001916124ab565b820191905f5260205f20905b81548152906001019060200180831161248e57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b336040518060400160405280600a81526020017f535550455241444d494e0000000000000000000000000000000000000000000081525061254b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036125b0576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60058111156125c3576125c2614e7c565b5b8360058111156125d6576125d5614e7c565b5b0361261f57835f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612854565b6001600581111561263357612632614e7c565b5b83600581111561264657612645614e7c565b5b03612690578360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612853565b600260058111156126a4576126a3614e7c565b5b8360058111156126b7576126b6614e7c565b5b03612701578360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612852565b6003600581111561271557612714614e7c565b5b83600581111561272857612727614e7c565b5b03612772578360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612851565b6004600581111561278657612785614e7c565b5b83600581111561279957612798614e7c565b5b036127e3578360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612850565b6005808111156127f6576127f5614e7c565b5b83600581111561280957612808614e7c565b5b0361284f578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b50505050565b336040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152506128bc5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cee565b6128c4612e9b565b6128cc612edc565b5f8484905003612908576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b84849050811015612a855784848281811061292b5761292a614cb9565b5b905060a0020160095f87878581811061294757612946614cb9565b5b905060a002015f01602081019061295e9190613bae565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208181612993919061534a565b905050600a600e81819054906101000a90046bffffffffffffffffffffffff16809291906129c090614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050848482818110612a0257612a01614cb9565b5b905060a002016080016020810190612a1a9190615358565b15612a7857600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190612a4890614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b808060010191505061290d565b50612a8e612f22565b50505050565b612a9c6138bc565b60095f6001600a600e9054906101000a90046bffffffffffffffffffffffff16612ac69190614945565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b6060612b90600a5f9054906101000a900461ffff166123da6135ee565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612bc0816136aa565b612bc8612e9b565b5f60075f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206004015f6101000a81548160ff021916908315150217905550505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612c726133e3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ce2575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612cd991906140d5565b60405180910390fd5b612ceb8161346a565b50565b612cf9838383613712565b505050565b5f4290506040518060a00160405280836bffffffffffffffffffffffff16815260200182815260200162093a8083612d369190614d43565b81526020015f81526020015f151581525060095f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a600e81819054906101000a90046bffffffffffffffffffffffff1680929190612e1290614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbbc94c2557f1a2c3d21f45c50ef2d72721a9a84973f1d9d529f8edbc0cfdea838262093a8084612e819190614d43565b604051612e8f92919061508f565b60405180910390a25050565b612ea3611295565b15612eda576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260105403612f18576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601081905550565b6001601081905550565b612f34613758565b565b612f3e6137f0565b5f600f60146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f81613830565b604051612f8e91906140d5565b60405180910390a1565b5f5f5f60065f8961ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff168152602001600182018054612fed90614a23565b80601f016020809104026020016040519081016040528092919081815260200182805461301990614a23565b80156130645780601f1061303b57610100808354040283529160200191613064565b820191905f5260205f20905b81548152906001019060200180831161304757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff16151515158152505090505f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f856130e157600a60029054906101000a90046bffffffffffffffffffffffff166130e3565b865b9050604051806101200160405280826bffffffffffffffffffffffff168152602001845f015161ffff168152602001836bffffffffffffffffffffffff168152602001846040015181526020015f81526020018a81526020016001151581526020018981526020015f81525060075f8d6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151815f01600c6101000a81548161ffff021916908361ffff1602179055506040820151815f01600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a0820151816003015560c0820151816004015f6101000a81548160ff02191690831515021790555060e082015181600501556101008201518160060155905050600a600281819054906101000a90046bffffffffffffffffffffffff16809291906132b290614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505060085f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080836040015194509450505050965096945050505050565b613388612e9b565b6001600f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586133cc613830565b6040516133d991906140d5565b60405180910390a1565b6133eb613830565b73ffffffffffffffffffffffffffffffffffffffff166134096116fc565b73ffffffffffffffffffffffffffffffffffffffff16146134685761342c613830565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161345f91906140d5565b60405180910390fd5b565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f828286866040518363ffffffff1660e01b815260040161354f929190615068565b61012060405180830381865afa15801561356b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358f9190615478565b90508060c0015115806135a557505f8160a00151145b156135e757836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016135de9190613b6b565b60405180910390fd5b5050505050565b60605f8361ffff1667ffffffffffffffff81111561360f5761360e613c28565b5b60405190808252806020026020018201604052801561364857816020015b61363561395b565b81526020019060019003908161362d5790505b5090505f5f90505b81518161ffff16101561369f5761366a818563ffffffff16565b828261ffff168151811061368157613680614cb9565b5b6020026020010181905250808061369790614fbb565b915050613650565b508091505092915050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461370f576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b61371d838383613837565b613753576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f5f339050803b91505f82111561379b576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11156137ec576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6137f8611295565b61382e576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016138739291906154a4565b6020604051808303815f875af115801561388f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138b391906150ca565b90509392505050565b6040518060a001604052805f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581525090565b6040518061012001604052805f6bffffffffffffffffffffffff1681526020015f61ffff1681526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81525090565b6040518060a001604052805f61ffff168152602001606081526020015f81526020015f81526020015f151581525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6139af8161399d565b81146139b9575f5ffd5b50565b5f813590506139ca816139a6565b92915050565b5f602082840312156139e5576139e4613995565b5b5f6139f2848285016139bc565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b613a1b816139fb565b82525050565b613a2a8161399d565b82525050565b5f8115159050919050565b613a4481613a30565b82525050565b60a082015f820151613a5e5f850182613a12565b506020820151613a716020850182613a21565b506040820151613a846040850182613a21565b506060820151613a976060850182613a21565b506080820151613aaa6080850182613a3b565b50505050565b5f60a082019050613ac35f830184613a4a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613b0b613b06613b0184613ac9565b613ae8565b613ac9565b9050919050565b5f613b1c82613af1565b9050919050565b5f613b2d82613b12565b9050919050565b613b3d81613b23565b82525050565b5f602082019050613b565f830184613b34565b92915050565b613b65816139fb565b82525050565b5f602082019050613b7e5f830184613b5c565b92915050565b613b8d816139fb565b8114613b97575f5ffd5b50565b5f81359050613ba881613b84565b92915050565b5f60208284031215613bc357613bc2613995565b5b5f613bd084828501613b9a565b91505092915050565b5f61ffff82169050919050565b613bef81613bd9565b8114613bf9575f5ffd5b50565b5f81359050613c0a81613be6565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c5e82613c18565b810181811067ffffffffffffffff82111715613c7d57613c7c613c28565b5b80604052505050565b5f613c8f61398c565b9050613c9b8282613c55565b919050565b5f67ffffffffffffffff821115613cba57613cb9613c28565b5b613cc382613c18565b9050602081019050919050565b828183375f83830152505050565b5f613cf0613ceb84613ca0565b613c86565b905082815260208101848484011115613d0c57613d0b613c14565b5b613d17848285613cd0565b509392505050565b5f82601f830112613d3357613d32613c10565b5b8135613d43848260208601613cde565b91505092915050565b613d5581613a30565b8114613d5f575f5ffd5b50565b5f81359050613d7081613d4c565b92915050565b5f5f5f5f5f60a08688031215613d8f57613d8e613995565b5b5f613d9c88828901613bfc565b955050602086013567ffffffffffffffff811115613dbd57613dbc613999565b5b613dc988828901613d1f565b9450506040613dda888289016139bc565b9350506060613deb888289016139bc565b9250506080613dfc88828901613d62565b9150509295509295909350565b5f5ffd5b5f5ffd5b5f5f83601f840112613e2657613e25613c10565b5b8235905067ffffffffffffffff811115613e4357613e42613e09565b5b602083019150836020820283011115613e5f57613e5e613e0d565b5b9250929050565b5f5f83601f840112613e7b57613e7a613c10565b5b8235905067ffffffffffffffff811115613e9857613e97613e09565b5b602083019150836020820283011115613eb457613eb3613e0d565b5b9250929050565b5f5f83601f840112613ed057613ecf613c10565b5b8235905067ffffffffffffffff811115613eed57613eec613e09565b5b602083019150836020820283011115613f0957613f08613e0d565b5b9250929050565b5f5f5f5f5f5f5f5f5f5f60a08b8d031215613f2e57613f2d613995565b5b5f8b013567ffffffffffffffff811115613f4b57613f4a613999565b5b613f578d828e01613e11565b9a509a505060208b013567ffffffffffffffff811115613f7a57613f79613999565b5b613f868d828e01613e66565b985098505060408b013567ffffffffffffffff811115613fa957613fa8613999565b5b613fb58d828e01613e11565b965096505060608b013567ffffffffffffffff811115613fd857613fd7613999565b5b613fe48d828e01613ebb565b945094505060808b013567ffffffffffffffff81111561400757614006613999565b5b6140138d828e01613ebb565b92509250509295989b9194979a5092959850565b61403081613a30565b82525050565b5f6020820190506140495f830184614027565b92915050565b5f5f6040838503121561406557614064613995565b5b5f61407285828601613b9a565b925050602061408385828601613b9a565b9150509250929050565b61409681613bd9565b82525050565b5f6020820190506140af5f83018461408d565b92915050565b5f6140bf82613ac9565b9050919050565b6140cf816140b5565b82525050565b5f6020820190506140e85f8301846140c6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61412081613bd9565b82525050565b61012082015f82015161413b5f850182613a12565b50602082015161414e6020850182614117565b5060408201516141616040850182613a12565b5060608201516141746060850182613a21565b5060808201516141876080850182613a21565b5060a082015161419a60a0850182613a21565b5060c08201516141ad60c0850182613a3b565b5060e08201516141c060e0850182613a21565b506101008201516141d5610100850182613a21565b50505050565b5f6141e68383614126565b6101208301905092915050565b5f602082019050919050565b5f614209826140ee565b61421381856140f8565b935061421e83614108565b805f5b8381101561424e57815161423588826141db565b9750614240836141f3565b925050600181019050614221565b5085935050505092915050565b5f6020820190508181035f83015261427381846141ff565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6142af8383613a12565b60208301905092915050565b5f602082019050919050565b5f6142d18261427b565b6142db8185614285565b93506142e683614295565b805f5b838110156143165781516142fd88826142a4565b9750614308836142bb565b9250506001810190506142e9565b5085935050505092915050565b5f6020820190508181035f83015261433b81846142c7565b905092915050565b5f5f6040838503121561435957614358613995565b5b5f61436685828601613b9a565b925050602061437785828601613bfc565b9150509250929050565b5f5f5f6060848603121561439857614397613995565b5b5f84013567ffffffffffffffff8111156143b5576143b4613999565b5b6143c186828701613d1f565b93505060206143d2868287016139bc565b92505060406143e3868287016139bc565b9150509250925092565b5f6143f782613b12565b9050919050565b614407816143ed565b82525050565b5f6020820190506144205f8301846143fe565b92915050565b61012082015f82015161443b5f850182613a12565b50602082015161444e6020850182614117565b5060408201516144616040850182613a12565b5060608201516144746060850182613a21565b5060808201516144876080850182613a21565b5060a082015161449a60a0850182613a21565b5060c08201516144ad60c0850182613a3b565b5060e08201516144c060e0850182613a21565b506101008201516144d5610100850182613a21565b50505050565b5f610120820190506144ef5f830184614426565b92915050565b6144fe8161399d565b82525050565b5f6020820190506145175f8301846144f5565b92915050565b5f6020828403121561453257614531613995565b5b5f61453f84828501613bfc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61457a82614548565b6145848185614552565b9350614594818560208601614562565b61459d81613c18565b840191505092915050565b5f60a083015f8301516145bd5f860182614117565b50602083015184820360208601526145d58282614570565b91505060408301516145ea6040860182613a21565b5060608301516145fd6060860182613a21565b5060808301516146106080860182613a3b565b508091505092915050565b5f6020820190508181035f83015261463381846145a8565b905092915050565b614644816140b5565b811461464e575f5ffd5b50565b5f8135905061465f8161463b565b92915050565b60068110614671575f5ffd5b50565b5f8135905061468281614665565b92915050565b5f5f6040838503121561469e5761469d613995565b5b5f6146ab85828601614651565b92505060206146bc85828601614674565b9150509250929050565b5f5f83601f8401126146db576146da613c10565b5b8235905067ffffffffffffffff8111156146f8576146f7613e09565b5b6020830191508360a082028301111561471457614713613e0d565b5b9250929050565b5f5f6020838503121561473157614730613995565b5b5f83013567ffffffffffffffff81111561474e5761474d613999565b5b61475a858286016146c6565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f60a083015f8301516147a45f860182614117565b50602083015184820360208601526147bc8282614570565b91505060408301516147d16040860182613a21565b5060608301516147e46060860182613a21565b5060808301516147f76080860182613a3b565b508091505092915050565b5f61480d838361478f565b905092915050565b5f602082019050919050565b5f61482b82614766565b6148358185614770565b93508360208202850161484785614780565b805f5b8581101561488257848403895281516148638582614802565b945061486e83614815565b925060208a0199505060018101905061484a565b50829750879550505050505092915050565b5f6020820190508181035f8301526148ac8184614821565b905092915050565b5f6148be82613b12565b9050919050565b6148ce816148b4565b82525050565b5f6020820190506148e75f8301846148c5565b92915050565b5f6020828403121561490257614901613995565b5b5f61490f84828501614651565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61494f826139fb565b915061495a836139fb565b925082820390506bffffffffffffffffffffffff81111561497e5761497d614918565b5b92915050565b5f61498e826139fb565b91506bffffffffffffffffffffffff82036149ac576149ab614918565b5b600182019050919050565b5f6149c1826139fb565b91506149cc836139fb565b925082820190506bffffffffffffffffffffffff8111156149f0576149ef614918565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a3a57607f821691505b602082108103614a4d57614a4c6149f6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614aaf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a74565b614ab98683614a74565b95508019841693508086168417925050509392505050565b5f614aeb614ae6614ae18461399d565b613ae8565b61399d565b9050919050565b5f819050919050565b614b0483614ad1565b614b18614b1082614af2565b848454614a80565b825550505050565b5f5f905090565b614b2f614b20565b614b3a818484614afb565b505050565b5b81811015614b5d57614b525f82614b27565b600181019050614b40565b5050565b601f821115614ba257614b7381614a53565b614b7c84614a65565b81016020851015614b8b578190505b614b9f614b9785614a65565b830182614b3f565b50505b505050565b5f82821c905092915050565b5f614bc25f1984600802614ba7565b1980831691505092915050565b5f614bda8383614bb3565b9150826002028217905092915050565b614bf382614548565b67ffffffffffffffff811115614c0c57614c0b613c28565b5b614c168254614a23565b614c21828285614b61565b5f60209050601f831160018114614c52575f8415614c40578287015190505b614c4a8582614bcf565b865550614cb1565b601f198416614c6086614a53565b5f5b82811015614c8757848901518255600182019150602085019450602081019050614c62565b86831015614ca45784890151614ca0601f891682614bb3565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d1d8261399d565b9150614d288361399d565b925082614d3857614d37614ce6565b5b828204905092915050565b5f614d4d8261399d565b9150614d588361399d565b9250828201905080821115614d7057614d6f614918565b5b92915050565b5f614d90614d8b614d86846139fb565b613ae8565b61399d565b9050919050565b614da081614d76565b82525050565b5f602082019050614db95f830184614d97565b92915050565b5f81519050614dcd8161463b565b92915050565b5f60208284031215614de857614de7613995565b5b5f614df584828501614dbf565b91505092915050565b5f81519050614e0c81613b84565b92915050565b5f60208284031215614e2757614e26613995565b5b5f614e3484828501614dfe565b91505092915050565b5f81519050614e4b816139a6565b92915050565b5f60208284031215614e6657614e65613995565b5b5f614e7384828501614e3d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110614eba57614eb9614e7c565b5b50565b5f819050614eca82614ea9565b919050565b5f614ed982614ebd565b9050919050565b614ee981614ecf565b82525050565b60038110614f0057614eff614e7c565b5b50565b5f819050614f1082614eef565b919050565b5f614f1f82614f03565b9050919050565b614f2f81614f15565b82525050565b5f60c082019050614f485f8301896140c6565b614f5560208301886140c6565b614f626040830187613b5c565b614f6f60608301866144f5565b614f7c6080830185614ee0565b614f8960a0830184614f26565b979650505050505050565b5f604082019050614fa75f830185613b5c565b614fb4602083018461408d565b9392505050565b5f614fc582613bd9565b915061ffff8203614fd957614fd8614918565b5b600182019050919050565b5f82825260208201905092915050565b5f614ffe82614548565b6150088185614fe4565b9350615018818560208601614562565b61502181613c18565b840191505092915050565b5f6060820190508181035f8301526150448186614ff4565b905061505360208301856144f5565b61506060408301846144f5565b949350505050565b5f60408201905061507b5f830185613b5c565b6150886020830184613b5c565b9392505050565b5f6040820190506150a25f8301856144f5565b6150af60208301846144f5565b9392505050565b5f815190506150c481613d4c565b92915050565b5f602082840312156150df576150de613995565b5b5f6150ec848285016150b6565b91505092915050565b5f6040820190506151085f830185614027565b61511560208301846144f5565b9392505050565b5f813561512881613b84565b80915050919050565b5f815f1b9050919050565b5f6bffffffffffffffffffffffff61515384615131565b9350801983169250808416831791505092915050565b5f61518361517e615179846139fb565b613ae8565b6139fb565b9050919050565b5f819050919050565b61519c82615169565b6151af6151a88261518a565b835461513c565b8255505050565b5f81356151c2816139a6565b80915050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6151f684615131565b9350801983169250808416831791505092915050565b61521582614ad1565b61522861522182614af2565b83546151cb565b8255505050565b5f813561523b81613d4c565b80915050919050565b5f60ff61525084615131565b9350801983169250808416831791505092915050565b5f61527082613a30565b9050919050565b5f819050919050565b61528982615266565b61529c61529582615277565b8354615244565b8255505050565b5f81015f8301806152b38161511c565b90506152bf8184615193565b5050506001810160208301806152d4816151b6565b90506152e0818461520c565b5050506002810160408301806152f5816151b6565b9050615301818461520c565b505050600381016060830180615316816151b6565b9050615322818461520c565b5050506004810160808301806153378161522f565b90506153438184615280565b5050505050565b61535482826152a3565b5050565b5f6020828403121561536d5761536c613995565b5b5f61537a84828501613d62565b91505092915050565b5f5ffd5b5f8151905061539581613be6565b92915050565b5f61012082840312156153b1576153b0615383565b5b6153bc610120613c86565b90505f6153cb84828501614dfe565b5f8301525060206153de84828501615387565b60208301525060406153f284828501614dfe565b604083015250606061540684828501614e3d565b606083015250608061541a84828501614e3d565b60808301525060a061542e84828501614e3d565b60a08301525060c0615442848285016150b6565b60c08301525060e061545684828501614e3d565b60e08301525061010061546b84828501614e3d565b6101008301525092915050565b5f610120828403121561548e5761548d613995565b5b5f61549b8482850161539b565b91505092915050565b5f6040820190506154b75f8301856140c6565b81810360208301526154c98184614ff4565b9050939250505056fea26469706673582212209bff09fab624dbec93134d589226822915a60616d734e79d4b2d7525f4b39e7664736f6c634300081e0033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb25394909000000000000000000000000a784aa9d9ca760a1d7973c3ad902c1d0052581dd0000000000000000000000000ac38e7334b0f14053963f4ebe2db463351c96ad000000000000000000000000eeef0f55712c709cbaf17f98df88aeba7a3c298c000000000000000000000000868c824f2b29e6ab348337ae03cd7f2a47ae536a0000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99