[ { "inputs": [ { "internalType": "contract IAIOracle", "name": "_aiOracle", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "contract IAIOracle", "name": "expected", "type": "address" }, { "internalType": "contract IAIOracle", "name": "found", "type": "address" } ], "name": "UnauthorizedCallbackSource", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "bytes", "name": "prompt", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "AigcData", "type": "event" }, { "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": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "prompt", "type": "string" } ], "name": "NFTMinted", "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": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nestedRequestId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "prompt", "type": "string" } ], "name": "promptRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "input", "type": "string" }, { "indexed": false, "internalType": "string", "name": "output", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "promptsUpdated", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "prompt", "type": "bytes" }, { "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "addAigcData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "aiOracle", "outputs": [ { "internalType": "contract IAIOracle", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "internalType": "bytes", "name": "output", "type": "bytes" }, { "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "aiOracleCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "aigcData", "outputs": [ { "internalType": "bytes", "name": "fortune", "type": "bytes" }, { "internalType": "bytes", "name": "imageCID", "type": "bytes" }, { "internalType": "address", "name": "author", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "prompt", "type": "string" } ], "name": "calculateAIResult", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "callbackGasLimit", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "modelId", "type": "uint256" } ], "name": "estimateFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "string", "name": "prompt", "type": "string" } ], "name": "getAIResult", "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": "address", "name": "owner", "type": "address" } ], "name": "getOwnedTokens", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "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": "uint256", "name": "requestId", "type": "uint256" } ], "name": "isFinalized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "llamaId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "ownedTokens", "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": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "promptToTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "prompts", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "requestOutputs", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "requests", "outputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "bytes", "name": "input", "type": "bytes" }, { "internalType": "bytes", "name": "output", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sdId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "uint64", "name": "gasLimit", "type": "uint64" } ], "name": "setCallbackGasLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenIdToPrompt", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "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": "bytes", "name": "prompt", "type": "bytes" }, { "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60a060405234801561001057600080fd5b50604051612f0f380380612f0f83398101604081905261002f9161012e565b60408051808201825260128152714f6e2d636861696e204149204f7261636c6560701b602080830191909152825180840190935260038352624f414f60e81b908301526001600160a01b03831660805290600061008c83826101fd565b50600161009982826101fd565b5050600b80546001600160a01b03191633178155600c5550506101f7600d819055600f6020527f0db0e9d5a07148aa3e0acc10f721b78526b53a3f4f3d07794be76568de7347c580546001600160401b0319908116624c4b40179091556000919091527f87f739e929d7e291bc6d7485affd847354810e9e1ce72a9c290de92663c527d380549091166207a1201790556102bb565b60006020828403121561014057600080fd5b81516001600160a01b038116811461015757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018857607f821691505b6020821081036101a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f857806000526020600020601f840160051c810160208510156101d55750805b601f840160051c820191505b818110156101f557600081556001016101e1565b50505b505050565b81516001600160401b038111156102165761021661015e565b61022a816102248454610174565b846101ae565b6020601f82116001811461025e57600083156102465750848201515b600019600385901b1c1916600184901b1784556101f5565b600084815260208120601f198516915b8281101561028e578785015182556020948501946001909201910161026e565b50848210156102ac5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b608051612c0f6103006000396000818161039e0152818161086201528181610a42015281816110070152818161112b01528181611168015261129f0152612c0f6000f3fe6080604052600436106102045760003560e01c806381d12c5811610118578063aa2e084e116100a0578063c87b56dd1161006f578063c87b56dd1461064f578063d9d616551461066f578063de8f50a11461069c578063e149f036146106c3578063e985e9c5146106e357600080fd5b8063aa2e084e146105b3578063aea30507146105eb578063b03478141461060f578063b88d4fde1461062f57600080fd5b806395d89b41116100e757806395d89b411461053f578063964eb50e14610554578063a22cb4651461056a578063a26777541461058a578063aa22cf011461059d57600080fd5b806381d12c58146104a05780638a86a6c3146104d05780638cbc52d9146104ff5780638da5cb5b1461051f57600080fd5b80632c6296b71161019b57806342842e0e1161016a57806342842e0e1461040057806362349de9146104205780636352211e1461044057806370a0823114610460578063813d1e151461048057600080fd5b80632c6296b71461036c57806331b221cd1461038c57806333727c4d146103c05780633d837bf8146103e057600080fd5b8063127e8e4d116101d7578063127e8e4d146102ba57806318160ddd146102e857806320f38718146102fe57806323b872dd1461034c57600080fd5b806301ffc9a71461020957806306fdde031461023e578063081812fc14610260578063095ea7b314610298575b600080fd5b34801561021557600080fd5b50610229610224366004611f2a565b610703565b60405190151581526020015b60405180910390f35b34801561024a57600080fd5b50610253610764565b6040516102359190611f9e565b34801561026c57600080fd5b5061028061027b366004611fb1565b6107f6565b6040516001600160a01b039091168152602001610235565b3480156102a457600080fd5b506102b86102b3366004611fe6565b61081f565b005b3480156102c657600080fd5b506102da6102d5366004611fb1565b61082e565b604051908152602001610235565b3480156102f457600080fd5b506102da60065481565b34801561030a57600080fd5b50610334610319366004611fb1565b600f602052600090815260409020546001600160401b031681565b6040516001600160401b039091168152602001610235565b34801561035857600080fd5b506102b8610367366004612010565b6108d4565b34801561037857600080fd5b50610253610387366004612095565b610964565b34801561039857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156103cc57600080fd5b506102296103db366004611fb1565b610a29565b3480156103ec57600080fd5b506102536103fb366004611fb1565b610ab5565b34801561040c57600080fd5b506102b861041b366004612010565b610b4f565b34801561042c57600080fd5b5061025361043b366004611fb1565b610b6f565b34801561044c57600080fd5b5061028061045b366004611fb1565b610b88565b34801561046c57600080fd5b506102da61047b3660046120e0565b610b93565b34801561048c57600080fd5b506102b861049b3660046120fb565b610bdb565b3480156104ac57600080fd5b506104c06104bb366004611fb1565b610c51565b6040516102359493929190612137565b3480156104dc57600080fd5b506104f06104eb366004612229565b610d94565b6040516102359392919061225d565b34801561050b57600080fd5b5061025361051a36600461229b565b610eda565b34801561052b57600080fd5b50600b54610280906001600160a01b031681565b34801561054b57600080fd5b50610253610f0f565b34801561056057600080fd5b506102da600c5481565b34801561057657600080fd5b506102b8610585366004612303565b610f1e565b6102da61059836600461232f565b610f29565b3480156105a957600080fd5b506102da600d5481565b3480156105bf57600080fd5b506102da6105ce366004612229565b8051602081830181018051600a8252928201919093012091525481565b3480156105f757600080fd5b506102b8610606366004612370565b50505050505050565b34801561061b57600080fd5b506102b861062a36600461241d565b611120565b34801561063b57600080fd5b506102b861064a36600461249a565b61153f565b34801561065b57600080fd5b5061025361066a366004611fb1565b611556565b34801561067b57600080fd5b5061068f61068a3660046120e0565b611708565b6040516102359190612501565b3480156106a857600080fd5b506102296106b7366004612544565b60009695505050505050565b3480156106cf57600080fd5b506102da6106de366004611fe6565b611774565b3480156106ef57600080fd5b506102296106fe3660046125e7565b6117a5565b60006001600160e01b031982166301ffc9a760e01b148061073457506001600160e01b0319821663da0d82f560e01b145b8061074f57506001600160e01b03198216635b5e139f60e01b145b8061075e575061075e826117d3565b92915050565b6060600080546107739061261a565b80601f016020809104026020016040519081016040528092919081815260200182805461079f9061261a565b80156107ec5780601f106107c1576101008083540402835291602001916107ec565b820191906000526020600020905b8154815290600101906020018083116107cf57829003601f168201915b5050505050905090565b600061080182611823565b506000828152600460205260409020546001600160a01b031661075e565b61082a82823361185c565b5050565b6000818152600f6020526040808220549051620e1d8d60e41b8152600481018490526001600160401b0390911660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062e1d8d090604401602060405180830381865afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190612654565b6001600160a01b03821661090357604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610910838333611869565b9050836001600160a01b0316816001600160a01b03161461095e576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016108fa565b50505050565b606060106000858152602001908152602001600020838360405161098992919061266d565b908152602001604051809103902080546109a29061261a565b80601f01602080910402602001604051908101604052809291908181526020018280546109ce9061261a565b8015610a1b5780601f106109f057610100808354040283529160200191610a1b565b820191906000526020600020905b8154815290600101906020018083116109fe57829003601f168201915b505050505090509392505050565b6040516333727c4d60e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e919061267d565b60086020526000908152604090208054610ace9061261a565b80601f0160208091040260200160405190810160405280929190818152602001828054610afa9061261a565b8015610b475780601f10610b1c57610100808354040283529160200191610b47565b820191906000526020600020905b815481529060010190602001808311610b2a57829003601f168201915b505050505081565b610b6a8383836040518060200160405280600081525061153f565b505050565b60116020526000908152604090208054610ace9061261a565b600061075e82611823565b60006001600160a01b038216610bbf576040516322718ad960e21b8152600060048201526024016108fa565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314610c225760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b60448201526064016108fa565b6000918252600f6020526040909120805467ffffffffffffffff19166001600160401b03909216919091179055565b600e602052600090815260409020805460018201546002830180546001600160a01b03909316939192610c839061261a565b80601f0160208091040260200160405190810160405280929190818152602001828054610caf9061261a565b8015610cfc5780601f10610cd157610100808354040283529160200191610cfc565b820191906000526020600020905b815481529060010190602001808311610cdf57829003601f168201915b505050505090806003018054610d119061261a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3d9061261a565b8015610d8a5780601f10610d5f57610100808354040283529160200191610d8a565b820191906000526020600020905b815481529060010190602001808311610d6d57829003601f168201915b5050505050905084565b8051602081830181018051600782529282019190930120915280548190610dba9061261a565b80601f0160208091040260200160405190810160405280929190818152602001828054610de69061261a565b8015610e335780601f10610e0857610100808354040283529160200191610e33565b820191906000526020600020905b815481529060010190602001808311610e1657829003601f168201915b505050505090806001018054610e489061261a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e749061261a565b8015610ec15780601f10610e9657610100808354040283529160200191610ec1565b820191906000526020600020905b815481529060010190602001808311610ea457829003601f168201915b505050600290930154919250506001600160a01b031683565b6010602090815260009283526040909220815180830184018051928152908401929093019190912091528054610ace9061261a565b6060600180546107739061261a565b61082a338383611962565b60008083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600c5494955093610f739350915061082e9050565b90506000610f82600d5461082e565b9050610f8e81836126b0565b3411610fdc5760405162461bcd60e51b815260206004820152601f60248201527f466f7274756e6554656c6c65723a20496e73756666696369656e74206665650060448201526064016108fa565b600c546000818152600f6020526040808220549051632dca9c0360e11b815291926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692635b95380692879261104c9290918a9130916001600160401b0316906004016126c3565b60206040518083038185885af115801561106a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061108f9190612654565b905061109b8787611a01565b6000818152600e60205260409020600281016110b7868261275c565b5080546001600160a01b031916339081178255600c54600183018190556040517f483692d839733bfb07b2d29b4df6fbf290ff389290da74e018a21180f1269aab9261110d92869260009291908e908e90612843565b60405180910390a1509695505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016811461119d5760405163432e033760e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152821660248201526044016108fa565b6000868152600e6020526040902080546001600160a01b03166111fb5760405162461bcd60e51b81526020600482015260166024820152751c995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016108fa565b6003810161120a868883612883565b50858560106000846001015481526020019081526020016000208360020160405161123591906129b4565b90815260200160405180910390209182611250929190612883565b5060008390036114a957858560078360020160405161126f91906129b4565b9081526040519081900360200190209161128a919083612883565b506000611298600d5461082e565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031683600d548b8b30600f6000600d54815260200190815260200160002060009054906101000a90046001600160401b03168a60020160405160200161130b9190612a42565b60408051601f198184030181529082905261132d969594939291602401612a55565b60408051601f198184030181529181526020820180516001600160e01b0316632dca9c0360e11b179052516113629190612aac565b60006040518083038185875af1925050503d806000811461139f576040519150601f19603f3d011682016040523d82523d6000602084013e6113a4565b606091505b5091509150816113f65760405162461bcd60e51b815260206004820152601f60248201527f6661696c656420746f2063616c6c206e657374656420696e666572656e63650060448201526064016108fa565b60008180602001905181019061140c9190612654565b6000818152600e602052604090209091506002810161142c8b8d83612883565b5080546001600160a01b031916339081178255600d5460018301819055604080518f81526020810186905290810192909252606082015260a0608082018190526000908201527f483692d839733bfb07b2d29b4df6fbf290ff389290da74e018a21180f1269aab9060c00160405180910390a150505050506114ec565b60006114b784860186612229565b905086866007836040516114cb9190612aac565b908152602001604051809103902060010191826114e9929190612883565b50505b7faf2b2381ddcb18a2b18a7826186fd216acdd9c852a8c7a9a49e7eab127f96ccf878260010154836002018989898960405161152e9796959493929190612ac8565b60405180910390a150505050505050565b61154a8484846108d4565b61095e84848484611b82565b606061156182611823565b506000828152600860205260408120805461157b9061261a565b80601f01602080910402602001604051908101604052809291908181526020018280546115a79061261a565b80156115f45780601f106115c9576101008083540402835291602001916115f4565b820191906000526020600020905b8154815290600101906020018083116115d757829003601f168201915b50505050509050600060078260405161160d9190612aac565b908152602001604051809103902060010180546116299061261a565b80601f01602080910402602001604051908101604052809291908181526020018280546116559061261a565b80156116a25780601f10611677576101008083540402835291602001916116a2565b820191906000526020600020905b81548152906001019060200180831161168557829003601f168201915b505060408051808201909152601581527468747470733a2f2f697066732e696f2f697066732f60581b60208201529394506116dc92505050565b80826040516020016116ef929190612b1d565b6040516020818303038152906040525b95945050505050565b6001600160a01b03811660009081526009602090815260409182902080548351818402810184019094528084526060939283018282801561176857602002820191906000526020600020905b815481526020019060010190808311611754575b50505050509050919050565b6009602052816000526040600020818154811061179057600080fd5b90600052602060002001600091509150505481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061180457506001600160e01b03198216635b5e139f60e01b145b8061075e57506301ffc9a760e01b6001600160e01b031983161461075e565b6000818152600260205260408120546001600160a01b03168061075e57604051637e27328960e01b8152600481018490526024016108fa565b610b6a8383836001611cab565b6000828152600260205260408120546001600160a01b039081169083161561189657611896818486611db1565b6001600160a01b038116156118d4576118b3600085600080611cab565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611903576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661199457604051630b61174360e31b81526001600160a01b03831660048201526024016108fa565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600a8282604051611a1392919061266d565b908152602001604051809103902054600014611a715760405162461bcd60e51b815260206004820152601860248201527f70726f6d707420697320616c7265616479206d696e746564000000000000000060448201526064016108fa565b600654600a8383604051611a8692919061266d565b9081526040805160209281900383019020929092556006546000908152600890915220611ab4828483612883565b503360078383604051611ac892919061266d565b908152604080516020928190038301902060020180546001600160a01b0319166001600160a01b039490941693909317909255336000818152600983529283206006805482546001810184559286529390942001919091559054611b2c9190611e15565b7f9e0bfaf38878aad3ebd19b8c8065288eb130f0499a7378363d4652515588ac966006548383604051611b6193929190612b4c565b60405180910390a160068054906000611b7983612b66565b91905055505050565b6001600160a01b0383163b1561095e57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611bc4903390889087908790600401612b7f565b6020604051808303816000875af1925050508015611bff575060408051601f3d908101601f19168201909252611bfc91810190612bbc565b60015b611c68573d808015611c2d576040519150601f19603f3d011682016040523d82523d6000602084013e611c32565b606091505b508051600003611c6057604051633250574960e11b81526001600160a01b03851660048201526024016108fa565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611ca457604051633250574960e11b81526001600160a01b03851660048201526024016108fa565b5050505050565b8080611cbf57506001600160a01b03821615155b15611d81576000611ccf84611823565b90506001600160a01b03831615801590611cfb5750826001600160a01b0316816001600160a01b031614155b8015611d0e5750611d0c81846117a5565b155b15611d375760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016108fa565b8115611d7f5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611dbc838383611e2f565b610b6a576001600160a01b038316611dea57604051637e27328960e01b8152600481018290526024016108fa565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016108fa565b61082a828260405180602001604052806000815250611e95565b60006001600160a01b03831615801590611e8d5750826001600160a01b0316846001600160a01b03161480611e695750611e6984846117a5565b80611e8d57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b611e9f8383611eac565b610b6a6000848484611b82565b6001600160a01b038216611ed657604051633250574960e11b8152600060048201526024016108fa565b6000611ee483836000611869565b90506001600160a01b03811615610b6a576040516339e3563760e11b8152600060048201526024016108fa565b6001600160e01b031981168114611f2757600080fd5b50565b600060208284031215611f3c57600080fd5b8135611f4781611f11565b9392505050565b60005b83811015611f69578181015183820152602001611f51565b50506000910152565b60008151808452611f8a816020860160208601611f4e565b601f01601f19169290920160200192915050565b602081526000611f476020830184611f72565b600060208284031215611fc357600080fd5b5035919050565b80356001600160a01b0381168114611fe157600080fd5b919050565b60008060408385031215611ff957600080fd5b61200283611fca565b946020939093013593505050565b60008060006060848603121561202557600080fd5b61202e84611fca565b925061203c60208501611fca565b929592945050506040919091013590565b60008083601f84011261205f57600080fd5b5081356001600160401b0381111561207657600080fd5b60208301915083602082850101111561208e57600080fd5b9250929050565b6000806000604084860312156120aa57600080fd5b8335925060208401356001600160401b038111156120c757600080fd5b6120d38682870161204d565b9497909650939450505050565b6000602082840312156120f257600080fd5b611f4782611fca565b6000806040838503121561210e57600080fd5b8235915060208301356001600160401b038116811461212c57600080fd5b809150509250929050565b60018060a01b038516815283602082015260806040820152600061215e6080830185611f72565b82810360608401526121708185611f72565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6000806001600160401b038411156121ab576121ab61217b565b50604051601f19601f85018116603f011681018181106001600160401b03821117156121d9576121d961217b565b6040528381529050808284018510156121f157600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261221a57600080fd5b611f4783833560208501612191565b60006020828403121561223b57600080fd5b81356001600160401b0381111561225157600080fd5b611e8d84828501612209565b6060815260006122706060830186611f72565b82810360208401526122828186611f72565b91505060018060a01b0383166040830152949350505050565b600080604083850312156122ae57600080fd5b8235915060208301356001600160401b038111156122cb57600080fd5b8301601f810185136122dc57600080fd5b6122eb85823560208401612191565b9150509250929050565b8015158114611f2757600080fd5b6000806040838503121561231657600080fd5b61231f83611fca565b9150602083013561212c816122f5565b6000806020838503121561234257600080fd5b82356001600160401b0381111561235857600080fd5b6123648582860161204d565b90969095509350505050565b60008060008060008060006080888a03121561238b57600080fd5b8735965060208801356001600160401b038111156123a857600080fd5b6123b48a828b0161204d565b90975095505060408801356001600160401b038111156123d357600080fd5b6123df8a828b0161204d565b90955093505060608801356001600160401b038111156123fe57600080fd5b61240a8a828b0161204d565b989b979a50959850939692959293505050565b60008060008060006060868803121561243557600080fd5b8535945060208601356001600160401b0381111561245257600080fd5b61245e8882890161204d565b90955093505060408601356001600160401b0381111561247d57600080fd5b6124898882890161204d565b969995985093965092949392505050565b600080600080608085870312156124b057600080fd5b6124b985611fca565b93506124c760208601611fca565b92506040850135915060608501356001600160401b038111156124e957600080fd5b6124f587828801612209565b91505092959194509250565b602080825282518282018190526000918401906040840190835b8181101561253957835183526020938401939092019160010161251b565b509095945050505050565b6000806000806000806060878903121561255d57600080fd5b86356001600160401b0381111561257357600080fd5b61257f89828a0161204d565b90975095505060208701356001600160401b0381111561259e57600080fd5b6125aa89828a0161204d565b90955093505060408701356001600160401b038111156125c957600080fd5b6125d589828a0161204d565b979a9699509497509295939492505050565b600080604083850312156125fa57600080fd5b61260383611fca565b915061261160208401611fca565b90509250929050565b600181811c9082168061262e57607f821691505b60208210810361264e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561266657600080fd5b5051919050565b8183823760009101908152919050565b60006020828403121561268f57600080fd5b8151611f47816122f5565b634e487b7160e01b600052601160045260246000fd5b8082018082111561075e5761075e61269a565b84815260a0602082015260006126dc60a0830186611f72565b6001600160a01b03949094166040830152506001600160401b039190911660608201528082036080909101526000815260200192915050565b601f821115610b6a57806000526020600020601f840160051c8101602085101561273c5750805b601f840160051c820191505b81811015611ca45760008155600101612748565b81516001600160401b038111156127755761277561217b565b61278981612783845461261a565b84612715565b6020601f8211600181146127bd57600083156127a55750848201515b600019600385901b1c1916600184901b178455611ca4565b600084815260208120601f198516915b828110156127ed57878501518255602094850194600190920191016127cd565b508482101561280b5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b86815285602082015260018060a01b038516604082015283606082015260a06080820152600061287760a08301848661281a565b98975050505050505050565b6001600160401b0383111561289a5761289a61217b565b6128ae836128a8835461261a565b83612715565b6000601f8411600181146128e257600085156128ca5750838201355b600019600387901b1c1916600186901b178355611ca4565b600083815260209020601f19861690835b8281101561291357868501358255602094850194600190920191016128f3565b50868210156129305760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000815461294f8161261a565b600182168015612966576001811461297b576129ab565b60ff19831686528115158202860193506129ab565b84600052602060002060005b838110156129a357815488820152600190910190602001612987565b505081860193505b50505092915050565b6000611f478284612942565b600081546129cd8161261a565b8085526001821680156129e75760018114612a03576129ab565b60ff1983166020870152602082151560051b87010193506129ab565b84600052602060002060005b83811015612a315781546020828a010152600182019150602081019050612a0f565b870160200194505050505092915050565b602081526000611f4760208301846129c0565b86815260a060208201526000612a6f60a08301878961281a565b6001600160a01b03861660408401526001600160401b03851660608401528281036080840152612a9f8185611f72565b9998505050505050505050565b60008251612abe818460208701611f4e565b9190910192915050565b87815286602082015260a060408201526000612ae760a08301886129c0565b8281036060840152612afa81878961281a565b90508281036080840152612b0f81858761281a565b9a9950505050505050505050565b60008351612b2f818460208801611f4e565b835190830190612b43818360208801611f4e565b01949350505050565b8381526040602082015260006116ff60408301848661281a565b600060018201612b7857612b7861269a565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612bb290830184611f72565b9695505050505050565b600060208284031215612bce57600080fd5b8151611f4781611f1156fea264697066735822122096456daec142580a389138c2eb89690f74c466d0f75f723c2b8f142bcd815db464736f6c634300081a00330000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0
0x0000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0
----Decoded View------------Arg [0] : _aiOracle (address): 0x0A0f4321214BB6C7811dD8a71cF587bdaF03f0A0
----Encoded View------------Arg [0] : 0x0000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0