{
  "_format": "hh-sol-artifact-1",
  "contractName": "Zeto_NfAnon",
  "sourceName": "contracts/zeto_nf_anon.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "ERC1967InvalidImplementation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1967NonPayable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "IdentityNotRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "utxo",
          "type": "uint256"
        }
      ],
      "name": "UTXOAlreadyOwned",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "utxo",
          "type": "uint256"
        }
      ],
      "name": "UTXOAlreadySpent",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "maxAllowed",
          "type": "uint256"
        }
      ],
      "name": "UTXOArrayTooLarge",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "utxo",
          "type": "uint256"
        }
      ],
      "name": "UTXODuplicate",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "utxo",
          "type": "uint256"
        }
      ],
      "name": "UTXONotMinted",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UUPSUnauthorizedCallContext",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "UUPSUnsupportedProxiableUUID",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "outputs",
          "type": "uint256[]"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "submitter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "UTXOMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "inputs",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "outputs",
          "type": "uint256[]"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "submitter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "UTXOTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "UPGRADE_INTERFACE_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initialOwner",
          "type": "address"
        },
        {
          "internalType": "contract Groth16Verifier_NfAnon",
          "name": "_verifier",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256[2]",
              "name": "pA",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[2][2]",
              "name": "pB",
              "type": "uint256[2][2]"
            },
            {
              "internalType": "uint256[2]",
              "name": "pC",
              "type": "uint256[2]"
            }
          ],
          "internalType": "struct Commonlib.Proof",
          "name": "proof",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "name": "lockProof",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "utxos",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txo",
          "type": "uint256"
        }
      ],
      "name": "spent",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "input",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "output",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256[2]",
              "name": "pA",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[2][2]",
              "name": "pB",
              "type": "uint256[2][2]"
            },
            {
              "internalType": "uint256[2]",
              "name": "pC",
              "type": "uint256[2]"
            }
          ],
          "internalType": "struct Commonlib.Proof",
          "name": "proof",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "transfer",
      "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": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0806040523460295730608052611c32908161002f82396080518181816106330152610c730152f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806312c0fed2146100c7578063485cc955146100c25780634f1ef286146100bd57806352d1902d146100b85780636ed9d6a1146100b3578063715018a6146100ae5780638bb2513b146100a95780638da5cb5b146100a4578063ad3cb1cc1461009f578063d5b5cc231461009a5763f2fde38b1461009557600080fd5b610bc7565b610b5b565b610ac7565b610a74565b6109cb565b6108f5565b6106db565b61060b565b61058f565b61029f565b610131565b6003196101009101126100de57600490565b600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc6101009101126100de57604490565b73ffffffffffffffffffffffffffffffffffffffff8116036100de57565b346100de576101206003193601126100de5761014c366100cc565b610162610104359161015d83610113565b6111e9565b9081600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000205416158015610272575b156101ee576101ac6101ec926000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b5081600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002054163314610190565b346100de5760406003193601126100de576004356102bc81610113565b602435906102c982610113565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549167ffffffffffffffff61030f60ff604086901c16159467ffffffffffffffff1690565b1680159081610504575b60011490816104fa575b1590816104f1575b506104c7576103ac91836103a360017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61044c57610bf4565b6103b257005b61041d7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6104c2680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610bf4565b7ff92ee8a90000000000000000000000000000000000000000000000000000000060005260046000fd5b9050153861032b565b303b159150610323565b849150610319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f601f19910116810190811067ffffffffffffffff82111761055e57604052565b61050c565b90610571604051928361053b565b565b67ffffffffffffffff811161055e57601f01601f191660200190565b60406003193601126100de576004356105a781610113565b6024359067ffffffffffffffff82116100de57366023830112156100de578160040135906105d482610573565b916105e2604051938461053b565b80835236602482860101116100de5760208160009260246101ec97018387013784010152610c5a565b346100de5760006003193601126100de5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106835760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba0000000000000000000000000000000000000000000000000000000060005260046000fd5b9181601f840112156100de5782359167ffffffffffffffff83116100de57602083818601950101116100de57565b346100de576101606003193601126100de576004356024356106fc366100e3565b610144359067ffffffffffffffff82116100de576107216107ee9236906004016106ad565b61072c939193610e1a565b958061073788610e9c565b526020610742610e1a565b948761074d87610e9c565b5261076161075c82888c611375565b610ec2565b610769610f27565b838152908860208301526107ae61079560025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518097819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610f54565b03915afa9081156108f0577fcb56a7130431b68e0e636f24584d40580490c1bf882bef3701f317d47ba98c389661083e61084e6108799361083e6108a4966108b2996000916108c1575b50610fcc565b6000526001602052604060002090565b60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b604051938493339785611090565b0390a260405160018152602090f35b6108e3915060203d6020116108e9575b6108db818361053b565b810190610f3c565b38610838565b503d6108d1565b610fc0565b346100de5760006003193601126100de5761090e611689565b600073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff811161055e5760051b60200190565b346100de5760406003193601126100de5760043567ffffffffffffffff81116100de57366023820112156100de57806004013590610a08826109b3565b91610a16604051938461053b565b8083526024602084019160051b830101913683116100de57602401905b828210610a64576024358467ffffffffffffffff82116100de57610a5e6101ec9236906004016106ad565b9161171c565b8135815260209182019101610a33565b346100de5760006003193601126100de57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346100de5760006003193601126100de576040805190610ae7818361053b565b600582527f352e302e300000000000000000000000000000000000000000000000000000006020830152805180926020825280519081602084015260005b828110610b445750506000828201840152601f01601f19168101030190f35b602082820181015187830187015286945001610b25565b346100de5760206003193601126100de57600435600052600160205260ff604060002054166003811015610b985760405160029091148152602090f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b346100de5760206003193601126100de576101ec600435610be781610113565b610bef611689565b6110cb565b90610c2e73ffffffffffffffffffffffffffffffffffffffff92610c16611844565b610c1e611844565b610c26611844565b610bef611844565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610dd8575b5061068357610cab611689565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa60009481610da7575b50610d44577f4c9c8ce30000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff831660045260245b6000fd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403610d785761057192935061189d565b7faa1d49a400000000000000000000000000000000000000000000000000000000600052600484905260246000fd5b610dca91955060203d602011610dd1575b610dc2818361053b565b81019061127f565b9338610cfa565b503d610db8565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538610c9e565b60408051909190610e2b838261053b565b6001815291601f1901366020840137565b90610e46826109b3565b610e53604051918261053b565b828152601f19610e6382946109b3565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805115610ea95760200190565b610e6d565b8051821015610ea95760209160051b010190565b15610ec957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b604090815191610f37818461053b565b368337565b908160209103126100de575180151581036100de5790565b919493929094604061014084019684376000604084015b60028210610faa575050509060406101009260c0830137016000905b60028210610f9457505050565b6020806001928551815201930191019091610f87565b6040808281866001953701930191019091610f6b565b6040513d6000823e3d90fd5b15610fd357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b60031115610b9857565b906020808351928381520192019060005b8181106110595750505090565b825184526020938401939092019160010161104c565b601f8260209493601f19938186528686013760008582860101520116010190565b92906110c894926110ac6110ba9260608752606087019061103b565b90858203602087015261103b565b92604081850391015261106f565b90565b73ffffffffffffffffffffffffffffffffffffffff16801561118d5773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b906000825b600882106111d3575050506101000190565b60208060019285518152019301910190916111c1565b61125060c06111f9610100610563565b83358152926020810135602085015261123c61122f60408301803560408801526112238160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516112798161126b6020820194856111bc565b03601f19810183528261053b565b51902090565b908160209103126100de575190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116112bb57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b156112f157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c6f636b65642070726f6f662063616e206f6e6c79206265207375626d69747460448201527f656420627920746865206c6f636b6572206164647265737300000000000000006064820152fd5b9061137f916119d3565b9290916000935b83518510156114ef576113998585610eae565b51156114e457841515806114bf575b611485576113d46113cd6113bc8787610eae565b516000526001602052604060002090565b5460ff1690565b6113dd81611031565b61141b57610d406113ee8686610eae565b517f8392512700000000000000000000000000000000000000000000000000000000600052600452602490565b90919360026114306113cd6113bc8488610eae565b61143981611031565b1461144b576001905b01939190611386565b611458610d409185610eae565b517f41a06d2800000000000000000000000000000000000000000000000000000000600052600452602490565b610d406114928686610eae565b517fdd57483100000000000000000000000000000000000000000000000000000000600052600452602490565b506114ca8585610eae565b516114dd6114d78761128e565b86610eae565b51146113a8565b909193600190611442565b600094509250905b82518410156115ee5761150a8484610eae565b51156115e457831515806115bf575b6115b257600261152f6113cd6113bc8787610eae565b61153881611031565b0361154a57610d406114588585610eae565b9092600161155e6113cd6113bc8487610eae565b61156781611031565b14611578576001905b0192906114f7565b611585610d409184610eae565b517f79e1da4700000000000000000000000000000000000000000000000000000000600052600452602490565b610d406114928585610eae565b506115ca8484610eae565b516115dd6115d78661128e565b85610eae565b5114611519565b9092600190611570565b92506115fa91506111e9565b73ffffffffffffffffffffffffffffffffffffffff611640611626836000526000602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b1661164c575b50600190565b611666611626611683926000526000602052604060002090565b73ffffffffffffffffffffffffffffffffffffffff1633146112ea565b38611646565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036116c957565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b9161170e6110c8949260408552604085019061103b565b92602081850391015261106f565b90926000925b8251841015611808576117358484610eae565b519360016117506113cd876000526001602052604060002090565b61175981611031565b0361178d577f79e1da4700000000000000000000000000000000000000000000000000000000600052600485905260246000fd5b9091929360026117aa6113cd836000526001602052604060002090565b6117b381611031565b146117db57906117d26108796001936000526001602052604060002090565b01929190611722565b7f41a06d280000000000000000000000000000000000000000000000000000000060005260045260246000fd5b90937f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce1992935061183f6040519283923396846116f7565b0390a2565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561187357565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000060005260046000fd5b90813b1561198f5773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561195c5761195991611a63565b50565b50503461196557565b7fb398979f0000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91906119df8351610e3c565b906119ea8151610e3c565b9060005b8551811015611a165780611a0460019288610eae565b51611a0f8287610eae565b52016119ee565b50919290935060005b8251811015611a475780611a3560019285610eae565b51611a408288610eae565b5201611a1f565b50919050611a5481611b42565b50611a5e83611b42565b509190565b6000806110c893602081519101845af43d15611aa1573d91611a8483610573565b92611a92604051948561053b565b83523d6000602085013e611aa5565b6060915b90611ae45750805115611aba57805190602001fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b81511580611b39575b611af5575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50803b15611aed565b6110c860016020835160051b840101602084015b9190604083820310611bf75782519282818095602084015b858110611b945750508251815184528152611b8892611b56565b60206105719301611b56565b91509150805185600114611bd1577f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fd5b8211611be4575b60200184918691611b6e565b6020909501805186518252865294611bd8565b50505056fea2646970667358221220c2f74aedf3132742fc070bc6cba9a2f177f55c1b93e47f15fc7743eaf6b05e2c64736f6c634300081b0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806312c0fed2146100c7578063485cc955146100c25780634f1ef286146100bd57806352d1902d146100b85780636ed9d6a1146100b3578063715018a6146100ae5780638bb2513b146100a95780638da5cb5b146100a4578063ad3cb1cc1461009f578063d5b5cc231461009a5763f2fde38b1461009557600080fd5b610bc7565b610b5b565b610ac7565b610a74565b6109cb565b6108f5565b6106db565b61060b565b61058f565b61029f565b610131565b6003196101009101126100de57600490565b600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc6101009101126100de57604490565b73ffffffffffffffffffffffffffffffffffffffff8116036100de57565b346100de576101206003193601126100de5761014c366100cc565b610162610104359161015d83610113565b6111e9565b9081600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000205416158015610272575b156101ee576101ac6101ec926000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f50726f6f6620616c7265616479206c6f636b656420627920616e6f746865722060448201527f70617274790000000000000000000000000000000000000000000000000000006064820152fd5b5081600052600060205273ffffffffffffffffffffffffffffffffffffffff604060002054163314610190565b346100de5760406003193601126100de576004356102bc81610113565b602435906102c982610113565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549167ffffffffffffffff61030f60ff604086901c16159467ffffffffffffffff1690565b1680159081610504575b60011490816104fa575b1590816104f1575b506104c7576103ac91836103a360017fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b61044c57610bf4565b6103b257005b61041d7fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6104c2680100000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005416177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055565b610bf4565b7ff92ee8a90000000000000000000000000000000000000000000000000000000060005260046000fd5b9050153861032b565b303b159150610323565b849150610319565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f601f19910116810190811067ffffffffffffffff82111761055e57604052565b61050c565b90610571604051928361053b565b565b67ffffffffffffffff811161055e57601f01601f191660200190565b60406003193601126100de576004356105a781610113565b6024359067ffffffffffffffff82116100de57366023830112156100de578160040135906105d482610573565b916105e2604051938461053b565b80835236602482860101116100de5760208160009260246101ec97018387013784010152610c5a565b346100de5760006003193601126100de5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036106835760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b7fe07c8dba0000000000000000000000000000000000000000000000000000000060005260046000fd5b9181601f840112156100de5782359167ffffffffffffffff83116100de57602083818601950101116100de57565b346100de576101606003193601126100de576004356024356106fc366100e3565b610144359067ffffffffffffffff82116100de576107216107ee9236906004016106ad565b61072c939193610e1a565b958061073788610e9c565b526020610742610e1a565b948761074d87610e9c565b5261076161075c82888c611375565b610ec2565b610769610f27565b838152908860208301526107ae61079560025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b906040518097819482937ff5c9d69e00000000000000000000000000000000000000000000000000000000845260c0810190604081019060048601610f54565b03915afa9081156108f0577fcb56a7130431b68e0e636f24584d40580490c1bf882bef3701f317d47ba98c389661083e61084e6108799361083e6108a4966108b2996000916108c1575b50610fcc565b6000526001602052604060002090565b60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b604051938493339785611090565b0390a260405160018152602090f35b6108e3915060203d6020116108e9575b6108db818361053b565b810190610f3c565b38610838565b503d6108d1565b610fc0565b346100de5760006003193601126100de5761090e611689565b600073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300547fffffffffffffffffffffffff000000000000000000000000000000000000000081167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b67ffffffffffffffff811161055e5760051b60200190565b346100de5760406003193601126100de5760043567ffffffffffffffff81116100de57366023820112156100de57806004013590610a08826109b3565b91610a16604051938461053b565b8083526024602084019160051b830101913683116100de57602401905b828210610a64576024358467ffffffffffffffff82116100de57610a5e6101ec9236906004016106ad565b9161171c565b8135815260209182019101610a33565b346100de5760006003193601126100de57602073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b346100de5760006003193601126100de576040805190610ae7818361053b565b600582527f352e302e300000000000000000000000000000000000000000000000000000006020830152805180926020825280519081602084015260005b828110610b445750506000828201840152601f01601f19168101030190f35b602082820181015187830187015286945001610b25565b346100de5760206003193601126100de57600435600052600160205260ff604060002054166003811015610b985760405160029091148152602090f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b346100de5760206003193601126100de576101ec600435610be781610113565b610bef611689565b6110cb565b90610c2e73ffffffffffffffffffffffffffffffffffffffff92610c16611844565b610c1e611844565b610c26611844565b610bef611844565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803014908115610dd8575b5061068357610cab611689565b604051927f52d1902d00000000000000000000000000000000000000000000000000000000845260208460048173ffffffffffffffffffffffffffffffffffffffff87165afa60009481610da7575b50610d44577f4c9c8ce30000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff831660045260245b6000fd5b90917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8403610d785761057192935061189d565b7faa1d49a400000000000000000000000000000000000000000000000000000000600052600484905260246000fd5b610dca91955060203d602011610dd1575b610dc2818361053b565b81019061127f565b9338610cfa565b503d610db8565b905073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538610c9e565b60408051909190610e2b838261053b565b6001815291601f1901366020840137565b90610e46826109b3565b610e53604051918261053b565b828152601f19610e6382946109b3565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805115610ea95760200190565b610e6d565b8051821015610ea95760209160051b010190565b15610ec957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e76616c6964207472616e73616374696f6e2070726f706f73616c000000006044820152fd5b604090815191610f37818461053b565b368337565b908160209103126100de575180151581036100de5790565b919493929094604061014084019684376000604084015b60028210610faa575050509060406101009260c0830137016000905b60028210610f9457505050565b6020806001928551815201930191019091610f87565b6040808281866001953701930191019091610f6b565b6040513d6000823e3d90fd5b15610fd357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152fd5b60031115610b9857565b906020808351928381520192019060005b8181106110595750505090565b825184526020938401939092019160010161104c565b601f8260209493601f19938186528686013760008582860101520116010190565b92906110c894926110ac6110ba9260608752606087019061103b565b90858203602087015261103b565b92604081850391015261106f565b90565b73ffffffffffffffffffffffffffffffffffffffff16801561118d5773ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054827fffffffffffffffffffffffff00000000000000000000000000000000000000008216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b906000825b600882106111d3575050506101000190565b60208060019285518152019301910190916111c1565b61125060c06111f9610100610563565b83358152926020810135602085015261123c61122f60408301803560408801526112238160200190565b35606088015260400190565b8035608087015260200190565b3560a085015201803560c084015260200190565b3560e08201526040516112798161126b6020820194856111bc565b03601f19810183528261053b565b51902090565b908160209103126100de575190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116112bb57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b156112f157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c6f636b65642070726f6f662063616e206f6e6c79206265207375626d69747460448201527f656420627920746865206c6f636b6572206164647265737300000000000000006064820152fd5b9061137f916119d3565b9290916000935b83518510156114ef576113998585610eae565b51156114e457841515806114bf575b611485576113d46113cd6113bc8787610eae565b516000526001602052604060002090565b5460ff1690565b6113dd81611031565b61141b57610d406113ee8686610eae565b517f8392512700000000000000000000000000000000000000000000000000000000600052600452602490565b90919360026114306113cd6113bc8488610eae565b61143981611031565b1461144b576001905b01939190611386565b611458610d409185610eae565b517f41a06d2800000000000000000000000000000000000000000000000000000000600052600452602490565b610d406114928686610eae565b517fdd57483100000000000000000000000000000000000000000000000000000000600052600452602490565b506114ca8585610eae565b516114dd6114d78761128e565b86610eae565b51146113a8565b909193600190611442565b600094509250905b82518410156115ee5761150a8484610eae565b51156115e457831515806115bf575b6115b257600261152f6113cd6113bc8787610eae565b61153881611031565b0361154a57610d406114588585610eae565b9092600161155e6113cd6113bc8487610eae565b61156781611031565b14611578576001905b0192906114f7565b611585610d409184610eae565b517f79e1da4700000000000000000000000000000000000000000000000000000000600052600452602490565b610d406114928585610eae565b506115ca8484610eae565b516115dd6115d78661128e565b85610eae565b5114611519565b9092600190611570565b92506115fa91506111e9565b73ffffffffffffffffffffffffffffffffffffffff611640611626836000526000602052604060002090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b1661164c575b50600190565b611666611626611683926000526000602052604060002090565b73ffffffffffffffffffffffffffffffffffffffff1633146112ea565b38611646565b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300541633036116c957565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b9161170e6110c8949260408552604085019061103b565b92602081850391015261106f565b90926000925b8251841015611808576117358484610eae565b519360016117506113cd876000526001602052604060002090565b61175981611031565b0361178d577f79e1da4700000000000000000000000000000000000000000000000000000000600052600485905260246000fd5b9091929360026117aa6113cd836000526001602052604060002090565b6117b381611031565b146117db57906117d26108796001936000526001602052604060002090565b01929190611722565b7f41a06d280000000000000000000000000000000000000000000000000000000060005260045260246000fd5b90937f7ff08e0ca1fce6b202b83128811e4f6ceda54930aa074cd365bf68f95c20ce1992935061183f6040519283923396846116f7565b0390a2565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561187357565b7fd7e6bcf80000000000000000000000000000000000000000000000000000000060005260046000fd5b90813b1561198f5773ffffffffffffffffffffffffffffffffffffffff8216807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a280511561195c5761195991611a63565b50565b50503461196557565b7fb398979f0000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff827f4c9c8ce3000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b91906119df8351610e3c565b906119ea8151610e3c565b9060005b8551811015611a165780611a0460019288610eae565b51611a0f8287610eae565b52016119ee565b50919290935060005b8251811015611a475780611a3560019285610eae565b51611a408288610eae565b5201611a1f565b50919050611a5481611b42565b50611a5e83611b42565b509190565b6000806110c893602081519101845af43d15611aa1573d91611a8483610573565b92611a92604051948561053b565b83523d6000602085013e611aa5565b6060915b90611ae45750805115611aba57805190602001fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b81511580611b39575b611af5575090565b73ffffffffffffffffffffffffffffffffffffffff907f9996b315000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b50803b15611aed565b6110c860016020835160051b840101602084015b9190604083820310611bf75782519282818095602084015b858110611b945750508251815184528152611b8892611b56565b60206105719301611b56565b91509150805185600114611bd1577f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fd5b8211611be4575b60200184918691611b6e565b6020909501805186518252865294611bd8565b50505056fea2646970667358221220c2f74aedf3132742fc070bc6cba9a2f177f55c1b93e47f15fc7743eaf6b05e2c64736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
