[ { "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": "BECAlreadyAwaken", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECAlreadyFamilyAmbassador", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECAlreadyVariationAmbassador", "type": "error" }, { "inputs": [], "name": "BECCapLimitReached", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "distribution", "type": "uint256" } ], "name": "BECDistributionAlreadySet", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "domain", "type": "uint256" } ], "name": "BECDomainAlreadySet", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "BECDuplicatedName", "type": "error" }, { "inputs": [], "name": "BECEmptyGoldenDataArray", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "phenotype", "type": "uint256" }, { "internalType": "uint256", "name": "family", "type": "uint256" } ], "name": "BECFamilyNameAlreadySet", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECFruitlessCreature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECGenesisStoreAlreadySet", "type": "error" }, { "inputs": [], "name": "BECHuntFinished", "type": "error" }, { "inputs": [], "name": "BECIdsNotInOrder", "type": "error" }, { "inputs": [], "name": "BECIndexOutOfBounds", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "requested", "type": "uint256" }, { "internalType": "uint256", "name": "available", "type": "uint256" } ], "name": "BECInsufficientFunds", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "BECInvalidAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "alpha", "type": "uint256" }, { "internalType": "uint256", "name": "beta", "type": "uint256" }, { "internalType": "uint256", "name": "gamma", "type": "uint256" } ], "name": "BECInvalidAmbassadors", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "BECInvalidAmbassadorsLength", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECInvalidFamily", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "BECInvalidName", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BECInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "phenotype", "type": "uint256" } ], "name": "BECInvalidPhenotype", "type": "error" }, { "inputs": [], "name": "BECInvalidProtocolBit", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECInvalidVariation", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" }, { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "uint256", "name": "required", "type": "uint256" } ], "name": "BECMaxCreatureReproductionsAllowed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "uint256", "name": "required", "type": "uint256" } ], "name": "BECMaxHuntsAllowed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "allowed", "type": "uint256" }, { "internalType": "uint256", "name": "required", "type": "uint256" } ], "name": "BECMaxReproductionsAllowed", "type": "error" }, { "inputs": [], "name": "BECMoreCreaturesThanPhenotypes", "type": "error" }, { "inputs": [], "name": "BECNotAllVariationsPresent", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "phenotype", "type": "uint256" }, { "internalType": "uint256", "name": "family", "type": "uint256" }, { "internalType": "uint256", "name": "variation", "type": "uint256" } ], "name": "BECNotAllVariationsSet", "type": "error" }, { "inputs": [], "name": "BECNotEmptyGoldenDeltasArray", "type": "error" }, { "inputs": [], "name": "BECNotEnabled", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECNotType0Creature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECNotVariationAmbassador", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "creatureId", "type": "uint256" } ], "name": "BECParentCreatureAsPayment", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "uint256", "name": "paid", "type": "uint256" } ], "name": "BECRitualPriceNotPaid", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "phenotype", "type": "uint256" }, { "internalType": "uint256", "name": "family", "type": "uint256" }, { "internalType": "uint256", "name": "variation", "type": "uint256" } ], "name": "BECVariationNameAlreadySet", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "distributionId", "type": "uint256" } ], "name": "BECWrongDistributionId", "type": "error" }, { "inputs": [], "name": "BECZeroQuantityMinting", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "blacksphere", "type": "uint256" } ], "name": "BlackSphereInvalidOwner", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recoveredAddress", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "EIP2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "EIP2612PermitDeadlineExpired", "type": "error" }, { "inputs": [], "name": "EIP712BECSigningKeyNotSet", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "EIP712InvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "ERC404InvalidERC721Exemption", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ERC404InvalidTransferValue", "type": "error" }, { "inputs": [ { "internalType": "uint128", "name": "indexInQueue", "type": "uint128" }, { "internalType": "uint256", "name": "stashTokenId", "type": "uint256" } ], "name": "ERC404NotValidIndexValueInStash", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC404OwnedIndexOverflow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "stashTokenId", "type": "uint256" } ], "name": "ERC404TokenNotInStash", "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": [], "name": "ERC721InvalidMintQuantity", "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "ERC721ReceiverNotImplemented", "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": [], "name": "QueueEmpty", "type": "error" }, { "inputs": [], "name": "QueueFull", "type": "error" }, { "inputs": [], "name": "QueueOutOfBounds", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Received", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EIP712_DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GENETICIST", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "IPFS_URI_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "_erc20Approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "id_", "type": "uint256" } ], "name": "_erc721Approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "_transferFromERC20", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender_", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_creatureId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "burned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "uint128", "name": "index_", "type": "uint128" } ], "name": "exchangeWithStash", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "bool", "name": "_state", "type": "bool" } ], "name": "forceERC721TransferExempt", "outputs": [], "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": "uint256", "name": "_creatureId", "type": "uint256" } ], "name": "getImageURI", "outputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "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": "uint256", "name": "_creatureId", "type": "uint256" } ], "name": "getSeed", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_creatureIds", "type": "uint256[]" } ], "name": "getSeeds", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getSiteBaseURI", "outputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ipfsUris", "outputs": [ { "internalType": "string", "name": "ipfsUri", "type": "string" } ], "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": [ { "internalType": "address", "name": "target_", "type": "address" } ], "name": "isERC721TransferExempt", "outputs": [ { "internalType": "bool", "name": "isExempt", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_creatureOwner", "type": "address" }, { "internalType": "bytes32", "name": "_seed", "type": "bytes32" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "mintWithSeed", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "payable", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "owned", "outputs": [ { "internalType": "uint256[]", "name": "ownedCreatureIds", "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": "owner", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "spender_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" }, { "internalType": "uint256", "name": "deadline_", "type": "uint256" }, { "internalType": "uint8", "name": "v_", "type": "uint8" }, { "internalType": "bytes32", "name": "r_", "type": "bytes32" }, { "internalType": "bytes32", "name": "s_", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "_signingKey", "type": "address" } ], "name": "setAllowlistSigningAddress", "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": "string", "name": "_uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "state_", "type": "bool" } ], "name": "setERC721TransferExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_genesisEngineContractAddress", "type": "address" } ], "name": "setGenesisEngineContractAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_creatureId", "type": "uint256" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "setIPFSTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setSiteBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stashAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stashLength", "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": "_creatureId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensInStash", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "valueOrId_", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address payable", "name": "_address", "type": "address" } ], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address payable", "name": "_address", "type": "address" } ], "name": "withdrawERC20Token", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_address", "type": "address" } ], "name": "withdrawERC721Token", "outputs": [], "stateMutability": "payable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
610140604052346100f5576100126101eb565b604051615bc0610ac78239608051816107e1015260a051818181610f490152818161174e0152818161341c01528181613b2601528181614222015281816142890152818161450e01528181614fa80152615634015260c0518181816112f0015281816120120152818161219b0152818161230e0152818161275b01528181612d3e015281816131a40152818161335d015281816135610152818161447f015281816146a50152818161528a015281816155fa0152615743015260e0518161181f015261010051816118460152610120518181816112480152613c1d0152615bc090f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761013157604052565b6100fa565b9061014a61014360405190565b9283610110565b565b6001600160401b03811161013157602090601f01601f19160190565b9061017a6101758361014c565b610136565b918252565b6101896014610168565b7f426c61636b204579656420437265617475726573000000000000000000000000602082015290565b6101ba61017f565b90565b6101c76003610168565b6242454360e81b602082015290565b6101ba6101bd565b6101ba6101ba6101ba9290565b61020f6101f66101b2565b6101fe6101d6565b61020961014d6101de565b91610247565b61014a6000805160206167028339815191527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66107ab565b9061014a9291610336565b61025f6101ba6101ba9290565b6001600160a01b031690565b6101ba90610252565b906001600160a01b03905b9181191691161790565b6101ba9061025f906001600160a01b031682565b6101ba90610289565b6101ba9061029d565b906102bf6101ba6102c6926102a6565b8254610274565b9055565b6102d46001610168565b603360f81b602082015290565b6101ba6102ca565b9052565b6102e99061025f565b9095949261014a9461032861032f9261032160809661031a60a088019c6000890152565b6020870152565b6040850152565b6060830152565b01906102ed565b9061034192916103db565b61035561034e600061026b565b60126102af565b61035d6101d6565b61036f610368825190565b9160200190565b206103c961037b6102e1565b610386610368825190565b2091610391306102a6565b926103bd61039e60405190565b948593602085019346916000805160206166e2833981519152866102f6565b90810382520382610110565b6103d4610368825190565b2061012052565b61014a9283929091336103f9565b60208101929161014a91906102ed565b92909161040592610457565b61040f600061026b565b6104188161025f565b6104218361025f565b14610430575061014a90610822565b6104539061043d60405190565b631e4fbdf760e01b8152918291600483016103e9565b0390fd5b906104629291610488565b61048560008051602061670283398151915261047e81806107ab565b33906108a3565b50565b61014a92839290916106d5565b906000199061027f565b906104af6101ba6102c6926101de565b8254610495565b634e487b7160e01b600052602260045260246000fd5b90600160028304921680156104ec575b60208310146104e757565b6104b6565b91607f16916104dc565b9160001960089290920291821b911b61027f565b919061051b6101ba6102c6936101de565b9083546104f6565b61014a9160009161050a565b81811061053a575050565b806105486000600193610523565b0161052f565b9190601f811161055d57505050565b61056f61014a93600052602060002090565b906020601f840181900483019310610591575b6020601f90910104019061052f565b9091508190610582565b906105a4815190565b906001600160401b038211610131576105c7826105c185546104cc565b8561054e565b602090601f8311600114610602576102c69291600091836105f7575b5050600019600883021c1916906002021790565b0151905038806105e3565b601f1983169161061785600052602060002090565b9260005b8181106106555750916002939185600196941061063c575b50505002019055565b01516000196008601f8516021c19169055388080610633565b9193602060018192878701518155019501920161061b565b9061014a9161059b565b6106846101ba6101ba9290565b60ff1690565b634e487b7160e01b600052601160045260246000fd5b60ff16604d81116106b157600a0a90565b61068a565b818102929181159184041417156106b157565b6040513d6000823e3d90fd5b610734929161070661070d926106f36106ec610929565b600361049f565b6106ff6000600c61049f565b600061066d565b600161066d565b6107176012610677565b60805261072e61072960805160ff1690565b6106a0565b906106b6565b60a052604051605b81016001600160401b038111828210176101315761075f8291605b616687843990565b03906000f0801561078857610773906102a6565b60c0524660e0526107826109eb565b61010052565b6106c9565b905b600052602052604060002090565b906104af6101ba6102c69290565b906107de6107da6107d66107be85610a7a565b946101ba8560016107d084601061078d565b0161079d565b9390565b9190565b917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff61080960405190565b600090a4565b6101ba9061025f565b6101ba905461080f565b6108486108426108326011610818565b61083d8460116102af565b6102a6565b916102a6565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061087360405190565b600090a3565b9061078f906102a6565b9060ff9061027f565b9061089c6101ba6102c692151590565b8254610883565b6108b46108b08383610aac565b1590565b15610922576108da60016108d58460006108cf86601061078d565b01610879565b61088c565b6108ee6108426108e8339390565b936102a6565b917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d61091960405190565b600090a4600190565b5050600090565b6101ba60016101de565b80546000939291610950610946836104cc565b8085529360200190565b91600181169081156109a2575060011461096957505050565b61097c9192939450600052602060002090565b916000925b81841061098e5750500190565b805484840152602090930192600101610981565b92949550505060ff1916825215156020020190565b906101ba91610933565b9061014a6109db926109d260405190565b938480926109b7565b0383610110565b6101ba906109c1565b6103bd610a5a6109fb60006109e2565b610a06610368825190565b20610a10306102a6565b90610a1a60405190565b93849260208401927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646916000805160206166e2833981519152866102f6565b610a65610368825190565b2090565b6101ba9081565b6101ba9054610a69565b6001610a936101ba92610a8b600090565b50601061078d565b01610a70565b6101ba90610684565b6101ba9054610a99565b6101ba9160006108cf610ac193610a8b600090565b610aa256fe60806040526004361015610020575b361561001657005b61001e613215565b005b60003560e01c8062f714ce1461041f57806301ffc9a71461041a578063058985de1461041557806306fdde0314610410578063081812fc1461040b578063095ea7b31461040657806314d0ae661461040157806318160ddd146103fc57806323b872dd146103f7578063248a9ca3146103f25780632f2ff15d146103ed578063313ce567146103e857806334b02e8e146103e35780633644e515146103de578063364f5d23146103d957806336568abe146103d4578063412e5f49146103cf57806342842e0e146103ca57806342966c68146103c55780634443f0a4146103c057806344a5bfa8146103bb5780634f558e79146103b65780634f8a2737146103b157806355f804b3146103ac5780635b21186d146103a75780635e56b06a146103a25780636315ab461461039d5780636352211e1461039857806364aae4161461039357806370a082311461038e578063715018a61461038957806373f425611461038457806375794a3c1461037f5780637e1c0c091461037a5780637e3c9599146103755780637ecebe00146103705780638adae3261461036b5780638da5cb5b14610366578063907af6c0146103615780639198e19a1461035c57806391d148541461035757806395d89b411461035257806396a8ef9e1461034d578063a217fddf14610348578063a22cb46514610343578063a9059cbb1461033e578063aa97eca214610339578063ade474e614610334578063b1ab93171461032f578063b88d4fde1461032a578063be00df4a14610325578063c87b56dd14610320578063d505accf1461031b578063d539139314610316578063d547741f14610311578063dab400f31461030c578063dd62ed3e14610307578063e0d4ea3714610302578063e985e9c5146102fd578063ecb41c75146102f8578063ed915ea1146102f3578063f2fde38b146102ee578063fcf8be1f146102e95763fd89b0f50361000e5761135c565b611340565b611328565b611314565b6112db565b6112bf565b6112a4565b611288565b611233565b61121a565b6111e1565b6111c2565b611132565b61111a565b6110fe565b611094565b611079565b61105e565b611042565b611029565b61100e565b610fe8565b610fa4565b610f88565b610f6d565b610f34565b610f19565b610ee0565b610ec5565b610e51565b610e13565b610df8565b610ddd565b610dc5565b610daa565b610d7a565b610d5f565b610d46565b610d2b565b610d12565b610cbb565b610ca3565b610bdd565b610bc1565b610b16565b610a57565b610a3e565b610a23565b610a0a565b6109d1565b6109b6565b61099b565b6107cc565b6107b3565b610798565b61077c565b610728565b610705565b610659565b610601565b6105c6565b610537565b6104e1565b61048f565b805b0361042d57565b600080fd5b9050359061043f82610424565b565b6001600160a01b031690565b90565b6001600160a01b038116610426565b9050359061043f82610450565b919060408382031261042d5761044d9060206104888286610432565b940161045f565b6104a361049d36600461046c565b9061147f565b604051005b0390f35b6001600160e01b03198116610426565b9050359061043f826104ac565b9060208282031261042d5761044d916104bc565b9052565b3461042d576104a86104fc6104f73660046104c9565b611489565b60405191829182901515815260200190565b801515610426565b9050359061043f8261050e565b9060208282031261042d5761044d91610516565b3461042d576104a361054a366004610523565b611492565b600091031261042d57565b60005b83811061056d5750506000910152565b818101518382015260200161055d565b61059e6105a76020936105b193610592815190565b80835293849260200190565b9586910161055a565b601f01601f191690565b0190565b602080825261044d9291019061057d565b3461042d576105d636600461054f565b6104a86105e16114a5565b604051918291826105b5565b9060208282031261042d5761044d91610432565b3461042d576104a861061c6106173660046105ed565b6114c2565b604051918291826001600160a01b03909116815260200190565b919060408382031261042d5761044d906020610652828661045f565b9401610432565b3461042d576104a86104fc61066f366004610636565b90611510565b909160608284031261042d5761044d61068e848461045f565b9360406106528260208701610432565b906106be6106b76106ad845190565b8084529260200190565b9260200190565b9060005b8181106106cf5750505090565b9091926106ec6106e56001928651815260200190565b9460200190565b9291016106c2565b602080825261044d9291019061069e565b6104a861071c610716366004610675565b91611721565b604051918291826106f4565b3461042d5761073836600461054f565b6104a8610743611741565b6040519182918290815260200190565b909160608284031261042d5761044d61076c848461045f565b936040610652826020870161045f565b3461042d576104a86104fc610792366004610753565b91611792565b3461042d576104a86107436107ae3660046105ed565b6117d6565b3461042d576104a36107c636600461046c565b90611813565b3461042d576107dc36600461054f565b6040517f000000000000000000000000000000000000000000000000000000000000000060ff168152602090f35b61044d61044d61044d9290565b906108219061080a565b600052602052604060002090565b634e487b7160e01b600052600060045260246000fd5b634e487b7160e01b600052602260045260246000fd5b906001600283049216801561087b575b602083101461087657565b610845565b91607f169161086b565b805460009392916108a26108988361085b565b8085529360200190565b91600181169081156108f457506001146108bb57505050565b6108ce9192939450600052602060002090565b916000925b8184106108e05750500190565b8054848401526020909301926001016108d3565b92949550505060ff1916825215156020020190565b9061044d91610885565b634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b0382111761094a57604052565b610913565b9061043f6109699261096060405190565b93848092610909565b0383610929565b906000106109815761044d9061094f565b61082f565b600061099661044d926016610817565b610970565b3461042d576104a86105e16109b13660046105ed565b610986565b3461042d576109c636600461054f565b6104a861074361181d565b3461042d576109e136600461054f565b6104a87fdb2819cfe36df1a8e2df5d8d9cfe49bf1b7c55ce41ab4723ae144d927ae5245b610743565b3461042d576104a3610a1d36600461046c565b90611870565b3461042d576104a86105e1610a393660046105ed565b611997565b3461042d576104a3610a51366004610753565b91611a38565b3461042d576104a3610a6a3660046105ed565b611a63565b909182601f8301121561042d578135916001600160401b03831161042d57602001926020830284011161042d57565b9060208282031261042d5781356001600160401b03811161042d57610ac39201610a6f565b9091565b90610ad66106b76106ad845190565b9060005b818110610ae75750505090565b909192610afd6106e56001928651815260200190565b929101610ada565b602080825261044d92910190610ac7565b3461042d576104a8610b32610b2c366004610a9e565b90611abb565b60405191829182610b05565b909182601f8301121561042d578135916001600160401b03831161042d57602001926001830284011161042d57565b60608183031261042d57610b818282610432565b9260208201356001600160401b03811161042d5783610ba1918401610b3e565b92909360408201356001600160401b03811161042d57610ac39201610b3e565b3461042d576104a3610bd4366004610b6d565b93929092611cbf565b3461042d576104a86104fc610bf33660046105ed565b611d10565b9061043f610c0560405190565b9283610929565b6001600160401b03811161094a57602090601f01601f19160190565b90826000939282370152565b90929192610c49610c4482610c0c565b610bf8565b938185528183011161042d5761043f916020850190610c28565b9080601f8301121561042d5781602061044d93359101610c34565b9060208282031261042d5781356001600160401b03811161042d5761044d9201610c63565b3461042d576104a3610cb6366004610c7e565b611e04565b3461042d576104a3610cce366004610c7e565b611e24565b6001600160801b038116610426565b9050359061043f82610cd3565b919060408382031261042d5761044d906020610d0b8286610432565b9401610ce2565b3461042d576104a3610d25366004610cef565b90611edd565b3461042d57610d3b36600461054f565b6104a861071c61207a565b3461042d576104a3610d59366004610636565b906120aa565b3461042d576104a861061c610d753660046105ed565b61213e565b3461042d576104a86104fc610d90366004610753565b916121f2565b9060208282031261042d5761044d9161045f565b3461042d576104a8610743610dc0366004610d96565b61233e565b3461042d57610dd536600461054f565b6104a3612372565b3461042d57610ded36600461054f565b6104a861074361237a565b3461042d57610e0836600461054f565b6104a8610743612382565b3461042d57610e2336600461054f565b6104a861074361238c565b919060408382031261042d5761044d906020610e4a828661045f565b9401610516565b3461042d576104a3610e64366004610e2e565b906123f2565b61044d90610441906001600160a01b031682565b61044d90610e6a565b61044d90610e7e565b9061082190610e87565b61044d916008021c81565b9061044d9154610e9a565b6000610ec061044d92600f610e90565b610ea5565b3461042d576104a8610743610edb366004610d96565b610eb0565b3461042d57610ef036600461054f565b6104a87f114ba586f27424819fdf1eac564faf22081abcab4f662a9e508c112ed1a7cbcf610743565b3461042d57610f2936600461054f565b6104a861061c6123fc565b3461042d57610f4436600461054f565b6104a87f0000000000000000000000000000000000000000000000000000000000000000610743565b3461042d57610f7d36600461054f565b6104a8610743612406565b3461042d576104a86104fc610f9e36600461046c565b90612425565b3461042d57610fb436600461054f565b6104a86105e1612445565b909160608284031261042d5761044d610fd8848461045f565b9360406104888260208701610432565b6104a3610ff6366004610fbf565b916125d8565b61044d600061080a565b61044d610ffc565b3461042d5761101e36600461054f565b6104a8610743611006565b3461042d576104a361103c366004610e2e565b90612603565b3461042d576104a86104fc611058366004610636565b90612699565b3461042d576104a86104fc611074366004610d96565b6126aa565b3461042d5761108936600461054f565b6104a86105e16126c1565b3461042d576104a861071c6110aa366004610d96565b612750565b9060808282031261042d576110c4818361045f565b926110d2826020850161045f565b926110e08360408301610432565b9260608201356001600160401b03811161042d5761044d9201610c63565b3461042d576104a36111113660046110af565b92919091612896565b3461042d576104a361112d366004610d96565b6128f4565b3461042d576104a86105e16111483660046105ed565b612966565b60ff8116610426565b9050359061043f8261114d565b60e08183031261042d57611177828261045f565b92611185836020840161045f565b926111938160408501610432565b926111a18260608301610432565b9261044d6111b28460808501611156565b9360c06106528260a08701610432565b3461042d576104a36111d5366004611163565b95949094939193612b35565b3461042d576111f136600461054f565b6104a87f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610743565b3461042d576104a361122d36600461046c565b90612dd6565b3461042d5761124336600461054f565b6104a87f0000000000000000000000000000000000000000000000000000000000000000610743565b919060408382031261042d5761044d906020610488828661045f565b3461042d576104a861074361129e36600461126c565b90612de0565b3461042d576104a86107436112ba3660046105ed565b612e0a565b3461042d576104a86104fc6112d536600461126c565b90612e68565b3461042d576112eb36600461054f565b6104a87f000000000000000000000000000000000000000000000000000000000000000061061c565b6104a3611322366004610fbf565b91613098565b3461042d576104a361133b366004610d96565b61310d565b3461042d576104a86104fc611356366004610636565b90613116565b3461042d576104a361136f366004610d96565b61320c565b9061043f91611381613250565b6113d8565b61044161044d61044d9290565b61044d90611386565b6104dd90610e87565b60208101929161043f919061139c565b90815260408101929161043f9160200152565b0152565b6040513d6000823e3d90fd5b6000916113e761044184611393565b6113f082610e87565b1461145c576113fe30610e87565b8031831161143257508280926114148293610e87565b828215611429575bf11561142457565b6113cc565b506108fc61141c565b9050319061145861144260405190565b631944d18360e21b8152928392600484016113b5565b0390fd5b6114589061146960405190565b639c86094560e01b8152918291600483016113a5565b9061043f91611374565b61044d906132a5565b61043f90336132ce565b61044d9061094f565b61044d600061149c565b61044d90610441565b61044d90546114af565b6114d26114ce8261338d565b1590565b6114e9576114e461044d916004610817565b6114b8565b611458906114f660405190565b637e27328960e01b81529182916004830190815260200190565b9061151a8161338d565b1561152d57611528916120aa565b600190565b61044d91613116565b61044d9392919061156b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66133d0565b6133d0565b611650565b634e487b7160e01b600052601160045260246000fd5b9190611591565b9290565b820180921161159c57565b611570565b6001600160401b03811161094a5760208091020190565b906115c5610c44836115a1565b918252565b369037565b9061043f6115e56115df846115b8565b936115a1565b601f1901602084016115ca565b90600019905b9181191691161790565b9061161061044d6116179290565b82546115f2565b9055565b634e487b7160e01b600052603260045260246000fd5b9061163a825190565b81101561164b576020809102010190565b61161b565b50919261165d600061080a565b841461170f5761166b612382565b916116768584611586565b611689611685620208d561080a565b9190565b116116fd576116b5906116a58661169f816115cf565b966133db565b6116b0846017610817565b611602565b6116bf600061080a565b845b8110156116f6576116ef816116e96116dc6116c19487611586565b6116e68389611631565b52565b60010190565b90506116bf565b5092505090565b60405163318df65960e01b8152600490fd5b604051631758383360e11b8152600490fd5b61044d9291906060611536565b8181029291811591840414171561159c57565b61044d61174c6135a3565b7f00000000000000000000000000000000000000000000000000000000000000009061172e565b906115c5610c4483610c0c565b61044d6000611773565b61044d611780565b919061179d8261338d565b156117b6579061152892916117b061178a565b92612896565b61044d926121f2565b90610821565b61044d9081565b61044d90546117c5565b60016117ef61044d926117e7600090565b5060106117bf565b016117cc565b9061043f91611806611566826117d6565b90611810916135b6565b50565b9061043f916117f5565b7f00000000000000000000000000000000000000000000000000000000000000004603611868577f000000000000000000000000000000000000000000000000000000000000000090565b61044d61370d565b9061187a33610441565b6001600160a01b03821603611892576118109161379d565b60405163334bd91960e11b8152600490fd5b61044d905461085b565b61044d9081906001600160a01b031681565b805460009392916118d76118d38361085b565b9390565b916001811690811561192857506001146118f057505050565b6119039192939450600052602060002090565b6000905b8382106119145750500190565b600181602092548486015201910190611907565b60ff191683525050811515909102019150565b6105b16119539260209261194d815190565b94859290565b9384910161055a565b61197a611987936119746119749361044d97956118c0565b9061193b565b602f60f81b815260010190565b632e706e6760e01b815260040190565b6119ad6119a861044d836016610817565b6118a4565b6119ba611685600061080a565b11156119d3576119ce61044d916016610817565b61149c565b611a2c61044d61044d92611a12611a0c6119fc6119f76119f230610e87565b610e7e565b6118ae565b611a06601461080a565b9061385a565b916139be565b90611a1c60405190565b938492602084019260138461195c565b90810382520382610929565b909161043f926117b061178a565b6001600160a01b03909116815260408101929161043f9160200152565b611a706114ce8233613a51565b611a7d5761043f90613ab2565b61145890611a8a60405190565b63177e802f60e01b81529182913360048401611a46565b919081101561164b576020020190565b3561044d81610424565b91908092611ac8846115cf565b92611ad3600061080a565b855b811015611b0d57611b06816116e9611afc6112ba611af7611ad5968a8a611aa1565b611ab1565b6116e6838a611631565b9050611ad3565b509350505090565b91906105a781611b2c816105b19560209181520190565b8095610c28565b602080825261044d93910191611b15565b9160001960089290920291821b911b6115f8565b9190611b6961044d6116179361080a565b908354611b44565b61043f91600091611b58565b818110611b88575050565b80611b966000600193611b71565b01611b7d565b9190601f8111611bab57505050565b611bbd61043f93600052602060002090565b906020601f840181900483019310611bdf575b6020601f909101040190611b7d565b9091508190611bd0565b91906001600160401b03821161094a57611c0d82611c07855461085b565b85611b9c565b600090601f8311600114611c4857611617929160009183611c3d575b5050600019600883021c1916906002021790565b013590503880611c29565b90601f19831691611c5e85600052602060002090565b92825b818110611c9c57509160029391856001969410611c82575b50505002019055565b0135600019601f84166008021c19165b9055388080611c79565b92936020600181928786013581550195019301611c61565b9061043f9291611be9565b9493909192611cd46114ce838387878b613be2565b611cee575050611ce961043f93946016610817565b611cb4565b611458611cfa60405190565b631d9394a560e21b815292839260048401611b33565b61044d9061338d565b61043f90611d25613250565b611df9565b90611d33815190565b906001600160401b03821161094a57611d5082611c07855461085b565b602090601f8311600114611d8a57611617929160009183611d7f575050600019600883021c1916906002021790565b015190503880611c29565b601f19831691611d9f85600052602060002090565b9260005b818110611dd757509160029391856001969410611dc35750505002019055565b01516000196008601f8516021c1916611c92565b91936020600181928787015181550195019201611da3565b9061043f91611d2a565b61043f906014611def565b61043f90611d19565b61043f90611e19613250565b61043f906013611def565b61043f90611e0d565b61044d61044d61044d926001600160801b031690565b916001600160a01b0360089290920291821b911b6115f8565b9190611e6d61044d61161793610e87565b908354611e43565b61043f91600091611e5c565b805482101561164b57611e9b600191600052602060002090565b91020190600090565b90815491600160401b83101561094a5782611ec791600161043f95018155611e81565b90611b58565b9061161061044d6116179261080a565b90600d611ef2611eec83611e2d565b82613d41565b90611eff6114ce8561338d565b61206d57611f106114ce8533613a51565b61206057611fdd611fce611fca61200893611f76611fa089611f3181613d9e565b94829c929691611f4c6000611f47876004610817565b611e75565b60089685611f6c611f6684611f618d8d610e90565b611e81565b90610ea5565b60a01c928a613dcc565b611f8b6000611f86856009610817565b611b71565b611f9b83600a613e2d565b613e2d565b613e9e565b611fc56001600160a01b038816600160a01b01611fc061044d8585610e90565b611ea4565b610e90565b5490565b611fd8600161080a565b900390565b6001600160a01b03841660a09190911b6001600160a01b03191601612003836009610817565b611ecd565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169216908183600080516020615b6b833981519152600080a4600080516020615b6b833981519152600080a4565b61145884611a8a60405190565b611458846114f660405190565b61044d600d613f05565b906001600160a01b03906115f8565b906120a361044d61161792610e87565b8254612084565b6120b38261213e565b906001600160a01b0382163314158061212b575b612113576120df816120da856004610817565b612093565b6001600160a01b0390811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4565b60405163a9fbf51f60e01b8152336004820152602490fd5b506121396114ce3384612e68565b6120c7565b61214a6114ce8261338d565b6114e95761216c61216561217192612160600a90565b614043565b6009610817565b6117cc565b6001600160a01b0316906121886104416000611393565b6001600160a01b0383161461219957565b7f00000000000000000000000000000000000000000000000000000000000000009150565b6001600160a01b03909116815260608101939261043f9290916040916113c8906020830152565b9190820391821161159c57565b9291906122026104416000611393565b6001600160a01b038216148015612303575b80156122e8575b6122b757336001600160a01b0385160361223a575b61044d9293614150565b61225261216c61224b866006610e90565b3390610e90565b936000198503612264575b9350612230565b8483116122925761228a61227c8461044d96976121e5565b61200361224b846006610e90565b84935061225d565b8490611458846122a160405190565b637dc7a0d960e11b8152938493600485016121be565b611458906122c460405190565b63ec442f0560e01b8152918291600483016001600160a01b03909116815260200190565b506001600160a01b0384166001600160a01b0382161461221b565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b03821614612214565b61216c61044d9161234d600090565b506002610e90565b61235d613250565b61043f61043f61236d6000611393565b6142fe565b61043f612355565b61044d61434a565b61044d60036117cc565b61044d6135a3565b9061043f916123a1613250565b9190823b6123b2611685600061080a565b146123c15761043f91926132ce565b611458836123ce60405190565b639c86094560e01b8152918291600483016001600160a01b03909116815260200190565b9061043f91612394565b61044d60116114b8565b61044d600d614354565b61044d905b60ff1690565b61044d9054612410565b61044d91600061243a612440936117e7600090565b01610e90565b61241b565b61044d600161149c565b9061043f929161245d613250565b6124a7565b9050519061043f82610450565b9060208282031261042d5761044d91612462565b6001600160a01b0391821681529116602082015260608101929161043f9160400152565b6124b090610e87565b906124be6104416000611393565b6001600160a01b038416146123c1576124df6124d930610e87565b92610e87565b6040516331a9108f60e11b815260048101839052602081602481855afa80156114245761251b916000916125a9575b506001600160a01b031690565b6001600160a01b0384160361258557803b1561042d5761255c936000809461254260405190565b96879586948593632142170760e11b855260048501612483565b03925af180156114245761256d5750565b61043f90600061257d8183610929565b81019061054f565b509061145861259360405190565b633f82dd3d60e11b815292839260048401611a46565b6125cb915060203d6020116125d1575b6125c38183610929565b81019061246f565b3861250e565b503d6125b9565b9061043f929161244f565b9060ff906115f8565b906125fc61044d61161792151590565b82546125e3565b90336001600160a01b038316146126685761262c8161262784611fc5336005610e90565b6125ec565b60009081526001600160a01b03919091169033907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3565b6114588261267560405190565b630b61174360e31b8152918291600483016001600160a01b03909116815260200190565b6126a4919033611792565b50600190565b61244061044d916126b9600090565b506007610e90565b61044d601461149c565b906126e66126da6106ad845490565b92600052602060002090565b9060005b8181106126f75750505090565b90919261271b61271460019261270c876117cc565b815260200190565b9460010190565b9291016126ea565b9061044d916126cb565b9061043f6109699261273e60405190565b93848092612723565b61044d9061272d565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b0383161461288c5760006127958161080a565b926127ab6127a66000926008610e90565b612747565b91845b6127b961044d855190565b8610156127e0576001906127d46127d08887611631565b5190565b60a01c019501946127ae565b6127ee9193949295506115cf565b9182946127fa8261080a565b905080915b61280a61044d875190565b8310156128845761281e6127d08488611631565b60a081901c966001600160a01b03909116949061283a8361080a565b935b8885101561286757612714612861916116e9612857888b0190565b6116e6838d611631565b9361283c565b9893509390945061287a91965060010190565b91949590956127ff565b505050915050565b905061044d61207a565b939291906128a66114ce8361338d565b6128d2576128b76114ce8333613a51565b6128c55761043f93946143d2565b61145882611a8a60405190565b611458826114f660405190565b61043f906128eb613250565b61043f906144d6565b61043f906128df565b9092919261290d610c4482610c0c565b938185528183011161042d5761043f91602085019061055a565b9080601f8301121561042d57815161044d926020016128fd565b9060208282031261042d5781516001600160401b03811161042d5761044d9201612927565b60006129ae91612974606090565b5061298d61298861298861298860156114b8565b610e87565b6040519384928391829163c87b56dd60e01b83526004830190815260200190565b03915afa908115611424576000916129c4575090565b61044d91503d806000833e6129d98183610929565b810190612941565b949290979695939160e086019860008701612a03916001600160a01b03169052565b6001600160a01b031660208601526040850152606084015260ff16608083015260a082015260c00152565b9194612a7d6113c892989795612a7660a096612a6661043f9a612a5660c08a019e60008b0152565b6001600160a01b03166020890152565b6001600160a01b03166040870152565b6060850152565b6080830152565b6020809392612aa16115c56105b19461190160f01b815260020190565b01918252565b6113c861043f94612ad0606094989795612ac6608086019a6000870152565b60ff166020850152565b6040830152565b9593919897969492909861010087019960008801612afc916001600160a01b03169052565b6001600160a01b031660208701526001600160a01b031660408601526060850152608084015260ff1660a083015260c082015260e00152565b95909394929192612b434290565b8310612d9557612b528461338d565b612d6e57600095612b6287611393565b936001600160a01b0385166001600160a01b038816148015612d33575b612d025760208883611a2c612c1e8d8b612bf48e612b9b61181d565b93611a2c8b612bab83600f610e90565b612bc3612bb7826117cc565b91600183015b90611ecd565b6040519687958e8701957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987612a2e565b612c06612bff825190565b9160200190565b2090612c1160405190565b9384928884019283612a84565b612c29612bff825190565b20612c418888612c3860405190565b94859485612aa7565b838052039060015afa15611424578751946001600160a01b03166001600160a01b038616148015612ce6575b612cc057505050509181612cad60209361200384611fc57f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925986006610e90565b84526001600160a01b03908116941692a3565b61145894958997612cd060405190565b63d01a799560e01b815298899860048a01612ad7565b506001600160a01b0389166001600160a01b0386161415612c6d565b61145887612d0f60405190565b634a1406b160e11b8152918291600483016001600160a01b03909116815260200190565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b03881614612b7f565b61145884612d7b60405190565b635dbad48560e01b81529182916004830190815260200190565b85611458938895612da560405190565b63dc99de6360e01b8152978897600489016129e1565b9061043f91612dcc611566826117d6565b906118109161379d565b9061043f91612dbb565b61044d91611fc561216c92612df3600090565b506006610e90565b600019811461159c5760010190565b90600090612e18600061080a565b612e22600061080a565b905b612e2d8461080a565b8103612e605750612e2d612e58612e5261216c6017612e4c868a6121e5565b90610817565b92612dfb565b919050612e24565b925050915090565b61044d91611fc561244092612e7b600090565b506005610e90565b9061043f9291612e91613250565b612ef3565b9050519061043f82610424565b9060208282031261042d5761044d91612e96565b9050519061043f8261050e565b9060208282031261042d5761044d91612eb7565b91602061043f9294936113c86040820196600083019061139c565b612eff90929192610e87565b612f0c6104416000611393565b612f1583610e87565b1461308b57612f2390610e87565b906370a08231612f3230610e87565b90612f3c60405190565b612f468260e01b90565b81526001600160a01b0383166004820152602081602481885afa801561142457612f7591600091613072575090565b8511612fe857505091602091612faf936000612f9060405190565b809681958294612fa463a9059cbb60e01b90565b845260048401612ed8565b03925af1801561142457612fc05750565b6118109060203d602011612fe1575b612fd98183610929565b810190612ec4565b503d612fcf565b6020613021928561300a8894612ffd60405190565b9687948593849360e01b90565b83526001600160a01b031660048301526024820190565b03915afa91821561142457600092613041575b5061145861144260405190565b61306491925060203d60201161306b575b61305c8183610929565b810190612ea3565b9082613034565b503d613052565b61044d915060203d60201161306b5761305c8183610929565b6114588261146960405190565b9061043f9291612e83565b61043f906130af613250565b6130b96000611393565b6001600160a01b0381166001600160a01b038316146130dc575061043f906142fe565b611458906130e960405190565b631e4fbdf760e01b8152918291600483016001600160a01b03909116815260200190565b61043f906130a3565b906131246104416000611393565b6001600160a01b038316148015613199575b61318c5761314d8161200384611fc5336006610e90565b60009081526001600160a01b03919091169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590602090a3600190565b61145882612d0f60405190565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b03831614613136565b61043f906132017fdb2819cfe36df1a8e2df5d8d9cfe49bf1b7c55ce41ab4723ae144d927ae5245b6133d0565b61043f906015612093565b61043f906131d4565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587461323f60405190565b8061324b343383611a46565b0390a1565b6132586123fc565b339061326c825b916001600160a01b031690565b036132745750565b6114589061328160405190565b63118cdaa760e01b8152918291600483016001600160a01b03909116815260200190565b637965db0b60e01b6001600160e01b03198216149081156132c4575090565b61044d91506144e1565b91906132dd6104416000611393565b6001600160a01b038416148015613352575b6133215761262761043f9293826000146133135761330c81614640565b6007610e90565b61331c816144fb565b61330c565b6114588361332e60405190565b63024b6d7560e31b8152918291600483016001600160a01b03909116815260200190565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b038416146132ef565b61339881600b614752565b6133ca576133a961044d60036117cc565b811090816133b5575090565b90506133c561168561158d614794565b111590565b50600090565b61043f90339061479e565b6000906133e78261080a565b8314613591576133f961044183611393565b6001600160a01b038216148015613556575b6122b75761341960036117cc565b917f0000000000000000000000000000000000000000000000000000000000000000840261345861344b846002610e90565b612bbd836105b1836117cc565b8152838301906001600160a01b038316908181600080516020615b6b833981519152602082a361348c612440856007610e90565b156134bf5750505050816134ae61043f936134b8936134a9600a90565b6148af565b6105b160036117cc565b6003611ecd565b90919293806134d2600192611f96600a90565b6134dd8787836147d6565b61350a6134ee611fca886008610e90565b9661350384986134fd8661080a565b906121e5565b908361481f565b808484600080516020615b6b8339815191528180a4015b8381036135395750505050506134b861043f916134ae565b8085918484600080516020615b6b8339815191528180a401613521565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b0382161461340b565b604051636e45634760e11b8152600490fd5b61044d6135ae6149b4565b6134fd61434a565b6135c36114ce8383612425565b1561362c576135de600161262784600061243a8660106117bf565b6135f86135f26135ec339390565b93610e87565b91610e87565b917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d61362360405190565b600090a4600190565b5050600090565b805460009392916136466108988361085b565b91600181169081156108f4575060011461365f57505050565b6136729192939450600052602060002090565b916000925b8184106136845750500190565b805484840152602090930192600101613677565b9061044d91613633565b9061043f610969926136b360405190565b93848092613698565b61044d906136a2565b9095949261043f946136f76136fe926136f06080966136e960a088019c6000890152565b6020870152565b6040850152565b6060830152565b01906001600160a01b03169052565b611a2c61378e61371d60006136bc565b613728612bff825190565b2061373230610e87565b9061373c60405190565b93849260208401927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f866136c5565b613799612bff825190565b2090565b6137a78282612425565b1561362c576137c16000612627848261243a8660106117bf565b6137cf6135f26135ec339390565b917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b61362360405190565b9061043f6115e561380a84611773565b93610c0c565b90613819825190565b81101561164b570160200190565b801561159c576000190190565b61241561044d61044d9290565b61044d9061385561168561044d9460ff1690565b901c90565b908161388a61388561387584613870600261080a565b61172e565b61387f600261080a565b90611586565b6137fa565b92600060306138a161389b8361080a565b87613810565b536001600f60fb1b821a6138bd6138b78361080a565b88613810565b53806138d96138d087613870600261080a565b61387f8361080a565b915b61391a575b50506116856138ee9161080a565b036138f857505090565b61145861390460405190565b63e22e27eb60e01b8152928392600484016113b5565b90926139258261080a565b841115613993576f181899199a1a9b1b9c1cb0b131b232b360811b61394a600f61080a565b821690601082101561164b57839261396a6139879261398d941a60f81b90565b861a613976888c613810565b536139816004613834565b90613841565b94613827565b916138db565b926138e0565b634e487b7160e01b600052601260045260246000fd5b81156139b9570490565b613999565b6139c7816149c9565b906139d86001926105b1600161080a565b91806139e3846137fa565b936020018401905b6139f6575b50505090565b8115613a4c57613a309060001901926f181899199a1a9b1b9c1cb0b131b232b360811b600a82061a8453613a2a600a61080a565b906139af565b9081613a3f611685600061080a565b14613a4c579091816139eb565b6139f0565b613a5a8261213e565b6001600160a01b0381166001600160a01b03831614928315613a8d575b508215613a8357505090565b61044d9250612e68565b613a989193506114c2565b613aaa6001600160a01b03831661325f565b149138613a77565b613abe6114ce8261338d565b6114e9576000613aff613ad083613d9e565b613ae285611f47886004979697610817565b85613af5611f6684611f61886008610e90565b60a01c9285613dcc565b613b0e82611f86856009610817565b613b1983600a613e2d565b613b2483600b613e2d565b7f000000000000000000000000000000000000000000000000000000000000000090613b65613b54826002610e90565b612bbd84613b61836117cc565b0390565b613b7c613b756116e9600c6117cc565b600c611ecd565b9082526001600160a01b03168181600080516020615b6b833981519152602083a3600080516020615b6b8339815191528280a4565b61044d913691610c34565b6136fe61043f94612ad0606094989795613bdb608086019a6000870152565b6020850152565b9390613bee60126114b8565b613bfe61325f6104416000611393565b14613ce757613cbb613ccd93611a2c92613c97613cd398613c6e613c687f000000000000000000000000000000000000000000000000000000000000000095613c647f114ba586f27424819fdf1eac564faf22081abcab4f662a9e508c112ed1a7cbcf90565b9591565b90613bb1565b613c79612bff825190565b2090611a2c613c8760405190565b9485936020850193339285613bbc565b613ca2612bff825190565b2090613cad60405190565b938492602084019283612a84565b613cc6612bff825190565b2092613bb1565b90614b6b565b613ce361325f61044160126114b8565b1490565b6040516395e0712b60e01b8152600490fd5b61044d905b6001600160801b031690565b61044d9054613cf9565b613cfe61044d61044d9290565b613cfe61044d61044d926001600160801b031690565b9061082190613d21565b90613d4e61044d83614354565b811015613d8c5781613d8661216c92613d79613d736000600161044d98019501613d0a565b91613d14565b016001600160801b031690565b90613d37565b60405163580821e760e01b8152600490fd5b613da990600a614043565b613db761216c826009610817565b6001600160a01b0381169260a09190911c9190565b93919092613dd78290565b8103613e045750613de8600161080a565b8203613df957505061043f91614d2b565b909161043f93614c78565b919261043f94614b81565b61044d600160ff1b61080a565b61044d9061385561168561044d9490565b613e6e61043f926000613e67613e4c613e466008613834565b84613841565b92613e55613e0f565b90613e6060ff61080a565b1690613e1c565b9301610817565b90613e78826117cc565b1790611ecd565b6001600160801b03908116911601906001600160801b03821161159c57565b9190613eac61044d84614354565b613eb582611e2d565b1015613d8c5782613d8661200392613ed66000600161043f98019401613d0a565b90613e7f565b61044d9060801c613cfe565b61044d9054613edc565b600161044d91016001600160801b031690565b613f1d613f2a82613f1581613d0a565b928391613ee8565b036001600160801b031690565b91613f3c613f3784611e2d565b6115cf565b938490613f496000613d14565b6001600160801b0386165b6001600160801b0382161015613fa857613fa1613f5491613f9c613f8a61216c60018901613d86858c016001600160801b031690565b6116e6613f9684611e2d565b8c611631565b613ef2565b9050613f49565b50935093505050565b15613fb857565b60405162461bcd60e51b815260206004820152603460248201527f4269744d6170733a205468652073657420626974206265666f7265207468652060448201527334b73232bc103237b2b9b713ba1032bc34b9ba1760611b6064820152608490fd5b61044d9061402e61168561044d9460ff1690565b901b90565b61044d61044d61044d9260ff1690565b6000916140506008613834565b9061405b8282613841565b92839161408e61407c61216c60ff9361407460ff61080a565b169785610817565b8661408760ff61080a565b1890613e1c565b9081966000926140a06116858561080a565b11156140cd57505050506140c46140be6140c99493611fd89361401a565b94614f3e565b614033565b1790565b92979650929094505b6140f4906140ed6140e68761080a565b8211613fb1565b6000190190565b908161410561216c82888b01610817565b9061410f8761080a565b821161411d575050906140d6565b61413d919798506140c9965061414993506141439250946140c49561401a565b95614f3e565b91613834565b0360ff1690565b9160029261416161216c8286610e90565b61416e61216c8587610e90565b928082106142da576141906141838488610e90565b612bbd83613b61836117cc565b61419d61344b8688610e90565b60008181526001600160a01b038681169190851690600080516020615b6b83398151915290602090a36141d4612440846007610e90565b6141e2612440876007610e90565b9080806142d3575b156141fd575b5050505050505050600190565b15614261575050505061424e90611fd861421d61216c8561425497610e90565b6142487f000000000000000000000000000000000000000000000000000000000000000080926139af565b926139af565b90615361565b38808080808080806141f0565b949092949391936000146142c5575050506142c092611fd86142ba926142b561216c866142af7f000000000000000000000000000000000000000000000000000000000000000080956139af565b95610e90565b6139af565b906151e4565b614254565b909291936142c09550614f97565b50816141ea565b61145883916142e860405190565b63391434e360e21b8152938493600485016121be565b6143196135f261430e60116114b8565b612988846011612093565b907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e061434460405190565b600090a3565b61044d600c6117cc565b614387600061044d92614365600090565b500161437961437382613ee8565b91613d0a565b90036001600160801b031690565b611e2d565b6104dd9061080a565b6001600160a01b03909116815261044d93608082019390926143c591906143bb90613bdb565b604083019061438c565b606081840391015261057d565b9093926143ee6114ce826143e6600161080a565b86898761541b565b6144af57506144006104416000611393565b6001600160a01b038516148015614474575b8015614459575b614428579261043f9293615585565b6114588461443560405190565b633250574960e11b8152918291600483016001600160a01b03909116815260200190565b506001600160a01b0381166001600160a01b03851614614419565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166001600160a01b03851614614412565b84611458849260016144c060405190565b633f756b1760e01b815294859460048601614395565b61043f906012612093565b613ce36301ffc9a760e01b5b916001600160e01b03191690565b61453361450c61216c836002610e90565b7f0000000000000000000000000000000000000000000000000000000000000000906139af565b9061453e600061080a565b9061454d6127a6826008610e90565b93825b61455b61044d875190565b84101561457e576001906145726127d08689611631565b60a01c01930192614550565b9194509203905090614590600061080a565b825b8110156145b0576145a9614592916116e9866156fa565b9050614590565b50915050565b8181106145c1575050565b806145cf6000600193611b71565b016145b6565b9190918282106145e457505050565b61043f92916145f99091600052602060002090565b91820191016145b6565b90600160401b811161094a578161461b61043f935490565b908281556145d5565b600061043f91614603565b906000036109815761043f90614624565b9061464f6127a6836008610e90565b9060009061465c8261080a565b905b61466961044d855190565b82101561473b57906146a29161467f8287615778565b61469186611f86846009989598610817565b61469d8186600a6148af565b840190565b947f0000000000000000000000000000000000000000000000000000000000000000935b8681101561471d57806146e187611f47614718946004610817565b6146f181600d6157cd565b6157cd565b806001600160a01b03878116908b16600080516020615b6b8339815191528a80a460010190565b6146c6565b509450915061044d6147326146699260010190565b9291505061465e565b9361043f935061474d91506008610e90565b61462f565b9061477f61216c61478f92614765600090565b506000614778613e4c613e466008613834565b9501610817565b9161478a600061080a565b921690565b141590565b61044d600161080a565b906147ac6114ce8284612425565b6147b4575050565b6114586147c060405190565b63e2517d3f60e01b815292839260048401611a46565b61044d611fc09161043f946147e9600090565b506001600160a01b0390911660a09190911b6001600160a01b03191601926008610e90565b61044d6001600160a01b031961080a565b9092919261483b61044d61483161480e565b61398160a0613834565b8411614877576120039061043f9394614852600090565b506001600160a01b0390911660a09190911b6001600160a01b03191601916009610817565b6114588461488460405190565b631605cc3f60e11b81529182916004830190815260200190565b61044d9061402e61168561044d9490565b916148c36148bd6008613834565b83613841565b80926148cf60ff61080a565b1691610100918184016148e46116858561080a565b101561491e5750613e67613e6e9361491961043f979694614913600095613b6161490d60001990565b9361080a565b9061489e565b613e1c565b959491935061495e9061495790611fd86000199561494e6000614941838a613e1c565b970196613e6e8c89610817565b613b618861080a565b9560010190565b945b6149698461080a565b8111156149945761495761498e91614985856120038a87610817565b611fd88661080a565b94614960565b613e6e926149136149ae92613b6161043f9899959761080a565b92610817565b61044d6149c160036117cc565b6134fd614794565b6149d3600061080a565b907a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000006149f98161080a565b821015614b49575b506d04ee2d6d415b85acef8100000000614a1a8161080a565b821015614b27575b50662386f26fc10000614a348161080a565b821015614b05575b506305f5e100614a4b8161080a565b821015614ae3575b50612710614a608161080a565b821015614ac1575b50614a73606461080a565b811015614a9f575b614a88611685600a61080a565b1015614a915790565b61044d906105b1600161080a565b614ab0614abb91613a2a606461080a565b916105b1600261080a565b90614a7b565b614adc91613a2a614ad19261080a565b916105b1600461080a565b9038614a68565b614afe91613a2a614af39261080a565b916105b1600861080a565b9038614a53565b614b2091613a2a614b159261080a565b916105b1601061080a565b9038614a3c565b614b4291613a2a614b379261080a565b916105b1602061080a565b9038614a22565b614b6491613a2a614b599261080a565b916105b1604061080a565b9038614a01565b61044d91614b789161582b565b909291926158cb565b909392600a93614b918486613e2d565b614bc5828503926008976001600160a01b0390911660a085901b6001600160a01b0319160190611ec790611f61878b610e90565b614bd4600191611fd88361080a565b95868310614be6575b50505050505050565b614c42611fca85611fd893611fc5614c1a614c4898614c6c9d613b61614c126120039e6105b18d61080a565b9e8f90613e2d565b6001600160a01b038c1660a09190911b6001600160a01b03191601611fc061044d8585610e90565b9161080a565b6001600160a01b0390911660a09190911b6001600160a01b03191601916009610817565b38808080808080614bdd565b9190611f6161043f94614c92611ec7946105b1600161080a565b90614c9e82600a613e2d565b614cc66001600160a01b03871660a086901b6001600160a01b03191601612003846009610817565b6001600160a01b0390911660001990910160a01b6001600160a01b03191601936008610e90565b634e487b7160e01b600052603160045260246000fd5b80548015614d26576000190190614d23614d1d8383611e81565b90611b71565b55565b614ced565b9061043f91614d3e61044d826008610e90565b91614d4a611fce845490565b818103614d5a575b505050614d03565b614da492614d6e611f666120039387611e81565b614d7c81611ec78689611e81565b6001600160a01b0391821660a09490941b6001600160a01b0319169390930192166009610817565b388080614d52565b614db7610100611773565b7e01020903110a19042112290b311a3905412245134d2a550c5d32651b6d3a7560208201527f06264262237d468514804e8d2b95569d0d495ea533a966b11c886eb93bc176c960408201527f071727374353637324837e9b47af86c7155181ad4fd18ed32c9096db57d59ee360608201527f0e2e4a6a5f92a6be3498aae067ddb2eb1d5989b56fd7baf33ca0c2ee77e5caf760808201527fff0810182028303840444c545c646c7425617c847f8c949c48a4a8b087b8c0c860a08201527f16365272829aaec650acd0d28fdad4e22d6991bd97dfdcea58b4d6f29fede4f660c08201527ffe0f1f2f3f4b5b6b607b8b93a3a7b7bf357199c5abcfd9e168bcdee9b3f1ecf560e08201527ffd1e3e5a7a8aa2b670c4ced8bbe8f0f4fc3d79a1c3cde7effb78cce6facbf9f861010082015290565b61044d614dac565b61044d614eea565b61044d7e818283848586878898a8b8c8d8e8f929395969799a9b9d9e9faaeb6bedeeff61080a565b61241561044d61044d9260ff1690565b61044d9060f81c614f22565b614f92614f8461044d92614f50600090565b50614f7e614f74614f68614f62614ef2565b9361599b565b614f70614efa565b0290565b61398160f8613834565b90613810565b516001600160f81b03191690565b614f32565b909194614fa2600090565b50614fce7f000000000000000000000000000000000000000000000000000000000000000080966139af565b93600095614fdc600061080a565b86811015615173579786979860089795969790614ffc611fca8984610e90565b918961500d6001946134fd8661080a565b918a6150198482615778565b94909b61502c61168561158d8989611586565b1161510b57615083611fca8585611fc561507e61044d615093986150788f9d9b99615072611f6661509b9f61044d6150679161508c9f610e90565b92611f61868b610e90565b90611ea4565b84610e90565b614d03565b6134fd8661080a565b8d8c61481f565b898101930190565b9789918d915b905b6150b7575b50505050509796959493614fdc565b8b8482101561510557859383600080516020615b6b83398151915284936150e66150fc97611f47876004610817565b6001600160a01b0390811693169180a460010190565b8c908a926150a3565b506150a8565b9250509261511b908d9a939a0390565b98899003908161512c918c856159c1565b019061513982600a613e2d565b896151458982856147d6565b61514e91610e90565b546151588361080a565b61516491038a8361481f565b958601818a9789918d916150a1565b506151bf94965080611685946151a5615193611fd89461158d979c6139af565b611fd8846142b561216c866002610e90565b88106151d0575b50614248816142b561216c8b6002610e90565b116151c75750565b61043f906156fa565b6151de906142ba600161080a565b386151ac565b91906000926151f3600061080a565b925b8284101561535a5760086152098382610e90565b90615233611f6661521d611fca8785610e90565b9361522d600195611fd88761080a565b90611e81565b60018060a01b0381169060a01c87868a61524d84809c0190565b8a106153145761507e61044d61528295949387986152766105b195611f866152889b6009610817565b611fc5878b600a6148af565b96820190565b7f000000000000000000000000000000000000000000000000000000000000000091835b6152ba575b505050506151f5565b8181101561530f57615309816152d386936146ec600d90565b6152e28b611f47836004610817565b806001600160a01b03868116908a16600080516020615b6b8339815191528e80a460010190565b906152ac565b6152b1565b50508703905096879003858282019381858b81019b61533491600a6148af565b61533d91610e90565b546153478661080a565b900390615353936159c1565b8495615288565b9350505050565b9161536c600061080a565b825b8110156145b05761538561536e916116e9866156fa565b905061536c565b9050519061043f826104ac565b9060208282031261042d5761044d9161538c565b6001600160a01b0391821681529116602082015261044d9260808201929091906143c590612ad0565b3d156153f0576153e53d611773565b903d6000602084013e565b606090565b6001600160a01b03909116815261044d93608082019390926143c59190612ad090613bdb565b93919291600092823b6154306116858661080a565b111561557a576001936001968587905b615450575b505050505050505090565b61545d61044d858a611586565b8110156155755761547061298887610e87565b602061547b60405190565b918290630a85bd0160e11b825281878161549b8c898b33600486016153ad565b03925af160009181615545575b506155155750866154c1578691906001015b9091615440565b50508594506154ce6153d6565b906154e36116856154dd845190565b9261080a565b0361550d575090611458916154f760405190565b633f756b1760e01b8152948594600486016153f5565b805190602001fd5b896154ba918994939b9161552c575b509960010190565b905061553e630a85bd0160e11b6144ed565b1438615524565b61556791925060203d811161556e575b61555f8183610929565b810190615399565b90386154a8565b503d615555565b615445565b505050505050600190565b91816155c461559383613d9e565b6155a66000611f47886004979697610817565b856155ba611f6684611f6160089889610e90565b60a01c9289613dcc565b6155d2612440836007610e90565b1561569a5750506155e581611f96600a90565b6155f081600d6157cd565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416600080516020615b6b833981519152600080a45b7f0000000000000000000000000000000000000000000000000000000000000000615661614183846002610e90565b61566f61344b836002610e90565b60009081526001600160a01b039182169290911690600080516020615b6b83398151915290602090a3565b6156d491611fdd916156ca91611fca91611fc56001600160a01b038816600160a01b01611fc061044d8585610e90565b6134fd600161080a565b6001600160a01b03828116908416600080516020615b6b833981519152600080a4615632565b615704600d615a41565b9061573561572e615715600161080a565b6157208185876147d6565b613b61611fca856008610e90565b828461481f565b6001600160a01b03908116907f000000000000000000000000000000000000000000000000000000000000000016600080516020615b6b833981519152600080a4565b61579391611f61611f669261578b600090565b506008610e90565b6001600160a01b0381169160a09190911c90565b906001600160801b03906115f8565b906157c661044d61161792613d21565b82546157a7565b806157e46157da82613d0a565b6143796001613d14565b916157f1613cfe83613ee8565b6001600160801b038416146158195761043f936120038460016158149401613d37565b6157b6565b604051638acb5f2760e01b8152600490fd5b90600091615837825190565b615844611685604161080a565b0361586e5761586792506020820151906060604084015193015160001a90615aac565b9192909190565b50905061588b6158866158816000611393565b925190565b61080a565b909160029190565b634e487b7160e01b600052602160045260246000fd5b600411156158b357565b615893565b9061043f826158a9565b61044d9061080a565b6158d560006158b8565b6158de826158b8565b036158e7575050565b6158f160016158b8565b6158fa826158b8565b036159115760405163f645eedf60e01b8152600490fd5b61591b60026158b8565b615924826158b8565b0361595257611458615935836158c2565b60405163fce698f760e01b81529182916004830190815260200190565b61596561595f60036158b8565b916158b8565b1461596d5750565b6114589061597a60405190565b6335e2f38360e21b81529182916004830190815260200190565b1561042d57565b6159af6159a8600061080a565b8211615994565b6159bd81613b61600061080a565b1690565b91611f61611ec7929361043f956159d6600090565b506001600160a01b0390911660a09190911b6001600160a01b03191601936008610e90565b600161044d91036001600160801b031690565b906fffffffffffffffffffffffffffffffff199060801b6115f8565b90615a3a61044d61161792613d21565b8254615a0e565b9081615a4c81613ee8565b90615a59613cfe85613d0a565b6001600160801b03831614615a9a576001615a7661043f936159fb565b910193615a956000611f8684615a8f61216c828b613d37565b98613d37565b615a2a565b6040516375e52f4f60e01b8152600490fd5b9091615ab7846158c2565b615ae36116857f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061080a565b11615b565790615afc60209460009493612c3860405190565b838052039060015afa1561142457600051600091615b1983611393565b6001600160a01b0381166001600160a01b03841614615b425750615b3c8361080a565b91929190565b915091615b4e9061080a565b909160019190565b505050615b636000611393565b916003919056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202701fb4ac6bfe60b7631cc1bea381b78d9c385162634a0e7a45801e33efeef5464736f6c63430008190033608060405234601657604051603f601c8239603f90f35b600080fdfe6080604052600080fdfea26469706673582212207e52eb64f3b00738a15edb69d7ae1fbdb79ee4d572f95c49d49da01ad9561f1664736f6c634300081900338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400fdb2819cfe36df1a8e2df5d8d9cfe49bf1b7c55ce41ab4723ae144d927ae5245b