[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "reciever", "type": "address" }, { "indexed": true, "internalType": "uint96", "name": "percentageBasisPoint", "type": "uint96" } ], "name": "RoyaltyUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "ownerOrApproved", "type": "address" } ], "name": "TicketBurnt", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "creator", "type": "address" }, { "indexed": false, "internalType": "string", "name": "metaDataURI", "type": "string" } ], "name": "TicketCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "uint16", "name": "count", "type": "uint16" }, { "indexed": false, "internalType": "string", "name": "info", "type": "string" } ], "name": "TicketRedeemed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FLEXABLENFT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FLEXABLENFT_CREATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FLEXABLENFT_OPERATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "TicketStatus", "outputs": [ { "internalType": "uint16", "name": "redeemCount", "type": "uint16" }, { "internalType": "string", "name": "redeemInfo", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burnTicket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "metadataURI", "type": "string" } ], "name": "createTicket", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "uint96", "name": "royaltyPercentBasisPoint", "type": "uint96" } ], "name": "createTicketWithCustomRoyalty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "metadataURI", "type": "string" } ], "name": "delegateTicketCreation", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "string", "name": "metadataURI", "type": "string" }, { "internalType": "address", "name": "royaltyaddress", "type": "address" }, { "internalType": "uint96", "name": "royaltyPercentBasisPoint", "type": "uint96" } ], "name": "delegateTicketCreationWithCustomRoyalty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "info", "type": "string" } ], "name": "redeemTicket", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "royaltyReciever", "type": "address" }, { "internalType": "uint96", "name": "percentageBasisPoint", "type": "uint96" } ], "name": "updateDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002ba838038062002ba883398101604081905262000034916200040e565b8181600262000044838262000507565b50600362000053828262000507565b5050506200007760008051602062002b68833981519152806200010e60201b60201c565b620000a160008051602062002b8883398151915260008051602062002b688339815191526200010e565b620000dc7f311ca6bb899a268c3cc7cf629b9e84ac20b46c0c8543646d1e7874b5ef577ef360008051602062002b888339815191526200010e565b620000f760008051602062002b688339815191523362000159565b5062000106336101f462000196565b5050620005d3565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008062000168848462000241565b905080156200018d5760008481526001602052604090206200018b9084620002ef565b505b90505b92915050565b6127106001600160601b038216811015620001db57604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044015b60405180910390fd5b6001600160a01b0383166200020757604051635b6cc80560e11b815260006004820152602401620001d2565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620002e6576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200029d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000190565b50600062000190565b60006200018d836001600160a01b0384166000818152600183016020526040812054620002e65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000190565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200037157600080fd5b81516001600160401b03808211156200038e576200038e62000349565b604051601f8301601f19908116603f01168101908282118183101715620003b957620003b962000349565b81604052838152602092508683858801011115620003d657600080fd5b600091505b83821015620003fa5785820183015181830184015290820190620003db565b600093810190920192909252949350505050565b600080604083850312156200042257600080fd5b82516001600160401b03808211156200043a57600080fd5b62000448868387016200035f565b935060208501519150808211156200045f57600080fd5b506200046e858286016200035f565b9150509250929050565b600181811c908216806200048d57607f821691505b602082108103620004ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050257600081815260208120601f850160051c81016020861015620004dd5750805b601f850160051c820191505b81811015620004fe57828155600101620004e9565b5050505b505050565b81516001600160401b0381111562000523576200052362000349565b6200053b8162000534845462000478565b84620004b4565b602080601f8311600181146200057357600084156200055a5750858301515b600019600386901b1c1916600185901b178555620004fe565b600085815260208120601f198616915b82811015620005a45788860151825594840194600190910190840162000583565b5085821015620005c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61258580620005e36000396000f3fe608060405234801561001057600080fd5b506004361061021b5760003560e01c80636352211e11610125578063a476b73d116100ad578063ce5956cb1161007c578063ce5956cb146104d0578063d547741f146104f1578063d691e43c14610504578063e985e9c514610517578063ea7676c71461052a57600080fd5b8063a476b73d14610484578063b88d4fde14610497578063c87b56dd146104aa578063ca15c873146104bd57600080fd5b806391d14854116100f457806391d148541461043b5780639285a51b1461044e57806395d89b4114610461578063a217fddf14610469578063a22cb4651461047157600080fd5b80636352211e146103ef5780636897082f1461040257806370a08231146104155780639010d07c1461042857600080fd5b80632875970a116101a857806336568abe1161017757806336568abe1461038e57806336a913b5146103a157806342842e0e146103b65780634f6ccce7146103c957806351a2c4e3146103dc57600080fd5b80632875970a146103235780632a55205a146103365780632f2ff15d146103685780632f745c591461037b57600080fd5b8063095ea7b3116101ef578063095ea7b3146102a95780630aca6616146102be57806318160ddd146102e557806323b872dd146102ed578063248a9ca31461030057600080fd5b8062c950781461022057806301ffc9a71461024657806306fdde0314610269578063081812fc1461027e575b600080fd5b61023361022e366004611e76565b610551565b6040519081526020015b60405180910390f35b610259610254366004611eda565b6105d0565b604051901515815260200161023d565b6102716105e1565b60405161023d9190611f3d565b61029161028c366004611f50565b610673565b6040516001600160a01b03909116815260200161023d565b6102bc6102b7366004611f69565b61069c565b005b6102337f311ca6bb899a268c3cc7cf629b9e84ac20b46c0c8543646d1e7874b5ef577ef381565b600a54610233565b6102bc6102fb366004611f93565b6106ab565b61023361030e366004611f50565b60009081526020819052604090206001015490565b610233610331366004611fe6565b61073b565b610349610344366004612055565b6107c7565b604080516001600160a01b03909316835260208301919091520161023d565b6102bc610376366004612077565b610873565b610233610389366004611f69565b610898565b6102bc61039c366004612077565b6108fd565b61023360008051602061253083398151915281565b6102bc6103c4366004611f93565b610935565b6102336103d7366004611f50565b610950565b6102bc6103ea3660046120a3565b6109a9565b6102916103fd366004611f50565b610a69565b6102336104103660046120d4565b610a74565b610233610423366004612109565b610b06565b610291610436366004612055565b610b4e565b610259610449366004612077565b610b6d565b61023361045c366004612124565b610b96565b610271610c30565b610233600081565b6102bc61047f366004612169565b610c3f565b6102bc610492366004611f50565b610c4a565b6102bc6104a53660046121a5565b610d0e565b6102716104b8366004611f50565b610d25565b6102336104cb366004611f50565b610e26565b6104e36104de366004611f50565b610e3d565b60405161023d929190612221565b6102bc6104ff366004612077565b610ee7565b6102bc61051236600461223e565b610f0c565b610259610525366004612268565b610f84565b6102337ff026af63d1ce53db687d4dd02bc53b45faf54defa3a8cb0dfd700ba97da8cc0081565b600060008051602061253083398151915261056b81610fb2565b600e805490600061057b836122a8565b9091555050600e5461058d8582610fbc565b6105978185610fd6565b846001600160a01b031660008051602061251083398151915282866040516105c09291906122c1565b60405180910390a2949350505050565b60006105db8261104e565b92915050565b6060600280546105f0906122da565b80601f016020809104026020016040519081016040528092919081815260200182805461061c906122da565b80156106695780601f1061063e57610100808354040283529160200191610669565b820191906000526020600020905b81548152906001019060200180831161064c57829003601f168201915b5050505050905090565b600061067e82611073565b506000828152600660205260409020546001600160a01b03166105db565b6106a78282336110ac565b5050565b6001600160a01b0382166106da57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006106e78383336110b9565b9050836001600160a01b0316816001600160a01b031614610735576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016106d1565b50505050565b600060008051602061253083398151915261075581610fb2565b600e8054906000610765836122a8565b9091555050600e546107778782610fbc565b6107818187610fd6565b61078c818686611186565b866001600160a01b031660008051602061251083398151915282886040516107b59291906122c1565b60405180910390a29695505050505050565b6000828152600d602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161083c575060408051808201909152600c546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061085b906001600160601b03168761230e565b6108659190612325565b915196919550909350505050565b60008281526020819052604090206001015461088e81610fb2565b6107358383611248565b60006108a383610b06565b82106108d45760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016106d1565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146109265760405163334bd91960e11b815260040160405180910390fd5b610930828261127d565b505050565b61093083838360405180602001604052806000815250610d0e565b600061095b600a5490565b82106109845760405163295f44f760e21b815260006004820152602481018390526044016106d1565b600a828154811061099757610997612347565b90600052602060002001549050919050565b6000805160206125308339815191526109c181610fb2565b60008381526010602052604090206001016109dc83826123ab565b506000838152601060205260408120805461ffff16916109fb8361246b565b82546101009290920a61ffff818102199093169183160217909155600085815260106020526040908190205490519116915084907f91e9be99c353eb314b6fc412ede9f15d7187a1b918bf65a53df2a1de9eb5c8f090610a5c908690611f3d565b60405180910390a3505050565b60006105db82611073565b60007f311ca6bb899a268c3cc7cf629b9e84ac20b46c0c8543646d1e7874b5ef577ef3610aa081610fb2565b600e8054906000610ab0836122a8565b9091555050600e54610ac3335b82610fbc565b610acd8185610fd6565b3360008051602061251083398151915282610ae781610d25565b604051610af59291906122c1565b60405180910390a291505b50919050565b60006001600160a01b038216610b32576040516322718ad960e21b8152600060048201526024016106d1565b506001600160a01b031660009081526005602052604090205490565b6000828152600160205260408120610b6690836112aa565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60007f311ca6bb899a268c3cc7cf629b9e84ac20b46c0c8543646d1e7874b5ef577ef3610bc281610fb2565b600e8054906000610bd2836122a8565b9091555050600e54610be333610abd565b610bed8186610fd6565b3360008051602061251083398151915282610c0781610d25565b604051610c159291906122c1565b60405180910390a2610c28813386611186565b949350505050565b6060600380546105f0906122da565b6106a73383836112b6565b600081815260046020526040902054610c6d906001600160a01b0316338361134d565b610cc45760405162461bcd60e51b815260206004820152602260248201527f466c657861626c654e46543a204e6f74204f776e6572204f7220417070726f76604482015261195960f21b60648201526084016106d1565b610ccd816113b0565b604051339082907f992fdab418cdc52e18511f72c6e1a38083d4e6251471f459051d80001131fe7390600090a36000908152600d6020526040812055565b50565b610d198484846106ab565b610735848484846113eb565b606033610d3183611073565b6001600160a01b031614610d875760405162461bcd60e51b815260206004820181905260248201527f466c657861626c654e46543a204e6f6e2d4578697374656e74205469636b657460448201526064016106d1565b6000828152600f602052604081208054610da0906122da565b80601f0160208091040260200160405190810160405280929190818152602001828054610dcc906122da565b8015610e195780601f10610dee57610100808354040283529160200191610e19565b820191906000526020600020905b815481529060010190602001808311610dfc57829003601f168201915b5093979650505050505050565b60008181526001602052604081206105db90611514565b6010602052600090815260409020805460018201805461ffff9092169291610e64906122da565b80601f0160208091040260200160405190810160405280929190818152602001828054610e90906122da565b8015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b5050505050905082565b600082815260208190526040902060010154610f0281610fb2565b610735838361127d565b7ff026af63d1ce53db687d4dd02bc53b45faf54defa3a8cb0dfd700ba97da8cc00610f3681610fb2565b610f40838361151e565b6040516001600160601b038316906001600160a01b038516907f8039bd6e4e7dba001c8840eb2e118d9d131246faa7d0d04335f7305127ec0b1090600090a3505050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610d0b81336115c1565b6106a78282604051806020016040528060008152506115fa565b33610fe083611073565b6001600160a01b0316146110365760405162461bcd60e51b815260206004820181905260248201527f466c657861626c654e46543a204e6f6e2d4578697374656e74205469636b657460448201526064016106d1565b6000828152600f6020526040902061093082826123ab565b60006001600160e01b0319821663152a902d60e11b14806105db57506105db82611611565b6000818152600460205260408120546001600160a01b0316806105db57604051637e27328960e01b8152600481018490526024016106d1565b6109308383836001611636565b6000806110c785858561173c565b90506001600160a01b0381166111245761111f84600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611147565b846001600160a01b0316816001600160a01b031614611147576111478185611835565b6001600160a01b0385166111635761115e846118c6565b610c28565b846001600160a01b0316816001600160a01b031614610c2857610c288585611975565b6127106001600160601b0382168110156111cc5760405163dfd1fc1b60e01b8152600481018590526001600160601b0383166024820152604481018290526064016106d1565b6001600160a01b0383166111fd57604051634b4f842960e11b815260048101859052600060248201526044016106d1565b506040805180820182526001600160a01b0393841681526001600160601b0392831660208083019182526000968752600d90529190942093519051909116600160a01b029116179055565b60008061125584846119c5565b90508015610b665760008481526001602052604090206112759084611a57565b509392505050565b60008061128a8484611a6c565b90508015610b665760008481526001602052604090206112759084611ad7565b6000610b668383611aec565b6001600160a01b0382166112e857604051630b61174360e31b81526001600160a01b03831660048201526024016106d1565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319101610a5c565b60006001600160a01b03831615801590610c285750826001600160a01b0316846001600160a01b0316148061138757506113878484610f84565b80610c285750506000908152600660205260409020546001600160a01b03908116911614919050565b60006113bf60008360006110b9565b90506001600160a01b0381166106a757604051637e27328960e01b8152600481018390526024016106d1565b6001600160a01b0383163b1561073557604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061142d90339088908790879060040161248c565b6020604051808303816000875af1925050508015611468575060408051601f3d908101601f19168201909252611465918101906124c9565b60015b6114d1573d808015611496576040519150601f19603f3d011682016040523d82523d6000602084013e61149b565b606091505b5080516000036114c957604051633250574960e11b81526001600160a01b03851660048201526024016106d1565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461150d57604051633250574960e11b81526001600160a01b03851660048201526024016106d1565b5050505050565b60006105db825490565b6127106001600160601b03821681101561155d57604051636f483d0960e01b81526001600160601b0383166004820152602481018290526044016106d1565b6001600160a01b03831661158757604051635b6cc80560e11b8152600060048201526024016106d1565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b6115cb8282610b6d565b6106a75760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106d1565b6116048383611b16565b61093060008484846113eb565b60006001600160e01b0319821663780e9d6360e01b14806105db57506105db82611b7b565b808061164a57506001600160a01b03821615155b1561170c57600061165a84611073565b90506001600160a01b038316158015906116865750826001600160a01b0316816001600160a01b031614155b801561169957506116978184610f84565b155b156116c25760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016106d1565b811561170a5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600460205260408120546001600160a01b039081169083161561176957611769818486611bbb565b6001600160a01b038116156117a757611786600085600080611636565b6001600160a01b038116600090815260056020526040902080546000190190555b6001600160a01b038516156117d6576001600160a01b0385166000908152600560205260409020805460010190555b60008481526004602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061184083610b06565b600083815260096020526040902054909150808214611893576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a546000906118d8906001906124e6565b6000838152600b6020526040812054600a805493945090928490811061190057611900612347565b9060005260206000200154905080600a838154811061192157611921612347565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611959576119596124f9565b6001900381819060005260206000200160009055905550505050565b6000600161198284610b06565b61198c91906124e6565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b60006119d18383610b6d565b611a4f576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611a073390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105db565b5060006105db565b6000610b66836001600160a01b038416611c1f565b6000611a788383610b6d565b15611a4f576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105db565b6000610b66836001600160a01b038416611c66565b6000826000018281548110611b0357611b03612347565b9060005260206000200154905092915050565b6001600160a01b038216611b4057604051633250574960e11b8152600060048201526024016106d1565b6000611b4e838360006110b9565b90506001600160a01b03811615610930576040516339e3563760e11b8152600060048201526024016106d1565b60006001600160e01b031982166380ac58cd60e01b1480611bac57506001600160e01b03198216635b5e139f60e01b145b806105db57506105db82611d59565b611bc683838361134d565b610930576001600160a01b038316611bf457604051637e27328960e01b8152600481018290526024016106d1565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016106d1565b6000818152600183016020526040812054611a4f575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105db565b60008181526001830160205260408120548015611d4f576000611c8a6001836124e6565b8554909150600090611c9e906001906124e6565b9050808214611d03576000866000018281548110611cbe57611cbe612347565b9060005260206000200154905080876000018481548110611ce157611ce1612347565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611d1457611d146124f9565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105db565b60009150506105db565b60006001600160e01b03198216635a05180f60e01b14806105db57506105db8260006001600160e01b03198216637965db0b60e01b14806105db57506301ffc9a760e01b6001600160e01b03198316146105db565b80356001600160a01b0381168114611dc557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611dfb57611dfb611dca565b604051601f8501601f19908116603f01168101908282118183101715611e2357611e23611dca565b81604052809350858152868686011115611e3c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611e6757600080fd5b610b6683833560208501611de0565b60008060408385031215611e8957600080fd5b611e9283611dae565b9150602083013567ffffffffffffffff811115611eae57600080fd5b611eba85828601611e56565b9150509250929050565b6001600160e01b031981168114610d0b57600080fd5b600060208284031215611eec57600080fd5b8135610b6681611ec4565b6000815180845260005b81811015611f1d57602081850181015186830182015201611f01565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b666020830184611ef7565b600060208284031215611f6257600080fd5b5035919050565b60008060408385031215611f7c57600080fd5b611f8583611dae565b946020939093013593505050565b600080600060608486031215611fa857600080fd5b611fb184611dae565b9250611fbf60208501611dae565b9150604084013590509250925092565b80356001600160601b0381168114611dc557600080fd5b60008060008060808587031215611ffc57600080fd5b61200585611dae565b9350602085013567ffffffffffffffff81111561202157600080fd5b61202d87828801611e56565b93505061203c60408601611dae565b915061204a60608601611fcf565b905092959194509250565b6000806040838503121561206857600080fd5b50508035926020909101359150565b6000806040838503121561208a57600080fd5b8235915061209a60208401611dae565b90509250929050565b600080604083850312156120b657600080fd5b82359150602083013567ffffffffffffffff811115611eae57600080fd5b6000602082840312156120e657600080fd5b813567ffffffffffffffff8111156120fd57600080fd5b610c2884828501611e56565b60006020828403121561211b57600080fd5b610b6682611dae565b6000806040838503121561213757600080fd5b823567ffffffffffffffff81111561214e57600080fd5b61215a85828601611e56565b92505061209a60208401611fcf565b6000806040838503121561217c57600080fd5b61218583611dae565b91506020830135801515811461219a57600080fd5b809150509250929050565b600080600080608085870312156121bb57600080fd5b6121c485611dae565b93506121d260208601611dae565b925060408501359150606085013567ffffffffffffffff8111156121f557600080fd5b8501601f8101871361220657600080fd5b61221587823560208401611de0565b91505092959194509250565b61ffff83168152604060208201526000610c286040830184611ef7565b6000806040838503121561225157600080fd5b61225a83611dae565b915061209a60208401611fcf565b6000806040838503121561227b57600080fd5b61228483611dae565b915061209a60208401611dae565b634e487b7160e01b600052601160045260246000fd5b6000600182016122ba576122ba612292565b5060010190565b828152604060208201526000610c286040830184611ef7565b600181811c908216806122ee57607f821691505b602082108103610b0057634e487b7160e01b600052602260045260246000fd5b80820281158282048414176105db576105db612292565b60008261234257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b601f82111561093057600081815260208120601f850160051c810160208610156123845750805b601f850160051c820191505b818110156123a357828155600101612390565b505050505050565b815167ffffffffffffffff8111156123c5576123c5611dca565b6123d9816123d384546122da565b8461235d565b602080601f83116001811461240e57600084156123f65750858301515b600019600386901b1c1916600185901b1785556123a3565b600085815260208120601f198616915b8281101561243d5788860151825594840194600190910190840161241e565b508582101561245b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600061ffff80831681810361248257612482612292565b6001019392505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906124bf90830184611ef7565b9695505050505050565b6000602082840312156124db57600080fd5b8151610b6681611ec4565b818103818111156105db576105db612292565b634e487b7160e01b600052603160045260246000fdfe0484f94842646b419a0e924ba515b27093fce72662146119168089c5279dd3e43a9271f4ac12985040e91483b411d905fcc26b87ccea0e423755698a535d6cdea2646970667358221220914e5e3d892bdbf6069a8e5c196bfd8e56356ce75a00ac664afbe9f24843c92e64736f6c63430008140033f026af63d1ce53db687d4dd02bc53b45faf54defa3a8cb0dfd700ba97da8cc003a9271f4ac12985040e91483b411d905fcc26b87ccea0e423755698a535d6cde000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000008466c657861626c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c580000000000000000000000000000000000000000000000000000000000