{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721A",
  "sourceName": "contracts/ERC721A.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ApprovalCallerNotOwnerNorApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ApprovalQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ApprovalToCurrentOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ApproveToCaller",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BalanceQueryForZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OwnerIndexOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OwnerQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TokenIndexOutOfBounds",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferCallerNotOwnerNorApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferFromIncorrectOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferToNonERC721ReceiverImplementer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferToZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "URIQueryForNonexistentToken",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620014d0380380620014d083398101604081905262000034916200011f565b600262000042838262000218565b50600362000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6111dc80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb46514610212578063b88d4fde14610225578063c87b56dd14610238578063e985e9c51461024b57600080fd5b80634f6ccce7146101d15780636352211e146101e457806370a08231146101f757806395d89b411461020a57600080fd5b806318160ddd116100d357806318160ddd1461018257806323b872dd146101985780632f745c59146101ab57806342842e0e146101be57600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461016d575b600080fd5b610118610113366004610d93565b610287565b60405190151581526020015b60405180910390f35b6101356102d9565b6040516101249190610e00565b610155610150366004610e13565b61036b565b6040516001600160a01b039091168152602001610124565b61018061017b366004610e48565b6103af565b005b600154600054035b604051908152602001610124565b6101806101a6366004610e72565b61043c565b61018a6101b9366004610e48565b610447565b6101806101cc366004610e72565b610533565b61018a6101df366004610e13565b61054e565b6101556101f2366004610e13565b6105ef565b61018a610205366004610eae565b610601565b610135610650565b610180610220366004610ec9565b61065f565b610180610233366004610f1b565b6106f4565b610135610246366004610e13565b61072e565b610118610259366004610ff7565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102b857506001600160e01b03198216635b5e139f60e01b145b806102d357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546102e89061102a565b80601f01602080910402602001604051908101604052809291908181526020018280546103149061102a565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b6000610376826107bf565b610393576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006103ba826105ef565b9050806001600160a01b0316836001600160a01b0316036103ee5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061040e575061040c8133610259565b155b1561042c576040516367d9dca160e11b815260040160405180910390fd5b6104378383836107ea565b505050565b610437838383610846565b600061045283610601565b8210610471576040516306ed618760e11b815260040160405180910390fd5b600080549080805b8381101561010057600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff1615801592820192909252906104e1575061052b565b80516001600160a01b0316156104f657805192505b876001600160a01b0316836001600160a01b03160361052957868403610522575093506102d392505050565b6001909301925b505b600101610479565b610437838383604051806020016040528060008152506106f4565b6000805481805b828110156105d557600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906105cc578583036105c55750949350505050565b6001909201915b50600101610555565b506040516329c8c00760e21b815260040160405180910390fd5b60006105fa82610a5b565b5192915050565b60006001600160a01b03821661062a576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6060600380546102e89061102a565b336001600160a01b038316036106885760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6106ff848484610846565b61070b84848484610b76565b610728576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060610739826107bf565b61075657604051630a14c4b560e41b815260040160405180910390fd5b600061076d60408051602081019091526000815290565b9050805160000361078d57604051806020016040528060008152506107b8565b8061079784610c79565b6040516020016107a8929190611064565b6040516020818303038152906040525b9392505050565b60008054821080156102d3575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061085182610a5b565b80519091506000906001600160a01b0316336001600160a01b0316148061087f5750815161087f9033610259565b8061089a57503361088f8461036b565b6001600160a01b0316145b9050806108ba57604051632ce44b5f60e11b815260040160405180910390fd5b846001600160a01b031682600001516001600160a01b0316146108ef5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b03841661091657604051633a954ecd60e21b815260040160405180910390fd5b61092660008484600001516107ea565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b429092169190910217909255908601808352912054909116610a1257600054811015610a12578251600082815260046020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b6040805160608101825260008082526020820181905291810182905290548290811015610b5d57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff16151591810182905290610b5b5780516001600160a01b031615610af1579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215610b56579392505050565b610af1565b505b604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b0384163b15610c6d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba9033908990889088906004016110a3565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf2918101906110e0565b60015b610c53573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4b576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c71565b5060015b949350505050565b606081600003610ca05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610cca5780610cb481611113565b9150610cc39050600a83611142565b9150610ca4565b60008167ffffffffffffffff811115610ce557610ce5610f05565b6040519080825280601f01601f191660200182016040528015610d0f576020820181803683370190505b5090505b8415610c7157610d24600183611156565b9150610d31600a86611169565b610d3c90603061117d565b60f81b818381518110610d5157610d51611190565b60200101906001600160f81b031916908160001a905350610d73600a86611142565b9450610d13565b6001600160e01b031981168114610d9057600080fd5b50565b600060208284031215610da557600080fd5b81356107b881610d7a565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006107b86020830184610dd4565b600060208284031215610e2557600080fd5b5035919050565b80356001600160a01b0381168114610e4357600080fd5b919050565b60008060408385031215610e5b57600080fd5b610e6483610e2c565b946020939093013593505050565b600080600060608486031215610e8757600080fd5b610e9084610e2c565b9250610e9e60208501610e2c565b9150604084013590509250925092565b600060208284031215610ec057600080fd5b6107b882610e2c565b60008060408385031215610edc57600080fd5b610ee583610e2c565b915060208301358015158114610efa57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f3157600080fd5b610f3a85610e2c565b9350610f4860208601610e2c565b925060408501359150606085013567ffffffffffffffff80821115610f6c57600080fd5b818701915087601f830112610f8057600080fd5b813581811115610f9257610f92610f05565b604051601f8201601f19908116603f01168101908382118183101715610fba57610fba610f05565b816040528281528a6020848701011115610fd357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561100a57600080fd5b61101383610e2c565b915061102160208401610e2c565b90509250929050565b600181811c9082168061103e57607f821691505b60208210810361105e57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611076818460208801610db0565b83519083019061108a818360208801610db0565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d690830184610dd4565b9695505050505050565b6000602082840312156110f257600080fd5b81516107b881610d7a565b634e487b7160e01b600052601160045260246000fd5b600060018201611125576111256110fd565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111515761115161112c565b500490565b818103818111156102d3576102d36110fd565b6000826111785761117861112c565b500690565b808201808211156102d3576102d36110fd565b634e487b7160e01b600052603260045260246000fdfea26469706673582212201e884a5d965bbd50c09c3acd216d27550d635c78fb09d08d9c644e3fa5bc9bfa64736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb46514610212578063b88d4fde14610225578063c87b56dd14610238578063e985e9c51461024b57600080fd5b80634f6ccce7146101d15780636352211e146101e457806370a08231146101f757806395d89b411461020a57600080fd5b806318160ddd116100d357806318160ddd1461018257806323b872dd146101985780632f745c59146101ab57806342842e0e146101be57600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461016d575b600080fd5b610118610113366004610d93565b610287565b60405190151581526020015b60405180910390f35b6101356102d9565b6040516101249190610e00565b610155610150366004610e13565b61036b565b6040516001600160a01b039091168152602001610124565b61018061017b366004610e48565b6103af565b005b600154600054035b604051908152602001610124565b6101806101a6366004610e72565b61043c565b61018a6101b9366004610e48565b610447565b6101806101cc366004610e72565b610533565b61018a6101df366004610e13565b61054e565b6101556101f2366004610e13565b6105ef565b61018a610205366004610eae565b610601565b610135610650565b610180610220366004610ec9565b61065f565b610180610233366004610f1b565b6106f4565b610135610246366004610e13565b61072e565b610118610259366004610ff7565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806102b857506001600160e01b03198216635b5e139f60e01b145b806102d357506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546102e89061102a565b80601f01602080910402602001604051908101604052809291908181526020018280546103149061102a565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b6000610376826107bf565b610393576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006103ba826105ef565b9050806001600160a01b0316836001600160a01b0316036103ee5760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161480159061040e575061040c8133610259565b155b1561042c576040516367d9dca160e11b815260040160405180910390fd5b6104378383836107ea565b505050565b610437838383610846565b600061045283610601565b8210610471576040516306ed618760e11b815260040160405180910390fd5b600080549080805b8381101561010057600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff1615801592820192909252906104e1575061052b565b80516001600160a01b0316156104f657805192505b876001600160a01b0316836001600160a01b03160361052957868403610522575093506102d392505050565b6001909301925b505b600101610479565b610437838383604051806020016040528060008152506106f4565b6000805481805b828110156105d557600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906105cc578583036105c55750949350505050565b6001909201915b50600101610555565b506040516329c8c00760e21b815260040160405180910390fd5b60006105fa82610a5b565b5192915050565b60006001600160a01b03821661062a576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6060600380546102e89061102a565b336001600160a01b038316036106885760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6106ff848484610846565b61070b84848484610b76565b610728576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060610739826107bf565b61075657604051630a14c4b560e41b815260040160405180910390fd5b600061076d60408051602081019091526000815290565b9050805160000361078d57604051806020016040528060008152506107b8565b8061079784610c79565b6040516020016107a8929190611064565b6040516020818303038152906040525b9392505050565b60008054821080156102d3575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061085182610a5b565b80519091506000906001600160a01b0316336001600160a01b0316148061087f5750815161087f9033610259565b8061089a57503361088f8461036b565b6001600160a01b0316145b9050806108ba57604051632ce44b5f60e11b815260040160405180910390fd5b846001600160a01b031682600001516001600160a01b0316146108ef5760405162a1148160e81b815260040160405180910390fd5b6001600160a01b03841661091657604051633a954ecd60e21b815260040160405180910390fd5b61092660008484600001516107ea565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b429092169190910217909255908601808352912054909116610a1257600054811015610a12578251600082815260046020908152604090912080549186015167ffffffffffffffff16600160a01b026001600160e01b03199092166001600160a01b03909316929092171790555b5082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b6040805160608101825260008082526020820181905291810182905290548290811015610b5d57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff16151591810182905290610b5b5780516001600160a01b031615610af1579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215610b56579392505050565b610af1565b505b604051636f96cda160e11b815260040160405180910390fd5b60006001600160a01b0384163b15610c6d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610bba9033908990889088906004016110a3565b6020604051808303816000875af1925050508015610bf5575060408051601f3d908101601f19168201909252610bf2918101906110e0565b60015b610c53573d808015610c23576040519150601f19603f3d011682016040523d82523d6000602084013e610c28565b606091505b508051600003610c4b576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c71565b5060015b949350505050565b606081600003610ca05750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610cca5780610cb481611113565b9150610cc39050600a83611142565b9150610ca4565b60008167ffffffffffffffff811115610ce557610ce5610f05565b6040519080825280601f01601f191660200182016040528015610d0f576020820181803683370190505b5090505b8415610c7157610d24600183611156565b9150610d31600a86611169565b610d3c90603061117d565b60f81b818381518110610d5157610d51611190565b60200101906001600160f81b031916908160001a905350610d73600a86611142565b9450610d13565b6001600160e01b031981168114610d9057600080fd5b50565b600060208284031215610da557600080fd5b81356107b881610d7a565b60005b83811015610dcb578181015183820152602001610db3565b50506000910152565b60008151808452610dec816020860160208601610db0565b601f01601f19169290920160200192915050565b6020815260006107b86020830184610dd4565b600060208284031215610e2557600080fd5b5035919050565b80356001600160a01b0381168114610e4357600080fd5b919050565b60008060408385031215610e5b57600080fd5b610e6483610e2c565b946020939093013593505050565b600080600060608486031215610e8757600080fd5b610e9084610e2c565b9250610e9e60208501610e2c565b9150604084013590509250925092565b600060208284031215610ec057600080fd5b6107b882610e2c565b60008060408385031215610edc57600080fd5b610ee583610e2c565b915060208301358015158114610efa57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610f3157600080fd5b610f3a85610e2c565b9350610f4860208601610e2c565b925060408501359150606085013567ffffffffffffffff80821115610f6c57600080fd5b818701915087601f830112610f8057600080fd5b813581811115610f9257610f92610f05565b604051601f8201601f19908116603f01168101908382118183101715610fba57610fba610f05565b816040528281528a6020848701011115610fd357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561100a57600080fd5b61101383610e2c565b915061102160208401610e2c565b90509250929050565b600181811c9082168061103e57607f821691505b60208210810361105e57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351611076818460208801610db0565b83519083019061108a818360208801610db0565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110d690830184610dd4565b9695505050505050565b6000602082840312156110f257600080fd5b81516107b881610d7a565b634e487b7160e01b600052601160045260246000fd5b600060018201611125576111256110fd565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826111515761115161112c565b500490565b818103818111156102d3576102d36110fd565b6000826111785761117861112c565b500690565b808201808211156102d3576102d36110fd565b634e487b7160e01b600052603260045260246000fdfea26469706673582212201e884a5d965bbd50c09c3acd216d27550d635c78fb09d08d9c644e3fa5bc9bfa64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
