3.1k txs
3.1k calls
constructor
constructor(address royaltyReceiver_, uint96 royaltyFeeNumerator_, string name_, string symbol_)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
CID
viewfunction CID() view returns (string)
collect
viewfunction collect() view returns (uint256)
coolDown
viewfunction coolDown() view returns (uint256)
DEFAULT_OPERATOR_WHITELIST_ID
viewfunction DEFAULT_OPERATOR_WHITELIST_ID() view returns (uint120)
DEFAULT_TRANSFER_SECURITY_LEVEL
viewfunction DEFAULT_TRANSFER_SECURITY_LEVEL() view returns (uint8)
DEFAULT_TRANSFER_VALIDATOR
viewfunction DEFAULT_TRANSFER_VALIDATOR() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getPermittedContractReceivers
viewfunction getPermittedContractReceivers() view returns (address[])
getSecurityPolicy
viewfunction getSecurityPolicy() view returns (tuple)
getTransferValidator
viewfunction getTransferValidator() view returns (address)
getWhitelistedOperators
viewfunction getWhitelistedOperators() view returns (address[])
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isContractReceiverPermitted
viewfunction isContractReceiverPermitted(address receiver) view returns (bool)
isOperatorWhitelisted
viewfunction isOperatorWhitelisted(address operator) view returns (bool)
isTransferAllowed
viewfunction isTransferAllowed(address caller, address from, address to) view returns (bool)
Life
viewfunction Life(uint256) view returns (uint256)
mintPrice
viewfunction mintPrice() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
pepeType
viewfunction pepeType(uint256) view returns (uint256)
refund
viewfunction refund() view returns (bool)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 amount)
supply
viewfunction supply() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
timestamp
viewfunction timestamp(uint256) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
whenCollect
viewfunction whenCollect() view returns (uint256)
approve
payablefunction approve(address to, uint256 tokenId) payable
Attack
nonpayablefunction Attack(uint256 yourTokenId, uint256 victimTokenID)
cashIn
nonpayablefunction cashIn(uint256 _tokenID)
mint
payablefunction mint() payable
refundMe
nonpayablefunction refundMe(uint256 _tokenID)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) payable
safeTransferFrom
payablefunction safeTransferFrom(address from, address to, uint256 tokenId) payable
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint96 feeNumerator)
setting1
nonpayablefunction setting1(uint256 _supply, uint256 _mintPrice, string _CID)
setting2
nonpayablefunction setting2(uint256 _coolDown, uint256 _whenColl, bool _refund)
setToCustomSecurityPolicy
nonpayablefunction setToCustomSecurityPolicy(uint8 level, uint120 operatorWhitelistId, uint120 permittedContractReceiversAllowlistId)
setToCustomValidatorAndSecurityPolicy
nonpayablefunction setToCustomValidatorAndSecurityPolicy(address validator, uint8 level, uint120 operatorWhitelistId, uint120 permittedContractReceiversAllowlistId)
setToDefaultSecurityPolicy
nonpayablefunction setToDefaultSecurityPolicy()
setTransferValidator
nonpayablefunction setTransferValidator(address transferValidator_)
transferFrom
payablefunction transferFrom(address from, address to, uint256 tokenId) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
DefaultRoyaltySet
event DefaultRoyaltySet(address indexed receiver, uint96 feeNumerator)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TokenRoyaltySet
event TokenRoyaltySet(uint256 indexed tokenId, address indexed receiver, uint96 feeNumerator)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransferValidatorUpdated
event TransferValidatorUpdated(address oldValidator, address newValidator)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
CreatorTokenBase__InvalidTransferValidatorContract
error CreatorTokenBase__InvalidTransferValidatorContract()
CreatorTokenBase__SetTransferValidatorFirst
error CreatorTokenBase__SetTransferValidatorFirst()
ERC2981InvalidDefaultRoyalty
error ERC2981InvalidDefaultRoyalty(uint256 numerator, uint256 denominator)
ERC2981InvalidDefaultRoyaltyReceiver
error ERC2981InvalidDefaultRoyaltyReceiver(address receiver)
ERC2981InvalidTokenRoyalty
error ERC2981InvalidTokenRoyalty(uint256 tokenId, uint256 numerator, uint256 denominator)
ERC2981InvalidTokenRoyaltyReceiver
error ERC2981InvalidTokenRoyaltyReceiver(uint256 tokenId, address receiver)
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
ShouldNotMintToBurnAddress
error ShouldNotMintToBurnAddress()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x60806040526103e8600e55656d23ad5f8000600f556040518060800160405280604381526020016168d9604391396010908161003b9190610688565b506103e86011556201518060125560646013555f60145f6101000a81548160ff021916908315150217905550348015610072575f5ffd5b5060405161691c38038061691c83398181016040528101906100949190610912565b8383838333828281600290816100aa9190610688565b5080600390816100ba9190610688565b506100c961017560201b60201c565b5f8190555050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610140575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161013791906109bd565b60405180910390fd5b61014f8161017c60201b60201c565b505050610162828261023f60201b60201c565b50506001600c8190555050505050610a64565b5f5f905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61024f82826102a160201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef8260405161029591906109e5565b60405180910390a25050565b5f6102b061044260201b60201c565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156103155781816040517f6f483d0900000000000000000000000000000000000000000000000000000000815260040161030c929190610a3d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610385575f6040517fb6d9900a00000000000000000000000000000000000000000000000000000000815260040161037c91906109bd565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b5f612710905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806104c657607f821691505b6020821081036104d9576104d8610482565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261053b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610500565b6105458683610500565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61058961058461057f8461055d565b610566565b61055d565b9050919050565b5f819050919050565b6105a28361056f565b6105b66105ae82610590565b84845461050c565b825550505050565b5f5f905090565b6105cd6105be565b6105d8818484610599565b505050565b5b818110156105fb576105f05f826105c5565b6001810190506105de565b5050565b601f82111561064057610611816104df565b61061a846104f1565b81016020851015610629578190505b61063d610635856104f1565b8301826105dd565b50505b505050565b5f82821c905092915050565b5f6106605f1984600802610645565b1980831691505092915050565b5f6106788383610651565b9150826002028217905092915050565b6106918261044b565b67ffffffffffffffff8111156106aa576106a9610455565b5b6106b482546104af565b6106bf8282856105ff565b5f60209050601f8311600181146106f0575f84156106de578287015190505b6106e8858261066d565b86555061074f565b601f1984166106fe866104df565b5f5b8281101561072557848901518255600182019150602085019450602081019050610700565b86831015610742578489015161073e601f891682610651565b8355505b6001600288020188555050505b505050505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61079182610768565b9050919050565b6107a181610787565b81146107ab575f5ffd5b50565b5f815190506107bc81610798565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6107e2816107c2565b81146107ec575f5ffd5b50565b5f815190506107fd816107d9565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b6108248261080b565b810181811067ffffffffffffffff8211171561084357610842610455565b5b80604052505050565b5f610855610757565b9050610861828261081b565b919050565b5f67ffffffffffffffff8211156108805761087f610455565b5b6108898261080b565b9050602081019050919050565b8281835e5f83830152505050565b5f6108b66108b184610866565b61084c565b9050828152602081018484840111156108d2576108d1610807565b5b6108dd848285610896565b509392505050565b5f82601f8301126108f9576108f8610803565b5b81516109098482602086016108a4565b91505092915050565b5f5f5f5f6080858703121561092a57610929610760565b5b5f610937878288016107ae565b9450506020610948878288016107ef565b935050604085015167ffffffffffffffff81111561096957610968610764565b5b610975878288016108e5565b925050606085015167ffffffffffffffff81111561099657610995610764565b5b6109a2878288016108e5565b91505092959194509250565b6109b781610787565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df816107c2565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f610a18610a13610a0e846107c2565b610566565b61055d565b9050919050565b610a28816109fe565b82525050565b610a378161055d565b82525050565b5f604082019050610a505f830185610a1f565b610a5d6020830184610a2e565b9392505050565b615e6880610a715f395ff3fe6080604052600436106102c8575f3560e01c80636134716211610174578063a9fc664e116100db578063c9ba598011610094578063e82f51181161006e578063e82f511814610a8d578063e985e9c514610ab5578063f2fde38b14610af1578063fd762d9214610b19576102c8565b8063c9ba598014610a11578063d007af5c14610a39578063e522538114610a63576102c8565b8063a9fc664e14610915578063b88d4fde1461093d578063be537f4314610959578063c098004c14610983578063c3296673146109ad578063c87b56dd146109d5576102c8565b8063722bf2491161012d578063722bf249146107f95780638da5cb5b1461082157806395d89b411461084b5780639d645a4414610875578063a066a52f146108b1578063a22cb465146108ed576102c8565b806361347162146107035780636352211e1461072b5780636817c76c146107675780636c3b86991461079157806370a08231146107a7578063715018a6146107e3576102c8565b80631c33b3281161023357806342842e0e116101ec578063590e1ae3116101c6578063590e1ae31461065d5780635938ab1a146106875780635d4c1d46146106b1578063600ab28b146106db576102c8565b806342842e0e146105ed578063495c8bf9146106095780634d056f6d14610633576102c8565b80631c33b328146104dc57806323b872dd146105065780632a55205a146105225780632e8da8291461055f578063379871e81461059b5780633ccfd60b146105d7576102c8565b8063095ea7b311610285578063095ea7b3146103ea578063098144d4146104065780631249c58b146104305780631386dc121461043a57806318160ddd146104765780631b25b077146104a0576102c8565b806301463546146102cc57806301ffc9a7146102f657806304634d8d14610332578063047fc9aa1461035a57806306fdde0314610384578063081812fc146103ae575b5f5ffd5b3480156102d7575f5ffd5b506102e0610b41565b6040516102ed91906142ea565b60405180910390f35b348015610301575f5ffd5b5061031c60048036038101906103179190614369565b610b57565b60405161032991906143ae565b60405180910390f35b34801561033d575f5ffd5b5061035860048036038101906103539190614432565b610b68565b005b348015610365575f5ffd5b5061036e610b86565b60405161037b9190614488565b60405180910390f35b34801561038f575f5ffd5b50610398610b8c565b6040516103a59190614511565b60405180910390f35b3480156103b9575f5ffd5b506103d460048036038101906103cf919061455b565b610c1c565b6040516103e191906142ea565b60405180910390f35b61040460048036038101906103ff9190614586565b610c75565b005b348015610411575f5ffd5b5061041a610c85565b604051610427919061461f565b60405180910390f35b610438610cad565b005b348015610445575f5ffd5b50610460600480360381019061045b919061455b565b610d97565b60405161046d9190614488565b60405180910390f35b348015610481575f5ffd5b5061048a610dac565b6040516104979190614488565b60405180910390f35b3480156104ab575f5ffd5b506104c660048036038101906104c19190614638565b610dc1565b6040516104d391906143ae565b60405180910390f35b3480156104e7575f5ffd5b506104f0610ebc565b6040516104fd91906146fb565b60405180910390f35b610520600480360381019061051b9190614714565b610ec1565b005b34801561052d575f5ffd5b5061054860048036038101906105439190614764565b61116c565b6040516105569291906147a2565b60405180910390f35b34801561056a575f5ffd5b50610585600480360381019061058091906147c9565b61128e565b60405161059291906143ae565b60405180910390f35b3480156105a6575f5ffd5b506105c160048036038101906105bc919061455b565b61142a565b6040516105ce9190614488565b60405180910390f35b3480156105e2575f5ffd5b506105eb61143f565b005b61060760048036038101906106029190614714565b611494565b005b348015610614575f5ffd5b5061061d6114b3565b60405161062a91906148ab565b60405180910390f35b34801561063e575f5ffd5b50610647611697565b6040516106549190614488565b60405180910390f35b348015610668575f5ffd5b5061067161169d565b60405161067e91906143ae565b60405180910390f35b348015610692575f5ffd5b5061069b6116af565b6040516106a89190614488565b60405180910390f35b3480156106bc575f5ffd5b506106c56116b5565b6040516106d291906148f4565b60405180910390f35b3480156106e6575f5ffd5b5061070160048036038101906106fc919061455b565b6116ba565b005b34801561070e575f5ffd5b506107296004803603810190610724919061495a565b6117e7565b005b348015610736575f5ffd5b50610751600480360381019061074c919061455b565b61199d565b60405161075e91906142ea565b60405180910390f35b348015610772575f5ffd5b5061077b6119ae565b6040516107889190614488565b60405180910390f35b34801561079c575f5ffd5b506107a56119b4565b005b3480156107b2575f5ffd5b506107cd60048036038101906107c891906147c9565b611acf565b6040516107da9190614488565b60405180910390f35b3480156107ee575f5ffd5b506107f7611b63565b005b348015610804575f5ffd5b5061081f600480360381019061081a9190614764565b611b76565b005b34801561082c575f5ffd5b50610835611dfb565b60405161084291906142ea565b60405180910390f35b348015610856575f5ffd5b5061085f611e23565b60405161086c9190614511565b60405180910390f35b348015610880575f5ffd5b5061089b600480360381019061089691906147c9565b611eb3565b6040516108a891906143ae565b60405180910390f35b3480156108bc575f5ffd5b506108d760048036038101906108d2919061455b565b61204f565b6040516108e49190614488565b60405180910390f35b3480156108f8575f5ffd5b50610913600480360381019061090e91906149d4565b612064565b005b348015610920575f5ffd5b5061093b600480360381019061093691906147c9565b61216a565b005b61095760048036038101906109529190614b3e565b612322565b005b348015610964575f5ffd5b5061096d612373565b60405161097a9190614c1c565b60405180910390f35b34801561098e575f5ffd5b506109976124c4565b6040516109a49190614511565b60405180910390f35b3480156109b8575f5ffd5b506109d360048036038101906109ce919061455b565b612550565b005b3480156109e0575f5ffd5b506109fb60048036038101906109f6919061455b565b6126eb565b604051610a089190614511565b60405180910390f35b348015610a1c575f5ffd5b50610a376004803603810190610a329190614cd3565b6127a5565b005b348015610a44575f5ffd5b50610a4d6127d0565b604051610a5a91906148ab565b60405180910390f35b348015610a6e575f5ffd5b50610a776129b4565b604051610a849190614488565b60405180910390f35b348015610a98575f5ffd5b50610ab36004803603810190610aae9190614d3f565b6129ba565b005b348015610ac0575f5ffd5b50610adb6004803603810190610ad69190614d8f565b6129ee565b604051610ae891906143ae565b60405180910390f35b348015610afc575f5ffd5b50610b176004803603810190610b1291906147c9565b612a7c565b005b348015610b24575f5ffd5b50610b3f6004803603810190610b3a9190614dcd565b612b00565b005b71721c310194ccfc01e523fc93c9cccfa2a0ac81565b5f610b6182612c4f565b9050919050565b610b70612cc8565b610b78612d4f565b610b828282612d59565b5050565b60115481565b606060028054610b9b90614e5e565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc790614e5e565b8015610c125780601f10610be957610100808354040283529160200191610c12565b820191905f5260205f20905b815481529060010190602001808311610bf557829003601f168201915b5050505050905090565b5f610c2682612db5565b610c3b57610c3a63cf4700e460e01b612e27565b5b60065f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610c8182826001612e2f565b5050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610cb5612f59565b600f54341015610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190614ed8565b60405180910390fd5b601154610d07600d612fa8565b10610d10575f5ffd5b610d1a600d612fb4565b5f610d25600d612fa8565b9050610d32336001612fc8565b600160175f8381526020019081526020015f20819055505f60185f8381526020019081526020015f20819055505f610d6b612710612fe5565b9050610d7681613040565b60165f8481526020019081526020015f20819055505050610d95613112565b565b6018602052805f5260405f205f915090505481565b5f610db561311c565b6001545f540303905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb05760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88585856040518463ffffffff1660e01b8152600401610e7493929190614ef6565b5f6040518083038186803b158015610e8a575f5ffd5b505afa925050508015610e9b575060015b610ea7575f9050610eb5565b60019050610eb5565b600190505b9392505050565b600181565b5f610ecb82613123565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f4057610f3f63a114810060e01b612e27565b5b5f5f610f4b84613205565b91509150610f618187610f5c613228565b613236565b610f8c57610f7686610f71613228565b6129ee565b610f8b57610f8a6359c896be60e01b612e27565b5b5b610f998686866001613279565b8015610fa3575f82555b60055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81546001019190508190555061106b856110478888876132ae565b7c0200000000000000000000000000000000000000000000000000000000176132d5565b60045f8681526020019081526020015f20819055505f7c02000000000000000000000000000000000000000000000000000000008416036110e7575f6001850190505f60045f8381526020019081526020015f2054036110e5575f5481146110e4578360045f8381526020019081526020015f20819055505b5b505b5f73ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa45f81036111565761115563ea553b3460e01b612e27565b5b61116387878760016132ff565b50505050505050565b5f5f5f600b5f8681526020019081526020015f2090505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f825f0160149054906101000a90046bffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361124057600a5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600a5f0160149054906101000a90046bffffffffffffffffffffffff1690505b5f611249613334565b6bffffffffffffffffffffffff16826bffffffffffffffffffffffff16886112719190614f58565b61127b9190614fc6565b9050828195509550505050509250929050565b5f5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114215760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d72dde5e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161137a91906142ea565b606060405180830381865afa158015611395573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b99190615083565b60200151846040518363ffffffff1660e01b81526004016113db9291906150ae565b602060405180830381865afa1580156113f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061141a91906150e9565b9050611425565b5f90505b919050565b6017602052805f5260405f205f915090505481565b611447612cc8565b61144f611dfb565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611491573d5f5f3e3d5ffd5b50565b6114ae83838360405180602001604052805f815250612322565b505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116485760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633fe5df9960095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016115a091906142ea565b606060405180830381865afa1580156115bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115df9190615083565b602001516040518263ffffffff1660e01b81526004016115ff91906148f4565b5f60405180830381865afa158015611619573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061164191906151ec565b9050611694565b5f67ffffffffffffffff81111561166257611661614a1a565b5b6040519080825280602002602001820160405280156116905781602001602082028036833780820191505090505b5090505b90565b60125481565b60145f9054906101000a900460ff1681565b60135481565b600181565b6116c2612f59565b6116cb8161199d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061527d565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461176f575f5ffd5b6001151560145f9054906101000a900460ff1615151461178d575f5ffd5b6117968161333d565b3373ffffffffffffffffffffffffffffffffffffffff166108fc600f5490811502906040515f60405180830381858888f193505050501580156117db573d5f5f3e3d5ffd5b506117e4613112565b50565b6117ef612d4f565b5f6117f8610c85565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185f576040517f39ffc7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663da0194c030866040518363ffffffff1660e01b815260040161189a92919061529b565b5f604051808303815f87803b1580156118b1575f5ffd5b505af11580156118c3573d5f5f3e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16632304aa0230856040518363ffffffff1660e01b81526004016119029291906152c2565b5f604051808303815f87803b158015611919575f5ffd5b505af115801561192b573d5f5f3e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff16638d74431430846040518363ffffffff1660e01b815260040161196a9291906152c2565b5f604051808303815f87803b158015611981575f5ffd5b505af1158015611993573d5f5f3e3d5ffd5b5050505050505050565b5f6119a782613123565b9050919050565b600f5481565b6119bc612d4f565b6119d771721c310194ccfc01e523fc93c9cccfa2a0ac61216a565b71721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff1663da0194c03060016040518363ffffffff1660e01b8152600401611a2592919061529b565b5f604051808303815f87803b158015611a3c575f5ffd5b505af1158015611a4e573d5f5f3e3d5ffd5b5050505071721c310194ccfc01e523fc93c9cccfa2a0ac73ffffffffffffffffffffffffffffffffffffffff16632304aa023060016040518363ffffffff1660e01b8152600401611aa09291906152c2565b5f604051808303815f87803b158015611ab7575f5ffd5b505af1158015611ac9573d5f5f3e3d5ffd5b50505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b1457611b13638f4eb60460e01b612e27565b5b67ffffffffffffffff60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b611b6b612cc8565b611b745f61334a565b565b611b7e612f59565b3373ffffffffffffffffffffffffffffffffffffffff16611b9e8361199d565b73ffffffffffffffffffffffffffffffffffffffff1614611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb9061530c565b60405180910390fd5b601154611c01600d612fa8565b1015611c0b575f5ffd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c42575f5ffd5b601354600e541015611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c809061530c565b60405180910390fd5b5f60175f8381526020019081526020015f205411611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd39061530c565b60405180910390fd5b60125442611cea919061532a565b60185f8481526020019081526020015f205410611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d339061530c565b60405180910390fd5b600160175f8481526020019081526020015f2054611d5a919061535d565b60175f8481526020019081526020015f2081905550600160175f8381526020019081526020015f2054611d8d919061532a565b60175f8381526020019081526020015f20819055505f60175f8381526020019081526020015f205403611dd957611dc38161333d565b6001600e54611dd2919061532a565b600e819055505b4260185f8481526020019081526020015f2081905550611df7613112565b5050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611e3290614e5e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e5e90614e5e565b8015611ea95780601f10611e8057610100808354040283529160200191611ea9565b820191905f5260205f20905b815481529060010190602001808311611e8c57829003601f168201915b5050505050905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120465760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639445f53060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b8152600401611f9f91906142ea565b606060405180830381865afa158015611fba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fde9190615083565b60400151846040518363ffffffff1660e01b81526004016120009291906150ae565b602060405180830381865afa15801561201b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203f91906150e9565b905061204a565b5f90505b919050565b6016602052805f5260405f205f915090505481565b8060075f612070613228565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612119613228565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161215e91906143ae565b60405180910390a35050565b612172612d4f565b5f5f90505f8273ffffffffffffffffffffffffffffffffffffffff163b1115612213578173ffffffffffffffffffffffffffffffffffffffff166301ffc9a75f6040518263ffffffff1660e01b81526004016121ce919061539f565b602060405180830381865afa92505050801561220857506040513d601f19601f8201168201806040525081019061220591906150e9565b60015b1561221257809150505b5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561224d575080155b15612284576040517f32483afb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040516122d69291906153b8565b60405180910390a18160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61232d848484610ec1565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461236d576123578484848461340d565b61236c5761236b63d1a57ed660e01b612e27565b5b5b50505050565b61237b614259565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461246f5760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b815260040161242991906142ea565b606060405180830381865afa158015612444573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124689190615083565b90506124c1565b60405180606001604052805f600681111561248d5761248c614688565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090505b90565b601080546124d190614e5e565b80601f01602080910402602001604051908101604052809291908181526020018280546124fd90614e5e565b80156125485780601f1061251f57610100808354040283529160200191612548565b820191905f5260205f20905b81548152906001019060200180831161252b57829003601f168201915b505050505081565b612558612f59565b601354600e54111561259f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125969061530c565b60405180910390fd5b6125a88161199d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c9061527d565b60405180910390fd5b5f60175f8381526020019081526020015f205411612631575f5ffd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612668575f5ffd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc60175f8481526020019081526020015f2054600f546126a19190614f58565b90811502906040515f60405180830381858888f193505050501580156126c9573d5f5f3e3d5ffd5b505f60175f8381526020019081526020015f20819055506126e8613112565b50565b60605f6127726126fa84613537565b601061271660165f8881526020019081526020015f2054613537565b61273060165f8981526020019081526020015f2054613537565b61274a60175f8a81526020019081526020015f2054613537565b60405160200161275e9594939291906157b1565b604051602081830303815290604052613601565b905061277c61362e565b8160405160200161278e929190615869565b604051602081830303815290604052915050919050565b6127ad612cc8565b8260118190555081600f8190555080601090816127ca9190615a11565b50505050565b60605f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129655760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166317e94a6c60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9554552306040518263ffffffff1660e01b81526004016128bd91906142ea565b606060405180830381865afa1580156128d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128fc9190615083565b604001516040518263ffffffff1660e01b815260040161291c91906148f4565b5f60405180830381865afa158015612936573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061295e91906151ec565b90506129b1565b5f67ffffffffffffffff81111561297f5761297e614a1a565b5b6040519080825280602002602001820160405280156129ad5781602001602082028036833780820191505090505b5090505b90565b600e5481565b6129c2612cc8565b82601281905550816013819055508060145f6101000a81548160ff021916908315150217905550505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b612a84612cc8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612af4575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612aeb91906142ea565b60405180910390fd5b612afd8161334a565b50565b612b08612d4f565b612b118461216a565b8373ffffffffffffffffffffffffffffffffffffffff1663da0194c030856040518363ffffffff1660e01b8152600401612b4c92919061529b565b5f604051808303815f87803b158015612b63575f5ffd5b505af1158015612b75573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16632304aa0230846040518363ffffffff1660e01b8152600401612bb49291906152c2565b5f604051808303815f87803b158015612bcb575f5ffd5b505af1158015612bdd573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff16638d74431430836040518363ffffffff1660e01b8152600401612c1c9291906152c2565b5f604051808303815f87803b158015612c33575f5ffd5b505af1158015612c45573d5f5f3e3d5ffd5b5050505050505050565b5f7f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612cc15750612cc08261366b565b5b9050919050565b612cd06136d4565b73ffffffffffffffffffffffffffffffffffffffff16612cee611dfb565b73ffffffffffffffffffffffffffffffffffffffff1614612d4d57612d116136d4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612d4491906142ea565b60405180910390fd5b565b612d57612cc8565b565b612d6382826136db565b8173ffffffffffffffffffffffffffffffffffffffff167f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef82604051612da99190615aef565b60405180910390a25050565b5f81612dbf61311c565b11612e22575f54821015612e21575f5b5f60045f8581526020019081526020015f205491508103612dfb5782612df490615b08565b9250612dcf565b5f7c01000000000000000000000000000000000000000000000000000000008216149150505b5b919050565b805f5260045ffd5b5f612e398361199d565b9050818015612e7b57508073ffffffffffffffffffffffffffffffffffffffff16612e62613228565b73ffffffffffffffffffffffffffffffffffffffff1614155b15612ea757612e9181612e8c613228565b6129ee565b612ea657612ea563cfb3b94260e01b612e27565b5b5b8360065f8581526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b6002600c5403612f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f9590615b79565b60405180910390fd5b6002600c81905550565b5f815f01549050919050565b6001815f015f828254019250508190555050565b612fe1828260405180602001604052805f815250613876565b5050565b5f60155f815480929190612ff890615b97565b9190505550814244336015546040516020016130179493929190615c43565b604051602081830303815290604052805190602001205f1c6130399190615c90565b9050919050565b5f6105dc821015801561305457506109c482105b15613062576001905061310d565b6109c482101580156130755750610fa082105b15613083576002905061310d565b610fa08210158015613096575061157c82105b156130a4576003905061310d565b61157c82101580156130b75750611b5882105b156130c5576004905061310d565b611b5882101580156130d8575061213482105b156130e6576005905061310d565b61213482101580156130fa575061270f8211155b15613108576006905061310d565b600790505b919050565b6001600c81905550565b5f5f905090565b5f8161312d61311c565b116131ef5760045f8381526020019081526020015f205490505f81036131c7575f5482106131665761316563df2d9b4260e01b612e27565b5b5b60045f836001900393508381526020019081526020015f205490505f8103156131c2575f7c010000000000000000000000000000000000000000000000000000000082160315613200576131c163df2d9b4260e01b612e27565b5b613167565b5f7c010000000000000000000000000000000000000000000000000000000082160315613200575b6131ff63df2d9b4260e01b612e27565b5b919050565b5f5f5f60065f8581526020019081526020015f2090508092508254915050915091565b5f6132316136d4565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b5f5f90505b818110156132a75761329c85858386613297919061535d565b6138f5565b80600101905061327e565b5050505050565b5f5f60e883901c905060e86132c48686846139f3565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b5f5f90505b8181101561332d576133228585838661331d919061535d565b6139fb565b806001019050613304565b5050505050565b5f612710905090565b613347815f613af9565b50565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613432613228565b8786866040518563ffffffff1660e01b81526004016134549493929190615d12565b6020604051808303815f875af192505050801561348f57506040513d601f19601f8201168201806040525081019061348c9190615d70565b60015b6134e4573d805f81146134bd576040519150601f19603f3d011682016040523d82523d5f602084013e6134c2565b606091505b505f8151036134dc576134db63d1a57ed660e01b612e27565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60605f600161354584613d14565b0190505f8167ffffffffffffffff81111561356357613562614a1a565b5b6040519080825280601f01601f1916602001820160405280156135955781602001600182028036833780820191505090505b5090505f82602001820190505b6001156135f6578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816135eb576135ea614f99565b5b0494505f85036135a2575b819350505050919050565b606061362782604051806060016040528060408152602001615df3604091396001613e65565b9050919050565b60606040518060400160405280601d81526020017f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815250905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f33905090565b5f6136e4613334565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff1611156137495781816040517f6f483d09000000000000000000000000000000000000000000000000000000008152600401613740929190615dcb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036137b9575f6040517fb6d9900a0000000000000000000000000000000000000000000000000000000081526004016137b091906142ea565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600a5f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b6138808383613ff4565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146138f0575f5f5490505f83820390505b6138bc5f86838060010194508661340d565b6138d1576138d063d1a57ed660e01b612e27565b5b8181106138aa57815f54146138ed576138ec5f60e01b612e27565b5b50505b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490508180156139635750805b1561399a576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81156139b8576139b36139ab6136d4565b858534614145565b6139ec565b80156139d6576139d16139c96136d4565b86853461414b565b6139eb565b6139ea6139e16136d4565b86868634614151565b5b5b5050505050565b5f9392505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050818015613a695750805b15613aa0576040517f5cbd944100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115613abe57613ab9613ab16136d4565b858534614237565b613af2565b8015613adc57613ad7613acf6136d4565b86853461423d565b613af1565b613af0613ae76136d4565b86868634614243565b5b5b5050505050565b5f613b0383613123565b90505f8190505f5f613b1486613205565b915091508415613b5c57613b308184613b2b613228565b613236565b613b5b57613b4583613b40613228565b6129ee565b613b5a57613b596359c896be60e01b612e27565b5b5b5b613b69835f886001613279565b8015613b73575f82555b600160806001901b0360055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550613c1783613bd4855f886132ae565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176132d5565b60045f8881526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000851603613c93575f6001870190505f60045f8381526020019081526020015f205403613c91575f548114613c90578460045f8381526020019081526020015f20819055505b5b505b855f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613cfb835f8860016132ff565b60015f8154809291906001019190505550505050505050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613d70577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613d6657613d65614f99565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613dad576d04ee2d6d415b85acef81000000008381613da357613da2614f99565b5b0492506020810190505b662386f26fc100008310613ddc57662386f26fc100008381613dd257613dd1614f99565b5b0492506010810190505b6305f5e1008310613e05576305f5e1008381613dfb57613dfa614f99565b5b0492506008810190505b6127108310613e2a576127108381613e2057613e1f614f99565b5b0492506004810190505b60648310613e4d5760648381613e4357613e42614f99565b5b0492506002810190505b600a8310613e5c576001810190505b80915050919050565b60605f845103613e855760405180602001604052805f8152509050613fed565b5f82613eb6576003600286516004613e9d9190614f58565b613ea7919061535d565b613eb19190614fc6565b613edd565b600360028651613ec6919061535d565b613ed09190614fc6565b6004613edc9190614f58565b5b90505f8167ffffffffffffffff811115613efa57613ef9614a1a565b5b6040519080825280601f01601f191660200182016040528015613f2c5781602001600182028036833780820191505090505b509050600185016020820187885189016020810180515f82525b82841015613fa1576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865360018601955050613f46565b8082528915613fe15760038c510660018114613fc45760028114613fd757613fdf565b603d6001870353603d6002870353613fdf565b603d60018703535b505b50505050505080925050505b9392505050565b5f5f5490505f82036140115761401063b562e8dd60e01b612e27565b5b61401d5f848385613279565b61403b8361402c5f865f6132ae565b6140358561424a565b176132d5565b60045f8381526020019081526020015f2081905550600160406001901b17820260055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505f73ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690505f81036140ec576140eb632e07630060e01b612e27565b5b5f83830190505f8390505b80835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5fa48181600101915081036140f757815f819055505050506141405f8483856132ff565b505050565b50505050565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146142305760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663285fb8c88686866040518463ffffffff1660e01b815260040161420393929190614ef6565b5f6040518083038186803b158015614219575f5ffd5b505afa15801561422b573d5f5f3e3d5ffd5b505050505b5050505050565b50505050565b50505050565b5050505050565b5f6001821460e11b9050919050565b60405180606001604052805f600681111561427757614276614688565b5b81526020015f6effffffffffffffffffffffffffffff1681526020015f6effffffffffffffffffffffffffffff1681525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6142d4826142ab565b9050919050565b6142e4816142ca565b82525050565b5f6020820190506142fd5f8301846142db565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61434881614314565b8114614352575f5ffd5b50565b5f813590506143638161433f565b92915050565b5f6020828403121561437e5761437d61430c565b5b5f61438b84828501614355565b91505092915050565b5f8115159050919050565b6143a881614394565b82525050565b5f6020820190506143c15f83018461439f565b92915050565b6143d0816142ca565b81146143da575f5ffd5b50565b5f813590506143eb816143c7565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b614411816143f1565b811461441b575f5ffd5b50565b5f8135905061442c81614408565b92915050565b5f5f604083850312156144485761444761430c565b5b5f614455858286016143dd565b92505060206144668582860161441e565b9150509250929050565b5f819050919050565b61448281614470565b82525050565b5f60208201905061449b5f830184614479565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6144e3826144a1565b6144ed81856144ab565b93506144fd8185602086016144bb565b614506816144c9565b840191505092915050565b5f6020820190508181035f83015261452981846144d9565b905092915050565b61453a81614470565b8114614544575f5ffd5b50565b5f8135905061455581614531565b92915050565b5f602082840312156145705761456f61430c565b5b5f61457d84828501614547565b91505092915050565b5f5f6040838503121561459c5761459b61430c565b5b5f6145a9858286016143dd565b92505060206145ba85828601614547565b9150509250929050565b5f819050919050565b5f6145e76145e26145dd846142ab565b6145c4565b6142ab565b9050919050565b5f6145f8826145cd565b9050919050565b5f614609826145ee565b9050919050565b614619816145ff565b82525050565b5f6020820190506146325f830184614610565b92915050565b5f5f5f6060848603121561464f5761464e61430c565b5b5f61465c868287016143dd565b935050602061466d868287016143dd565b925050604061467e868287016143dd565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600781106146c6576146c5614688565b5b50565b5f8190506146d6826146b5565b919050565b5f6146e5826146c9565b9050919050565b6146f5816146db565b82525050565b5f60208201905061470e5f8301846146ec565b92915050565b5f5f5f6060848603121561472b5761472a61430c565b5b5f614738868287016143dd565b9350506020614749868287016143dd565b925050604061475a86828701614547565b9150509250925092565b5f5f6040838503121561477a5761477961430c565b5b5f61478785828601614547565b925050602061479885828601614547565b9150509250929050565b5f6040820190506147b55f8301856142db565b6147c26020830184614479565b9392505050565b5f602082840312156147de576147dd61430c565b5b5f6147eb848285016143dd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614826816142ca565b82525050565b5f614837838361481d565b60208301905092915050565b5f602082019050919050565b5f614859826147f4565b61486381856147fe565b935061486e8361480e565b805f5b8381101561489e578151614885888261482c565b975061489083614843565b925050600181019050614871565b5085935050505092915050565b5f6020820190508181035f8301526148c3818461484f565b905092915050565b5f6effffffffffffffffffffffffffffff82169050919050565b6148ee816148cb565b82525050565b5f6020820190506149075f8301846148e5565b92915050565b60078110614919575f5ffd5b50565b5f8135905061492a8161490d565b92915050565b614939816148cb565b8114614943575f5ffd5b50565b5f8135905061495481614930565b92915050565b5f5f5f606084860312156149715761497061430c565b5b5f61497e8682870161491c565b935050602061498f86828701614946565b92505060406149a086828701614946565b9150509250925092565b6149b381614394565b81146149bd575f5ffd5b50565b5f813590506149ce816149aa565b92915050565b5f5f604083850312156149ea576149e961430c565b5b5f6149f7858286016143dd565b9250506020614a08858286016149c0565b9150509250929050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614a50826144c9565b810181811067ffffffffffffffff82111715614a6f57614a6e614a1a565b5b80604052505050565b5f614a81614303565b9050614a8d8282614a47565b919050565b5f67ffffffffffffffff821115614aac57614aab614a1a565b5b614ab5826144c9565b9050602081019050919050565b828183375f83830152505050565b5f614ae2614add84614a92565b614a78565b905082815260208101848484011115614afe57614afd614a16565b5b614b09848285614ac2565b509392505050565b5f82601f830112614b2557614b24614a12565b5b8135614b35848260208601614ad0565b91505092915050565b5f5f5f5f60808587031215614b5657614b5561430c565b5b5f614b63878288016143dd565b9450506020614b74878288016143dd565b9350506040614b8587828801614547565b925050606085013567ffffffffffffffff811115614ba657614ba5614310565b5b614bb287828801614b11565b91505092959194509250565b614bc7816146db565b82525050565b614bd6816148cb565b82525050565b606082015f820151614bf05f850182614bbe565b506020820151614c036020850182614bcd565b506040820151614c166040850182614bcd565b50505050565b5f606082019050614c2f5f830184614bdc565b92915050565b5f67ffffffffffffffff821115614c4f57614c4e614a1a565b5b614c58826144c9565b9050602081019050919050565b5f614c77614c7284614c35565b614a78565b905082815260208101848484011115614c9357614c92614a16565b5b614c9e848285614ac2565b509392505050565b5f82601f830112614cba57614cb9614a12565b5b8135614cca848260208601614c65565b91505092915050565b5f5f5f60608486031215614cea57614ce961430c565b5b5f614cf786828701614547565b9350506020614d0886828701614547565b925050604084013567ffffffffffffffff811115614d2957614d28614310565b5b614d3586828701614ca6565b9150509250925092565b5f5f5f60608486031215614d5657614d5561430c565b5b5f614d6386828701614547565b9350506020614d7486828701614547565b9250506040614d85868287016149c0565b9150509250925092565b5f5f60408385031215614da557614da461430c565b5b5f614db2858286016143dd565b9250506020614dc3858286016143dd565b9150509250929050565b5f5f5f5f60808587031215614de557614de461430c565b5b5f614df2878288016143dd565b9450506020614e038782880161491c565b9350506040614e1487828801614946565b9250506060614e2587828801614946565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614e7557607f821691505b602082108103614e8857614e87614e31565b5b50919050565b7f496e73756666696369656e74207061796d656e740000000000000000000000005f82015250565b5f614ec26014836144ab565b9150614ecd82614e8e565b602082019050919050565b5f6020820190508181035f830152614eef81614eb6565b9050919050565b5f606082019050614f095f8301866142db565b614f1660208301856142db565b614f2360408301846142db565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614f6282614470565b9150614f6d83614470565b9250828202614f7b81614470565b91508282048414831517614f9257614f91614f2b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614fd082614470565b9150614fdb83614470565b925082614feb57614fea614f99565b5b828204905092915050565b5f5ffd5b5f815190506150088161490d565b92915050565b5f8151905061501c81614930565b92915050565b5f6060828403121561503757615036614ff6565b5b6150416060614a78565b90505f61505084828501614ffa565b5f8301525060206150638482850161500e565b60208301525060406150778482850161500e565b60408301525092915050565b5f606082840312156150985761509761430c565b5b5f6150a584828501615022565b91505092915050565b5f6040820190506150c15f8301856148e5565b6150ce60208301846142db565b9392505050565b5f815190506150e3816149aa565b92915050565b5f602082840312156150fe576150fd61430c565b5b5f61510b848285016150d5565b91505092915050565b5f67ffffffffffffffff82111561512e5761512d614a1a565b5b602082029050602081019050919050565b5f5ffd5b5f81519050615151816143c7565b92915050565b5f61516961516484615114565b614a78565b9050808382526020820190506020840283018581111561518c5761518b61513f565b5b835b818110156151b557806151a18882615143565b84526020840193505060208101905061518e565b5050509392505050565b5f82601f8301126151d3576151d2614a12565b5b81516151e3848260208601615157565b91505092915050565b5f602082840312156152015761520061430c565b5b5f82015167ffffffffffffffff81111561521e5761521d614310565b5b61522a848285016151bf565b91505092915050565b7f4e6f7420746f6b656e206f776e657200000000000000000000000000000000005f82015250565b5f615267600f836144ab565b915061527282615233565b602082019050919050565b5f6020820190508181035f8301526152948161525b565b9050919050565b5f6040820190506152ae5f8301856142db565b6152bb60208301846146ec565b9392505050565b5f6040820190506152d55f8301856142db565b6152e260208301846148e5565b9392505050565b50565b5f6152f75f836144ab565b9150615302826152e9565b5f82019050919050565b5f6020820190508181035f830152615323816152ec565b9050919050565b5f61533482614470565b915061533f83614470565b925082820390508181111561535757615356614f2b565b5b92915050565b5f61536782614470565b915061537283614470565b925082820190508082111561538a57615389614f2b565b5b92915050565b61539981614314565b82525050565b5f6020820190506153b25f830184615390565b92915050565b5f6040820190506153cb5f8301856142db565b6153d860208301846142db565b9392505050565b5f81905092915050565b7f7b000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61541d6001836153df565b9150615428826153e9565b600182019050919050565b7f226e616d65223a20224b696c6c205065706520230000000000000000000000005f82015250565b5f6154676014836153df565b915061547282615433565b601482019050919050565b5f615487826144a1565b61549181856153df565b93506154a18185602086016144bb565b80840191505092915050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6154e16002836153df565b91506154ec826154ad565b600282019050919050565b7f226465736372697074696f6e223a20224b696c6c20616c6c2050657065222c005f82015250565b5f61552b601f836153df565b9150615536826154f7565b601f82019050919050565b7f22696d616765223a2022000000000000000000000000000000000000000000005f82015250565b5f615575600a836153df565b915061558082615541565b600a82019050919050565b5f819050815f5260205f209050919050565b5f81546155a981614e5e565b6155b381866153df565b9450600182165f81146155cd57600181146155e257615614565b60ff1983168652811515820286019350615614565b6155eb8561558b565b5f5b8381101561560c578154818901526001820191506020810190506155ed565b838801955050505b50505092915050565b5f6156285f836153df565b9150615633826152e9565b5f82019050919050565b7f2e706e67222c00000000000000000000000000000000000000000000000000005f82015250565b5f6156716006836153df565b915061567c8261563d565b600682019050919050565b7f202261747472696275746573223a205b7b2274726169745f74797065223a20225f8201527f74797065222c2276616c7565223a202200000000000000000000000000000000602082015250565b5f6156e16030836153df565b91506156ec82615687565b603082019050919050565b7f227d2c7b2274726169745f74797065223a20224c696665222c2276616c7565225f8201527f3a20220000000000000000000000000000000000000000000000000000000000602082015250565b5f6157516023836153df565b915061575c826156f7565b602382019050919050565b7f227d205d7d0000000000000000000000000000000000000000000000000000005f82015250565b5f61579b6005836153df565b91506157a682615767565b600582019050919050565b5f6157bb82615411565b91506157c68261545b565b91506157d2828861547d565b91506157dd826154d5565b91506157e88261551f565b91506157f382615569565b91506157ff828761559d565b915061580a8261561d565b9150615816828661547d565b915061582182615665565b915061582c826156d5565b9150615838828561547d565b915061584382615745565b915061584f828461547d565b915061585a8261578f565b91508190509695505050505050565b5f615874828561547d565b9150615880828461547d565b91508190509392505050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026158d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261589b565b6158e0868361589b565b95508019841693508086168417925050509392505050565b5f61591261590d61590884614470565b6145c4565b614470565b9050919050565b5f819050919050565b61592b836158f8565b61593f61593782615919565b8484546158a7565b825550505050565b5f5f905090565b615956615947565b615961818484615922565b505050565b5b81811015615984576159795f8261594e565b600181019050615967565b5050565b601f8211156159c95761599a8161558b565b6159a38461588c565b810160208510156159b2578190505b6159c66159be8561588c565b830182615966565b50505b505050565b5f82821c905092915050565b5f6159e95f19846008026159ce565b1980831691505092915050565b5f615a0183836159da565b9150826002028217905092915050565b615a1a826144a1565b67ffffffffffffffff811115615a3357615a32614a1a565b5b615a3d8254614e5e565b615a48828285615988565b5f60209050601f831160018114615a79575f8415615a67578287015190505b615a7185826159f6565b865550615ad8565b601f198416615a878661558b565b5f5b82811015615aae57848901518255600182019150602085019450602081019050615a89565b86831015615acb5784890151615ac7601f8916826159da565b8355505b6001600288020188555050505b505050505050565b615ae9816143f1565b82525050565b5f602082019050615b025f830184615ae0565b92915050565b5f615b1282614470565b91505f8203615b2457615b23614f2b565b5b600182039050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f615b63601f836144ab565b9150615b6e82615b2f565b602082019050919050565b5f6020820190508181035f830152615b9081615b57565b9050919050565b5f615ba182614470565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615bd357615bd2614f2b565b5b600182019050919050565b5f819050919050565b615bf8615bf382614470565b615bde565b82525050565b5f8160601b9050919050565b5f615c1482615bfe565b9050919050565b5f615c2582615c0a565b9050919050565b615c3d615c38826142ca565b615c1b565b82525050565b5f615c4e8287615be7565b602082019150615c5e8286615be7565b602082019150615c6e8285615c2c565b601482019150615c7e8284615be7565b60208201915081905095945050505050565b5f615c9a82614470565b9150615ca583614470565b925082615cb557615cb4614f99565b5b828206905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f615ce482615cc0565b615cee8185615cca565b9350615cfe8185602086016144bb565b615d07816144c9565b840191505092915050565b5f608082019050615d255f8301876142db565b615d3260208301866142db565b615d3f6040830185614479565b8181036060830152615d518184615cda565b905095945050505050565b5f81519050615d6a8161433f565b92915050565b5f60208284031215615d8557615d8461430c565b5b5f615d9284828501615d5c565b91505092915050565b5f615db5615db0615dab846143f1565b6145c4565b614470565b9050919050565b615dc581615d9b565b82525050565b5f604082019050615dde5f830185615dbc565b615deb6020830184614479565b939250505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e8cd6a9f27d0fbd28f3ade2f771f3f7595451c2335e014609394c871e5262b6164736f6c634300081e0033697066733a2f2f62616679626569646834707a63776869666670676462776e6472627674663533736d6b7171786363746566646665346b3471366f7a617673686f712f0000000000000000000000000da2080fcd563e8d337ea92873b7f9a4a75c714900000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000094b696c6c2050657065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044b49504500000000000000000000000000000000000000000000000000000000