[ { "inputs": [], "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": [], "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" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "StringsInsufficientHexLength", "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": false, "internalType": "uint256", "name": "oldTime", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTime", "type": "uint256" } ], "name": "MintWithCodeStartTimeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "stage", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mintRequestId", "type": "uint256" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": false, "internalType": "string[]", "name": "", "type": "string[]" } ], "name": "ScriptUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "start", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "end", "type": "uint32" } ], "name": "StageDateRangeUpdated", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "prevWallet", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "TrustedSignerUpdated", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "STAGE_MINT_AMOUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" } ], "name": "claimedByWallet", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter0Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter1Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter2Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter3Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "counter4Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gameContract", "outputs": [ { "internalType": "contract MorchiGame", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "gameLevelActivationCodeUsed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gateAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "code", "type": "bytes" } ], "name": "getActivationCodeStatus", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "time", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "getCodeSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint8", "name": "number", "type": "uint8" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "getCodeSigner2", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getGameLevel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "code", "type": "bytes" } ], "name": "getMintCodeTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "getSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "stage", "type": "uint256" }, { "internalType": "uint256", "name": "mintRequestId", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "getStageSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "launchpadMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "legendariesMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintType", "type": "uint256" }, { "internalType": "uint256", "name": "mintRequestId", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "code", "type": "bytes" }, { "internalType": "uint256", "name": "mintRequestId", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mintWithCode", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintWithCodeStartTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mintingActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "raresMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "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": [], "name": "scriptURI", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setGameContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setGateAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "setMintAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_mintStart", "type": "uint32" }, { "internalType": "uint32", "name": "_mintEnd", "type": "uint32" } ], "name": "setMintTimeRange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "time", "type": "uint256" } ], "name": "setMintWithCodeStartTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "newScriptURI", "type": "string[]" } ], "name": "setScriptURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" } ], "name": "setTrustedSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "sig", "type": "bytes" } ], "name": "splitSignature", "outputs": [ { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" }, { "internalType": "uint8", "name": "v", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "stage0Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stage1Minted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "trustedSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60e0604052603260808181529062003d1160a039600e9062000022908262000363565b506040518060600160405280603d815260200162003cd4603d9139600f906200004c908262000363565b50611388601355601c80546001600160a01b031916731c18e4ef0c9740e258835dbb26e6c5fb4684c7a01790553480156200008657600080fd5b506040805180820182526006808252654d4f5243484960d01b602080840182905284518086019095529184529083015233916002620000c6838262000363565b506003620000d5828262000363565b5050506001600160a01b0381166200010757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620001128162000127565b506200012060003362000179565b506200042f565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080620001888484620001b6565b90508015620001ad576000848152600160205260409020620001ab908462000264565b505b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166200025b576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002123390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620001b0565b506000620001b0565b6000620001ad836001600160a01b03841660008181526001830160205260408120546200025b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001b0565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002e957607f821691505b6020821081036200030a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035e57600081815260208120601f850160051c81016020861015620003395750805b601f850160051c820191505b818110156200035a5782815560010162000345565b5050505b505050565b81516001600160401b038111156200037f576200037f620002be565b6200039781620003908454620002d4565b8462000310565b602080601f831160018114620003cf5760008415620003b65750858301515b600019600386901b1c1916600185901b1785556200035a565b600085815260208120601f198616915b828110156200040057888601518255948401946001909101908401620003df565b50858210156200041f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613895806200043f6000396000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c8063715018a61161022b578063c4168c8611610130578063e1d02ed2116100b8578063e985e9c511610087578063e985e9c5146108dd578063ea2b4ab2146108f0578063f2fde38b146108f9578063f6c6951a1461090c578063f74d54801461091557600080fd5b8063e1d02ed2146108b2578063e3d61eb3146108ba578063e834a834146108cd578063e8a3d485146108d557600080fd5b8063ccb4807b116100ff578063ccb4807b14610851578063d3f3300914610864578063d547741f14610877578063d9b3271c1461088a578063dd2e20d91461089257600080fd5b8063c4168c8614610805578063c7cd997f14610818578063c87b56dd1461082b578063ca15c8731461083e57600080fd5b806395d89b41116101b3578063a22cb46511610182578063a22cb46514610788578063a7bb58031461079b578063b31f760e146107cc578063b88d4fde146107df578063c22ab20d146107f257600080fd5b806395d89b411461075d5780639abc832014610765578063a0bcfc7f1461076d578063a217fddf1461078057600080fd5b806386689911116101fa57806386689911146105d157806386f77050146107135780638da5cb5b146107265780639010d07c1461073757806391d148541461074a57600080fd5b8063715018a6146106c457806375794a3c146106cc57806375e16b17146106d55780638303eb0a146106e857600080fd5b806336568abe116103315780634f6ccce7116102b957806368f882c91161028857806368f882c9146106845780636a2a4a681461068d5780636a7ccc3a146106955780636c275bd2146106a857806370a08231146106b157600080fd5b80634f6ccce714610643578063532c8a2d1461065657806356a1c7011461065e5780636352211e1461067157600080fd5b806340b62e921161030057806340b62e92146105ec57806342842e0e146105ff578063471e6d51146106125780634a5cfcc21461061b5780634bb309121461062e57600080fd5b806336568abe146105ab57806338776711146105be578063401b6d27146105d1578063405ebd4d146105d957600080fd5b80631e7269c5116103b45780632f2ff15d116103835780632f2ff15d146105575780632f745c591461056a57806331f9c9191461057d57806333b4b4a314610585578063350134171461059857600080fd5b80631e7269c5146104f857806323b872dd14610518578063248a9ca31461052b578063255e46851461054e57600080fd5b8063081812fc116103fb578063081812fc1461048a57806308dc9f42146104b5578063095ea7b3146104ca57806318160ddd146104dd5780631d244f73146104e557600080fd5b806301ffc9a71461042d57806304e510eb1461045557806306fdde031461046c578063077fce5214610481575b600080fd5b61044061043b366004612d7f565b610928565b60405190151581526020015b60405180910390f35b61045e60165481565b60405190815260200161044c565b610474610972565b60405161044c9190612dec565b61045e60175481565b61049d610498366004612dff565b610a04565b6040516001600160a01b03909116815260200161044c565b6104c86104c3366004612edb565b610a2d565b005b6104c86104d8366004612f46565b610d23565b600a5461045e565b61049d6104f3366004612f70565b610d32565b61045e610506366004612fb6565b60186020526000908152604090205481565b6104c8610526366004612fd1565b610d72565b61045e610539366004612dff565b60009081526020819052604090206001015490565b61045e60105481565b6104c861056536600461300d565b610dfd565b61045e610578366004612f46565b610e22565b610440610e87565b6104c861059336600461304d565b610ea0565b6104c86105a6366004613077565b610efb565b6104c86105b936600461300d565b611037565b61049d6105cc3660046130d9565b61106f565b60175461045e565b6104c86105e7366004612fb6565b6110b6565b61049d6105fa366004613148565b6110e0565b6104c861060d366004612fd1565b611119565b61045e60145481565b601d5461049d906001600160a01b031681565b610636611134565b60405161044c919061318a565b61045e610651366004612dff565b61120d565b60165461045e565b6104c861066c366004612fb6565b611266565b61049d61067f366004612dff565b6112d7565b61045e60155481565b61045e6112e2565b61045e6106a33660046131ec565b611301565b61045e601a5481565b61045e6106bf366004612fb6565b611505565b6104c861154d565b61045e601b5481565b61049d6106e3366004613220565b611561565b6104406106f6366004612fb6565b6001600160a01b0316600090815260186020526040902054151590565b6104746107213660046131ec565b61162f565b600c546001600160a01b031661049d565b61049d610745366004613279565b611851565b61044061075836600461300d565b611869565b610474611892565b6104746118a1565b6104c861077b3660046131ec565b61192f565b61045e600081565b6104c86107963660046132a9565b611943565b6107ae6107a93660046131ec565b61194e565b60408051938452602084019290925260ff169082015260600161044c565b6104c86107da366004612dff565b6119c2565b6104c86107ed3660046132e0565b611a0b565b6104c8610800366004612fb6565b611a22565b61045e610813366004612dff565b611a4c565b6104c8610826366004612dff565b611ad0565b610474610839366004612dff565b611add565b61045e61084c366004612dff565b611b2e565b6104c861085f3660046131ec565b611b45565b60125461049d906001600160a01b031681565b6104c861088536600461300d565b611b59565b61045e611b7e565b61045e6108a0366004612dff565b60196020526000908152604090205481565b60155461045e565b6104c86108c836600461332f565b611b99565b61045e611bf0565b610474611bfb565b6104406108eb3660046133f1565b611c08565b61045e60115481565b6104c8610907366004612fb6565b611c36565b61045e60135481565b601c5461049d906001600160a01b031681565b600061093382611c74565b80610942575061094282611c99565b80610951575061095182611cd9565b8061096c575063a86517a160e01b6001600160e01b03198316145b92915050565b6060600280546109819061341b565b80601f01602080910402602001604051908101604052809291908181526020018280546109ad9061341b565b80156109fa5780601f106109cf576101008083540402835291602001916109fa565b820191906000526020600020905b8154815290600101906020018083116109dd57829003601f168201915b5050505050905090565b6000610a0f82611cfe565b506000828152600660205260409020546001600160a01b031661096c565b60048310610a745760405162461bcd60e51b815260206004820152600f60248201526e496e636f727265637420737461676560881b60448201526064015b60405180910390fd5b6000601054118015610a87575042601054105b610ad35760405162461bcd60e51b815260206004820152601760248201527f4d696e74696e67206e6f742073746172746564207965740000000000000000006044820152606401610a6b565b4260115411610b175760405162461bcd60e51b815260206004820152601060248201526f135a5b9d1a5b99c8199a5b9a5cda195960821b6044820152606401610a6b565b600060038410610b2957601754610b2d565b6014545b90508060135411610b715760405162461bcd60e51b815260206004820152600e60248201526d5374616765206f766572666c6f7760901b6044820152606401610a6b565b83600003610b8f5760158054906000610b898361346b565b91905055505b83600103610bad5760168054906000610ba78361346b565b91905055505b610bb93385858561106f565b601c546001600160a01b03908116911614610c0e5760405162461bcd60e51b815260206004820152601560248201527414da59db995c881a5cc81b9bdd081d1c9d5cdd1959605a1b6044820152606401610a6b565b6003841015610c315760148054906000610c278361346b565b9190505550610c47565b60178054906000610c418361346b565b91905055505b3360009081526018602052604090205415610c9a5760405162461bcd60e51b8152602060048201526013602482015272155cd95c88185b1c9958591e481b5a5b9d1959606a1b6044820152606401610a6b565b3360008181526018602090815260409182902060019055601b5482518881529182019390935290810191909152606081018490527fa95b1cb24c56a66b2f981cb65c919be32e0a00314b2d0af2150193d47de8fa70906080015b60405180910390a1610d0833601b54611d37565b601b8054906000610d188361346b565b919050555050505050565b610d2e828233611d51565b5050565b60408051306020820152469181019190915260608101839052600090610d6b906080015b60405160208183030381529060405283611561565b9392505050565b6001600160a01b038216610d9c57604051633250574960e11b815260006004820152602401610a6b565b6000610da9838333611d5e565b9050836001600160a01b0316816001600160a01b031614610df7576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a6b565b50505050565b600082815260208190526040902060010154610e1881611de7565b610df78383611df1565b6000610e2d83611505565b8210610e5e5760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610a6b565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b600042601054108015610e9b575042601154115b905090565b610ea8611e26565b63ffffffff828116601081905590821660118190556040805192835260208301919091527f0f08a0a971ae3978ea9b2533206326fde17de6bfc03453654862db0129467b5c910160405180910390a15050565b6000601a54118015610f0f575042601a5411155b610f5b5760405162461bcd60e51b815260206004820152601d60248201527f4d696e74207769746820636f6465206e6f7420616374697665207965740000006044820152606401610a6b565b6000610f6684611301565b600081815260196020526040902054909150610f83906005613484565b600082815260196020526040902055610f9f336004858561106f565b601c546001600160a01b03908116911614610fee5760405162461bcd60e51b815260206004820152600f60248201526e125b1b1959d85b081c995c5d595cdd608a1b6044820152606401610a6b565b601b54604080516002815233602082015290810191909152606081018490527fa95b1cb24c56a66b2f981cb65c919be32e0a00314b2d0af2150193d47de8fa7090608001610cf4565b6001600160a01b03811633146110605760405163334bd91960e11b815260040160405180910390fd5b61106a8282611e53565b505050565b6040805130602082015246918101919091526001600160a01b03851660608201526080810184905260a081018390526000906110ad9060c001610d56565b95945050505050565b6110be611e26565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6040805130602082015246918101919091526060810184905260ff831660808201526000906111119060a001610d56565b949350505050565b61106a83838360405180602001604052806000815250611a0b565b6060600d805480602002602001604051908101604052809291908181526020016000905b828210156112045783829060005260206000200180546111779061341b565b80601f01602080910402602001604051908101604052809291908181526020018280546111a39061341b565b80156111f05780601f106111c5576101008083540402835291602001916111f0565b820191906000526020600020905b8154815290600101906020018083116111d357829003601f168201915b505050505081526020019060010190611158565b50505050905090565b6000611218600a5490565b82106112415760405163295f44f760e21b81526000600482015260248101839052604401610a6b565b600a828154811061125457611254613497565b90600052602060002001549050919050565b61126e611e26565b601c54604080516001600160a01b03928316815291831660208301527f4a297cf5d32586f80d2b0708a39d2da1f46e6ae7722171e1c51dfd685b5b8aa8910160405180910390a1601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061096c82611cfe565b60006016546015546014546112f791906134ad565b610e9b91906134ad565b6000815160e0146113545760405162461bcd60e51b815260206004820152601c60248201527f41637469766174696f6e20636f64652077726f6e6720666f726d6174000000006044820152606401610a6b565b60008060008480602001905181019061136d91906134c0565b92509250925060006113808484846110e0565b9050806001600160a01b0316611395856112d7565b6001600160a01b0316146113eb5760405162461bcd60e51b815260206004820152601c60248201527f436f646520697373756572206973206e6f74204e4654206f776e6572000000006044820152606401610a6b565b6012546001600160a01b031661143d5760405162461bcd60e51b815260206004820152601760248201527611d85b594818dbdb9d1c9858dd081d5b9919599a5b9959604a1b6044820152606401610a6b565b600061144885611a4c565b600086815260196020526040902054909150611465816005613484565b8210156114a95760405162461bcd60e51b815260206004820152601260248201527147616d65206c6576656c20746f6f206c6f7760701b6044820152606401610a6b565b6114b4816005613484565b8560ff1610156114f95760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c818dbd919481b195d995b60821b6044820152606401610a6b565b50939695505050505050565b60006001600160a01b038216611531576040516322718ad960e21b815260006004820152602401610a6b565b506001600160a01b031660009081526005602052604090205490565b611555611e26565b61155f6000611e80565b565b6000806000806115708561194e565b925092509250600186805190602001206040516020016115bc91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f198184030181528282528051602091820120600084529083018083525260ff841690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561161a573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6060601a5460001480611643575042601a54115b1561167a575050604080518082019091526016815275135a5b9d1a5b99c81b9bdd081858dd1a5d99481e595d60521b602082015290565b815160e0146116ab57505060408051808201909152600c81526b15dc9bdb99c8199bdc9b585d60a21b602082015290565b6000806000848060200190518101906116c491906134c0565b92509250925060006116d78484846110e0565b9050806001600160a01b03166116ec856112d7565b6001600160a01b03161461173857505060408051808201909152601c81527f436f646520697373756572206973206e6f74204e4654206f776e6572000000006020820152949350505050565b6012546001600160a01b031661178057505060408051808201909152601781527611d85b594818dbdb9d1c9858dd081d5b9919599a5b9959604a1b6020820152949350505050565b600061178b85611a4c565b6000868152601960205260409020549091506117a8816005613484565b8210156117e457505060408051808201909152601281527147616d65206c6576656c20746f6f206c6f7760701b60208201529695505050505050565b6117ef816005613484565b8560ff16101561182c57505060408051808201909152601081526f15dc9bdb99c818dbd919481b195d995b60821b60208201529695505050505050565b50506040805180820190915260028152614f4b60f01b60208201529695505050505050565b6000828152600160205260408120610d6b9083611ed2565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546109819061341b565b600e80546118ae9061341b565b80601f01602080910402602001604051908101604052809291908181526020018280546118da9061341b565b80156119275780601f106118fc57610100808354040283529160200191611927565b820191906000526020600020905b81548152906001019060200180831161190a57829003601f168201915b505050505081565b611937611e26565b600e610d2e82826135a3565b610d2e338383611ede565b600080600083516041146119a45760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610a6b565b50505060208101516040820151606090920151909260009190911a90565b6119ca611e26565b601a5460408051918252602082018390527fc7bb10ba10bb93f9696315c07ce1d5d779904e37a5ce9855bf53d5fb515dcc0f910160405180910390a1601a55565b611a16848484610d72565b610df784848484611f7d565b611a2a611e26565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b60125460405163647eb08560e01b81526004810183905260009182916001600160a01b039091169063647eb0859060240160e060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe9190613662565b505060ff909416979650505050505050565b611ad8611e26565b601355565b6060611ae8826112d7565b50600e611af4466120a6565b611afc612138565b611b05856120a6565b604051602001611b189493929190613706565b6040516020818303038152906040529050919050565b600081815260016020526040812061096c90612145565b611b4d611e26565b600f610d2e82826135a3565b600082815260208190526040902060010154611b7481611de7565b610df78383611e53565b6000601754601454611b8f600a5490565b6112f791906134ad565b611ba28161214f565b8051611bb590600d906020840190612cac565b507f9538911740e5519a40db77fb5f637de0d56cdd804318d81ae270cc24fbd8479e81604051611be5919061318a565b60405180910390a150565b6000610e9b600a5490565b600f80546118ae9061341b565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b611c3e611e26565b6001600160a01b038116611c6857604051631e4fbdf760e01b815260006004820152602401610a6b565b611c7181611e80565b50565b60006001600160e01b03198216635a05180f60e01b148061096c575061096c826121c5565b60006001600160e01b031982166380ac58cd60e01b1480611cca57506001600160e01b03198216635b5e139f60e01b145b8061096c575061096c82611c74565b60006001600160e01b0319821663780e9d6360e01b148061096c575061096c82611c99565b6000818152600460205260408120546001600160a01b03168061096c57604051637e27328960e01b815260048101849052602401610a6b565b610d2e8282604051806020016040528060008152506121fa565b61106a8383836001612211565b601d546000906001600160a01b031615611ddc57601d546001600160a01b031663c23697a8336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160006040518083038186803b158015611dc357600080fd5b505afa158015611dd7573d6000803e3d6000fd5b505050505b611111848484612317565b611c7181336123e4565b600080611dfe848461241d565b90508015610d6b576000848152600160205260409020611e1e90846124af565b509392505050565b600c546001600160a01b0316331461155f5760405163118cdaa760e01b8152336004820152602401610a6b565b600080611e6084846124c4565b90508015610d6b576000848152600160205260409020611e1e908461252f565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610d6b8383612544565b6001600160a01b038216611f1057604051630b61174360e31b81526001600160a01b0383166004820152602401610a6b565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610df757604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611fbf9033908890879087906004016137c1565b6020604051808303816000875af1925050508015611ffa575060408051601f3d908101601f19168201909252611ff7918101906137fe565b60015b612063573d808015612028576040519150601f19603f3d011682016040523d82523d6000602084013e61202d565b606091505b50805160000361205b57604051633250574960e11b81526001600160a01b0385166004820152602401610a6b565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461209f57604051633250574960e11b81526001600160a01b0385166004820152602401610a6b565b5050505050565b606060006120b38361256e565b60010190506000816001600160401b038111156120d2576120d2612e18565b6040519080825280601f01601f1916602001820160405280156120fc576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461210657509392505050565b6060610e9b306014612646565b600061096c825490565b600c546001600160a01b03163314611c715760405162461bcd60e51b815260206004820152603360248201527f596f7520646f206e6f7420686176652074686520617574686f7269747920746f6044820152722073657420746865207363726970742055524960681b6064820152608401610a6b565b60006001600160e01b03198216637965db0b60e01b148061096c57506301ffc9a760e01b6001600160e01b031983161461096c565b61220483836127bd565b61106a6000848484611f7d565b808061222557506001600160a01b03821615155b156122e757600061223584611cfe565b90506001600160a01b038316158015906122615750826001600160a01b0316816001600160a01b031614155b801561227457506122728184611c08565b155b1561229d5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610a6b565b81156122e55783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b600080612325858585612822565b90506001600160a01b0381166123825761237d84600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b6123a5565b846001600160a01b0316816001600160a01b0316146123a5576123a5818561291b565b6001600160a01b0385166123c1576123bc846129ac565b611111565b846001600160a01b0316816001600160a01b031614611111576111118585612a5b565b6123ee8282611869565b610d2e5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610a6b565b60006124298383611869565b6124a7576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561245f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161096c565b50600061096c565b6000610d6b836001600160a01b038416612aab565b60006124d08383611869565b156124a7576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161096c565b6000610d6b836001600160a01b038416612af2565b600082600001828154811061255b5761255b613497565b9060005260206000200154905092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106125ad5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106125d9576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106125f757662386f26fc10000830492506010015b6305f5e100831061260f576305f5e100830492506008015b612710831061262357612710830492506004015b60648310612635576064830492506002015b600a831061096c5760010192915050565b606082600061265684600261381b565b612661906002613484565b6001600160401b0381111561267857612678612e18565b6040519080825280601f01601f1916602001820160405280156126a2576020820181803683370190505b509050600360fc1b816000815181106126bd576126bd613497565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106126ec576126ec613497565b60200101906001600160f81b031916908160001a905350600061271085600261381b565b61271b906001613484565b90505b6001811115612793576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061274f5761274f613497565b1a60f81b82828151811061276557612765613497565b60200101906001600160f81b031916908160001a90535060049290921c9161278c81613832565b905061271e565b5081156111115760405163e22e27eb60e01b81526004810186905260248101859052604401610a6b565b6001600160a01b0382166127e757604051633250574960e11b815260006004820152602401610a6b565b60006127f583836000611d5e565b90506001600160a01b0381161561106a576040516339e3563760e11b815260006004820152602401610a6b565b6000828152600460205260408120546001600160a01b039081169083161561284f5761284f818486612be5565b6001600160a01b0381161561288d5761286c600085600080612211565b6001600160a01b038116600090815260056020526040902080546000190190555b6001600160a01b038516156128bc576001600160a01b0385166000908152600560205260409020805460010190555b60008481526004602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600061292683611505565b600083815260096020526040902054909150808214612979576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a546000906129be906001906134ad565b6000838152600b6020526040812054600a80549394509092849081106129e6576129e6613497565b9060005260206000200154905080600a8381548110612a0757612a07613497565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480612a3f57612a3f613849565b6001900381819060005260206000200160009055905550505050565b60006001612a6884611505565b612a7291906134ad565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b60008181526001830160205260408120546124a75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561096c565b60008181526001830160205260408120548015612bdb576000612b166001836134ad565b8554909150600090612b2a906001906134ad565b9050808214612b8f576000866000018281548110612b4a57612b4a613497565b9060005260206000200154905080876000018481548110612b6d57612b6d613497565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ba057612ba0613849565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061096c565b600091505061096c565b612bf0838383612c49565b61106a576001600160a01b038316612c1e57604051637e27328960e01b815260048101829052602401610a6b565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610a6b565b60006001600160a01b038316158015906111115750826001600160a01b0316846001600160a01b03161480612c835750612c838484611c08565b806111115750506000908152600660205260409020546001600160a01b03908116911614919050565b828054828255906000526020600020908101928215612cf2579160200282015b82811115612cf25782518290612ce290826135a3565b5091602001919060010190612ccc565b50612cfe929150612d02565b5090565b80821115612cfe576000612d168282612d1f565b50600101612d02565b508054612d2b9061341b565b6000825580601f10612d3b575050565b601f016020900490600052602060002090810190611c7191905b80821115612cfe5760008155600101612d55565b6001600160e01b031981168114611c7157600080fd5b600060208284031215612d9157600080fd5b8135610d6b81612d69565b60005b83811015612db7578181015183820152602001612d9f565b50506000910152565b60008151808452612dd8816020860160208601612d9c565b601f01601f19169290920160200192915050565b602081526000610d6b6020830184612dc0565b600060208284031215612e1157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e5657612e56612e18565b604052919050565b60006001600160401b03821115612e7757612e77612e18565b50601f01601f191660200190565b600082601f830112612e9657600080fd5b8135612ea9612ea482612e5e565b612e2e565b818152846020838601011115612ebe57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612ef057600080fd5b833592506020840135915060408401356001600160401b03811115612f1457600080fd5b612f2086828701612e85565b9150509250925092565b80356001600160a01b0381168114612f4157600080fd5b919050565b60008060408385031215612f5957600080fd5b612f6283612f2a565b946020939093013593505050565b60008060408385031215612f8357600080fd5b8235915060208301356001600160401b03811115612fa057600080fd5b612fac85828601612e85565b9150509250929050565b600060208284031215612fc857600080fd5b610d6b82612f2a565b600080600060608486031215612fe657600080fd5b612fef84612f2a565b9250612ffd60208501612f2a565b9150604084013590509250925092565b6000806040838503121561302057600080fd5b8235915061303060208401612f2a565b90509250929050565b803563ffffffff81168114612f4157600080fd5b6000806040838503121561306057600080fd5b61306983613039565b915061303060208401613039565b60008060006060848603121561308c57600080fd5b83356001600160401b03808211156130a357600080fd5b6130af87838801612e85565b94506020860135935060408601359150808211156130cc57600080fd5b50612f2086828701612e85565b600080600080608085870312156130ef57600080fd5b6130f885612f2a565b9350602085013592506040850135915060608501356001600160401b0381111561312157600080fd5b61312d87828801612e85565b91505092959194509250565b60ff81168114611c7157600080fd5b60008060006060848603121561315d57600080fd5b83359250602084013561316f81613139565b915060408401356001600160401b03811115612f1457600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156131df57603f198886030184526131cd858351612dc0565b945092850192908501906001016131b1565b5092979650505050505050565b6000602082840312156131fe57600080fd5b81356001600160401b0381111561321457600080fd5b61111184828501612e85565b6000806040838503121561323357600080fd5b82356001600160401b038082111561324a57600080fd5b61325686838701612e85565b9350602085013591508082111561326c57600080fd5b50612fac85828601612e85565b6000806040838503121561328c57600080fd5b50508035926020909101359150565b8015158114611c7157600080fd5b600080604083850312156132bc57600080fd5b6132c583612f2a565b915060208301356132d58161329b565b809150509250929050565b600080600080608085870312156132f657600080fd5b6132ff85612f2a565b935061330d60208601612f2a565b92506040850135915060608501356001600160401b0381111561312157600080fd5b6000602080838503121561334257600080fd5b82356001600160401b038082111561335957600080fd5b818501915085601f83011261336d57600080fd5b81358181111561337f5761337f612e18565b8060051b61338e858201612e2e565b91825283810185019185810190898411156133a857600080fd5b86860192505b838310156133e4578235858111156133c65760008081fd5b6133d48b89838a0101612e85565b83525091860191908601906133ae565b9998505050505050505050565b6000806040838503121561340457600080fd5b61340d83612f2a565b915061303060208401612f2a565b600181811c9082168061342f57607f821691505b60208210810361344f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161347d5761347d613455565b5060010190565b8082018082111561096c5761096c613455565b634e487b7160e01b600052603260045260246000fd5b8181038181111561096c5761096c613455565b6000806000606084860312156134d557600080fd5b8351925060208401516134e781613139565b60408501519092506001600160401b0381111561350357600080fd5b8401601f8101861361351457600080fd5b8051613522612ea482612e5e565b81815287602083850101111561353757600080fd5b613548826020830160208601612d9c565b8093505050509250925092565b601f82111561106a57600081815260208120601f850160051c8101602086101561357c5750805b601f850160051c820191505b8181101561359b57828155600101613588565b505050505050565b81516001600160401b038111156135bc576135bc612e18565b6135d0816135ca845461341b565b84613555565b602080601f83116001811461360557600084156135ed5750858301515b600019600386901b1c1916600185901b17855561359b565b600085815260208120601f198616915b8281101561363457888601518255948401946001909101908401613615565b50858210156136525787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080600080600080600060e0888a03121561367d57600080fd5b875161368881613139565b60208901519097506136998161329b565b60408901519096506136aa8161329b565b60608901519095506136bb8161329b565b60808901519094506136cc8161329b565b8093505060a0880151915060c0880151905092959891949750929550565b600081516136fc818560208601612d9c565b9290920192915050565b60008086546137148161341b565b6001828116801561372c576001811461374157613770565b60ff1984168752821515830287019450613770565b8a60005260208060002060005b858110156137675781548a82015290840190820161374e565b50505082870194505b5088519250613783838560208c01612d9c565b602f60f81b9383019384526137b36137ad6137a08387018b6136ea565b602f60f81b815260010190565b886136ea565b9a9950505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906137f490830184612dc0565b9695505050505050565b60006020828403121561381057600080fd5b8151610d6b81612d69565b808202811582820484141761096c5761096c613455565b60008161384157613841613455565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203ed86678b6e5af52c4803ce6c0270b49d289beb42bb49bd3fa191958d128340064736f6c6343000814003368747470733a2f2f7265736f75726365732e736d617274746f6b656e6c6162732e636f6d2f636f6e74726163742f6d6f726368695f6e66742e6a736f6e68747470733a2f2f73746f72652d6261636b656e642e736d6172746c617965722e6e6574776f726b2f6d657461646174612f