{
  "_format": "hh-sol-artifact-1",
  "contractName": "SampleWarperWithDistribution",
  "sourceName": "contracts/mocks/warper/ERC721/v1-controller/custom/SampleWarperWithDistribution.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "metahub",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "BalanceQueryForZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallForwardToZeroAddress",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotRentingManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CallerIsNotWarperAdmin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsAlreadyInitialized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ContractIsNotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "original",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "requiredInterfaceId",
          "type": "bytes4"
        }
      ],
      "name": "InvalidOriginalTokenInterface",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MethodNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintToTheZeroAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OperatorQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "OwnerQueryForNonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "TokenIsAlreadyMinted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "TransferToNonERC721ReceiverImplementer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferToTheZeroAddress",
      "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"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "__assetClass",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__metahub",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__original",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4[]",
          "name": "interfaceIds",
          "type": "bytes4[]"
        }
      ],
      "name": "__supportedInterfaces",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "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": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "rewardAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "agreementId",
          "type": "uint256"
        }
      ],
      "name": "distributeReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "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": "",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "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": [
        {
          "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"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620023e5380380620023e58339810160408190526200003491620004a4565b60006200006a620000566001600080516020620023a5833981519152620004dc565b60001b6200017e60201b62000a6e1760201c565b5460ff161590506200007b62000181565b158015620000a95750620000a4620000566001600080516020620023c5833981519152620004dc565b5460ff165b15620000c75760405162ea7fe560e71b815260040160405180910390fd5b8015620000ff576001620000ef6200005682600080516020620023a5833981519152620004dc565b805460ff19169115159190911790555b6200010b83836200019f565b80156200017557600062000134620000566001600080516020620023a5833981519152620004dc565b805460ff1916911515919091179055600062000165620000566001600080516020620023c5833981519152620004dc565b805460ff19169115159190911790555b50505062000502565b90565b600062000199306200020660201b62000a711760201c565b15905090565b620001bf620000566001600080516020620023a5833981519152620004dc565b5460ff16620001e1576040516369be8d9360e11b815260040160405180910390fd5b620001ec8262000215565b620001f78262000292565b620002028162000327565b5050565b6001600160a01b03163b151590565b6200023f635b5e139f60e01b826001600160a01b03166200039b60201b62000a801790919060201c565b620002795760405163c30175c560e01b81526001600160a01b0382166004820152635b5e139f60e01b602482015260440160405180910390fd5b6200028f816200028f60201b62000a9c1760201c565b50565b620002b2620000566001600080516020620023a5833981519152620004dc565b5460ff16620002d4576040516369be8d9360e11b815260040160405180910390fd5b80620003066200005660017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144620004dc565b80546001600160a01b0319166001600160a01b039290921691909117905550565b62000347620000566001600080516020620023a5833981519152620004dc565b5460ff1662000369576040516369be8d9360e11b815260040160405180910390fd5b80620003066200005660017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00620004dc565b6000620003a883620003c3565b8015620003bc5750620003bc8383620003fc565b9392505050565b6000620003d8826301ffc9a760e01b620003fc565b8015620003f65750620003f4826001600160e01b0319620003fc565b155b92915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156200046f575060208210155b80156200047c5750600081115b979650505050505050565b80516001600160a01b03811681146200049f57600080fd5b919050565b60008060408385031215620004b857600080fd5b620004c38362000487565b9150620004d36020840162000487565b90509250929050565b600082821015620004fd57634e487b7160e01b600052601160045260246000fd5b500390565b611e9380620005126000396000f3fe6080604052600436106101025760003560e01c806370a0823111610095578063b88d4fde11610064578063b88d4fde146102de578063de5b71f7146102fe578063e846a5a91461031e578063e985e9c514610359578063f46c73c61461037957610111565b806370a082311461024857806394d008ef14610276578063a22cb46514610296578063ac9650d8146102b157610111565b806323b872dd116100d157806323b872dd146101d357806342842e0e146101f35780635a70a283146102135780636352211e1461022857610111565b806301ffc9a714610119578063081812fc1461014e578063095ea7b3146101865780631f9e3304146101a657610111565b366101115761010f61038e565b005b61010f61038e565b34801561012557600080fd5b506101396101343660046114e9565b6103a0565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004611506565b6103e6565b6040516001600160a01b039091168152602001610145565b34801561019257600080fd5b5061010f6101a1366004611534565b6104c9565b3480156101b257600080fd5b506101c66101c1366004611613565b6104e2565b60405161014591906116a6565b3480156101df57600080fd5b5061010f6101ee3660046116ec565b6104ee565b3480156101ff57600080fd5b5061010f61020e3660046116ec565b6104fe565b34801561021f57600080fd5b5061016e610519565b34801561023457600080fd5b5061016e610243366004611506565b610528565b34801561025457600080fd5b5061026861026336600461172d565b6105c6565b604051908152602001610145565b34801561028257600080fd5b5061010f6102913660046117b9565b610688565b3480156102a257600080fd5b5061010f6101a136600461181f565b3480156102bd57600080fd5b506102d16102cc366004611858565b61077d565b6040516101459190611924565b3480156102ea57600080fd5b5061010f6102f9366004611986565b610871565b34801561030a57600080fd5b5061010f6103193660046119f1565b610883565b34801561032a57600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6040516101459190611a26565b34801561036557600080fd5b50610139610374366004611a3b565b6109b2565b34801561038557600080fd5b5061016e610a64565b61039e610399610a9f565b610ade565b565b60006001600160e01b031982166394d008ef60e01b14806103d157506001600160e01b031982166380ac58cd60e01b145b806103e057506103e082610b2b565b92915050565b6000806103f283610b7d565b9050600081600281111561040857610408611a69565b0361042e5760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b610436610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016104819190611a26565b602060405180830381865afa15801561049e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611a7f565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b60606103e03083610c46565b6104f9838383610d08565b505050565b6104f983838360405180602001604052806000815250610871565b6000610523610c16565b905090565b60008061053483610b7d565b9050600081600281111561054a5761054a611a69565b0361056b5760405163e4c0734760e01b815260048101849052602401610425565b600181600281111561057f5761057f611a69565b0361058c576104c2610c16565b506000828152602081905260409020546001600160a01b0316806103e05760405163e4c0734760e01b815260048101849052602401610425565b60006001600160a01b0382166105ef576040516323d3ad8160e21b815260040160405180910390fd5b60006105f9610dce565b9050806001600160a01b031663bfe0af99610612610c16565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015610664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611a9c565b6001600160a01b0383166106af5760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b0316156106e8576040516376b78f6560e01b815260048101839052602401610425565b6106f460008484610ece565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46107566000848484610f93565b6104f95760405162aae5b760e01b81526001600160a01b0384166004820152602401610425565b6060816001600160401b0381111561079757610797611560565b6040519080825280602002602001820160405280156107ca57816020015b60608152602001906001900390816107b55790505b50905060005b8281101561086a5761083a308585848181106107ee576107ee611ab5565b90506020028101906108009190611acb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f92505050565b82828151811061084c5761084c611ab5565b6020026020010181905250808061086290611b2e565b9150506107d0565b5092915050565b61087d848484846110c4565b50505050565b600061088d610c16565b6001600160a01b031663e3dedd6b7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf6040518263ffffffff1660e01b81526004016108d89190611a26565b602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190611a7f565b905061092f6001600160a01b0385168285611102565b604051621a04ab60e01b8152600481018390526001600160a01b03858116602483015260448201859052821690621a04ab906064016000604051808303816000875af1158015610983573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ab9190810190611c19565b5050505050565b60006109bc610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401610a079190611a26565b602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190611a7f565b6001600160a01b0316826001600160a01b031614905092915050565b6000610523610a9f565b90565b6001600160a01b03163b151590565b6000610a8b83611154565b80156104c257506104c28383611187565b50565b6000610acf610a6e60017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144611d62565b546001600160a01b0316919050565b6001600160a01b038116610b055760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e808015610b26573d6000f35b3d6000fd5b60006001600160e01b03198216630b3888fd60e31b1480610b5c57506001600160e01b031982166301ffc9a760e01b145b806103e057506103e082610b6e610a9f565b6001600160a01b031690610a80565b600080610b88610dce565b9050806001600160a01b0316633f09518c610ba1610c16565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611d79565b6000610acf610a6e60017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00611d62565b6060600082516001600160401b03811115610c6357610c63611560565b604051908082528060200260200182016040528015610c8c578160200160208202803683370190505b509050610c9884611154565b156104c25760005b8351811015610d0057610ccc85858381518110610cbf57610cbf611ab5565b6020026020010151611187565b828281518110610cde57610cde611ab5565b9115156020928302919091019091015280610cf881611b2e565b915050610ca0565b509392505050565b6000818152602081905260409020546001600160a01b0316610d405760405163074fede760e51b815260048101829052602401610425565b6001600160a01b038216610d675760405163671d1add60e11b815260040160405180910390fd5b610d72838383610ece565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610dd8610c16565b6001600160a01b031663e3dedd6b7fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b86040518263ffffffff1660e01b8152600401610e239190611a26565b602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e649190611a7f565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105239190611a7f565b610ed6610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401610f219190611a26565b602060405180830381865afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190611a7f565b6001600160a01b0316336001600160a01b0316146104f957604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b610fac57506001611097565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610fde903390899088908890600401611d9a565b6020604051808303816000875af1925050508015611019575060408051601f3d908101601f1916820190925261101691810190611dcd565b60015b611081573d808015611047576040519150601f19603f3d011682016040523d82523d6000602084013e61104c565b606091505b5080516000036110795760405162aae5b760e01b81526001600160a01b0386166004820152602401610425565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606104c28383604051806060016040528060278152602001611e376027913961121b565b6110cf848484610d08565b6110db84848484610f93565b61087d5760405162aae5b760e01b81526001600160a01b0384166004820152602401610425565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104f99084906112f8565b6000611167826301ffc9a760e01b611187565b80156103e05750611180826001600160e01b0319611187565b1592915050565b6000806301ffc9a760e01b836040516024016111a39190611a26565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611204575060208210155b80156112105750600081115b979650505050505050565b60606001600160a01b0384163b6112835760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610425565b600080856001600160a01b03168560405161129e9190611dea565b600060405180830381855af49150503d80600081146112d9576040519150601f19603f3d011682016040523d82523d6000602084013e6112de565b606091505b50915091506112ee8282866113ca565b9695505050505050565b600061134d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114039092919063ffffffff16565b8051909150156104f9578080602001905181019061136b9190611e06565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610425565b606083156113d95750816104c2565b8251156113e95782518084602001fd5b8160405162461bcd60e51b81526004016104259190611e23565b60606110978484600085856001600160a01b0385163b6114655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610425565b600080866001600160a01b031685876040516114819190611dea565b60006040518083038185875af1925050503d80600081146114be576040519150601f19603f3d011682016040523d82523d6000602084013e6114c3565b606091505b50915091506112108282866113ca565b6001600160e01b031981168114610a9c57600080fd5b6000602082840312156114fb57600080fd5b81356104c2816114d3565b60006020828403121561151857600080fd5b5035919050565b6001600160a01b0381168114610a9c57600080fd5b6000806040838503121561154757600080fd5b82356115528161151f565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561159857611598611560565b60405290565b60405160a081016001600160401b038111828210171561159857611598611560565b604051601f8201601f191681016001600160401b03811182821017156115e8576115e8611560565b604052919050565b60006001600160401b0382111561160957611609611560565b5060051b60200190565b6000602080838503121561162657600080fd5b82356001600160401b0381111561163c57600080fd5b8301601f8101851361164d57600080fd5b803561166061165b826115f0565b6115c0565b81815260059190911b8201830190838101908783111561167f57600080fd5b928401925b82841015611210578335611697816114d3565b82529284019290840190611684565b6020808252825182820181905260009190848201906040850190845b818110156116e05783511515835292840192918401916001016116c2565b50909695505050505050565b60008060006060848603121561170157600080fd5b833561170c8161151f565b9250602084013561171c8161151f565b929592945050506040919091013590565b60006020828403121561173f57600080fd5b81356104c28161151f565b600082601f83011261175b57600080fd5b81356001600160401b0381111561177457611774611560565b611787601f8201601f19166020016115c0565b81815284602083860101111561179c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156117ce57600080fd5b83356117d98161151f565b92506020840135915060408401356001600160401b038111156117fb57600080fd5b6118078682870161174a565b9150509250925092565b8015158114610a9c57600080fd5b6000806040838503121561183257600080fd5b823561183d8161151f565b9150602083013561184d81611811565b809150509250929050565b6000806020838503121561186b57600080fd5b82356001600160401b038082111561188257600080fd5b818501915085601f83011261189657600080fd5b8135818111156118a557600080fd5b8660208260051b85010111156118ba57600080fd5b60209290920196919550909350505050565b60005b838110156118e75781810151838201526020016118cf565b8381111561087d5750506000910152565b600081518084526119108160208601602086016118cc565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561197957603f198886030184526119678583516118f8565b9450928501929085019060010161194b565b5092979650505050505050565b6000806000806080858703121561199c57600080fd5b84356119a78161151f565b935060208501356119b78161151f565b92506040850135915060608501356001600160401b038111156119d957600080fd5b6119e58782880161174a565b91505092959194509250565b600080600060608486031215611a0657600080fd5b8335611a118161151f565b95602085013595506040909401359392505050565b6001600160e01b031991909116815260200190565b60008060408385031215611a4e57600080fd5b8235611a598161151f565b9150602083013561184d8161151f565b634e487b7160e01b600052602160045260246000fd5b600060208284031215611a9157600080fd5b81516104c28161151f565b600060208284031215611aae57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611ae257600080fd5b8301803591506001600160401b03821115611afc57600080fd5b602001915036819003821315611b1157600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201611b4057611b40611b18565b5060010190565b805160078110611b5657600080fd5b919050565b600060808284031215611b6d57600080fd5b604051608081018181106001600160401b0382111715611b8f57611b8f611560565b604052905080611b9e83611b47565b815260208301516020820152604083015160408201526060830151611bc28161151f565b6060919091015292915050565b600060608284031215611be157600080fd5b611be9611576565b9050611bf482611b47565b8152602082015160208201526040820151611c0e8161151f565b604082015292915050565b60006020808385031215611c2c57600080fd5b82516001600160401b0380821115611c4357600080fd5b908401906101008287031215611c5857600080fd5b611c60611576565b825182811115611c6f57600080fd5b83019150601f82018713611c8257600080fd5b8151611c9061165b826115f0565b81815260a0918202840186019186820191908a841115611caf57600080fd5b948701945b83861015611d2f5780868c031215611ccc5760008081fd5b611cd461159e565b611cdd87611b47565b815288870151611cec81611811565b818a0152604087810151611cff8161151f565b9082015260608781015190820152608080880151611d1c8161151f565b9082015283529485019491870191611cb4565b818552611d3e8b898901611b5b565b88860152611d4e8b828901611bcf565b604086015250929998505050505050505050565b600082821015611d7457611d74611b18565b500390565b600060208284031215611d8b57600080fd5b8151600381106104c257600080fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112ee908301846118f8565b600060208284031215611ddf57600080fd5b81516104c2816114d3565b60008251611dfc8184602087016118cc565b9190910192915050565b600060208284031215611e1857600080fd5b81516104c281611811565b6020815260006104c260208301846118f856fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205b853e3821a2f53df781b1f5fad72aec40f06efcd9234bfba61cd0fa9891b11c64736f6c634300080d0033c2221768d9692f01d28cc433c84b2dc197fbcc867663b61d61e17ca4877697fa37e69e8e563db672cb7e105d3e1915d10ef53975d285d458a13e70818bf53d27",
  "deployedBytecode": "0x6080604052600436106101025760003560e01c806370a0823111610095578063b88d4fde11610064578063b88d4fde146102de578063de5b71f7146102fe578063e846a5a91461031e578063e985e9c514610359578063f46c73c61461037957610111565b806370a082311461024857806394d008ef14610276578063a22cb46514610296578063ac9650d8146102b157610111565b806323b872dd116100d157806323b872dd146101d357806342842e0e146101f35780635a70a283146102135780636352211e1461022857610111565b806301ffc9a714610119578063081812fc1461014e578063095ea7b3146101865780631f9e3304146101a657610111565b366101115761010f61038e565b005b61010f61038e565b34801561012557600080fd5b506101396101343660046114e9565b6103a0565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e610169366004611506565b6103e6565b6040516001600160a01b039091168152602001610145565b34801561019257600080fd5b5061010f6101a1366004611534565b6104c9565b3480156101b257600080fd5b506101c66101c1366004611613565b6104e2565b60405161014591906116a6565b3480156101df57600080fd5b5061010f6101ee3660046116ec565b6104ee565b3480156101ff57600080fd5b5061010f61020e3660046116ec565b6104fe565b34801561021f57600080fd5b5061016e610519565b34801561023457600080fd5b5061016e610243366004611506565b610528565b34801561025457600080fd5b5061026861026336600461172d565b6105c6565b604051908152602001610145565b34801561028257600080fd5b5061010f6102913660046117b9565b610688565b3480156102a257600080fd5b5061010f6101a136600461181f565b3480156102bd57600080fd5b506102d16102cc366004611858565b61077d565b6040516101459190611924565b3480156102ea57600080fd5b5061010f6102f9366004611986565b610871565b34801561030a57600080fd5b5061010f6103193660046119f1565b610883565b34801561032a57600080fd5b507f73ad2146b3d3a286642c794379d750360a2d53a3459a11b3e5d6cc900f55f44a6040516101459190611a26565b34801561036557600080fd5b50610139610374366004611a3b565b6109b2565b34801561038557600080fd5b5061016e610a64565b61039e610399610a9f565b610ade565b565b60006001600160e01b031982166394d008ef60e01b14806103d157506001600160e01b031982166380ac58cd60e01b145b806103e057506103e082610b2b565b92915050565b6000806103f283610b7d565b9050600081600281111561040857610408611a69565b0361042e5760405163e4c0734760e01b8152600481018490526024015b60405180910390fd5b610436610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b81526004016104819190611a26565b602060405180830381865afa15801561049e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611a7f565b9392505050565b6040516341f8b8eb60e11b815260040160405180910390fd5b60606103e03083610c46565b6104f9838383610d08565b505050565b6104f983838360405180602001604052806000815250610871565b6000610523610c16565b905090565b60008061053483610b7d565b9050600081600281111561054a5761054a611a69565b0361056b5760405163e4c0734760e01b815260048101849052602401610425565b600181600281111561057f5761057f611a69565b0361058c576104c2610c16565b506000828152602081905260409020546001600160a01b0316806103e05760405163e4c0734760e01b815260048101849052602401610425565b60006001600160a01b0382166105ef576040516323d3ad8160e21b815260040160405180910390fd5b60006105f9610dce565b9050806001600160a01b031663bfe0af99610612610c16565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201523060248201529086166044820152606401602060405180830381865afa158015610664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611a9c565b6001600160a01b0383166106af5760405163c96c2a0b60e01b815260040160405180910390fd5b6000828152602081905260409020546001600160a01b0316156106e8576040516376b78f6560e01b815260048101839052602401610425565b6106f460008484610ece565b60008281526020819052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46107566000848484610f93565b6104f95760405162aae5b760e01b81526001600160a01b0384166004820152602401610425565b6060816001600160401b0381111561079757610797611560565b6040519080825280602002602001820160405280156107ca57816020015b60608152602001906001900390816107b55790505b50905060005b8281101561086a5761083a308585848181106107ee576107ee611ab5565b90506020028101906108009190611acb565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f92505050565b82828151811061084c5761084c611ab5565b6020026020010181905250808061086290611b2e565b9150506107d0565b5092915050565b61087d848484846110c4565b50505050565b600061088d610c16565b6001600160a01b031663e3dedd6b7fc812c4753531186b178644ec70482dbb7a11384b640929d30f5ed326dcc237bf6040518263ffffffff1660e01b81526004016108d89190611a26565b602060405180830381865afa1580156108f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109199190611a7f565b905061092f6001600160a01b0385168285611102565b604051621a04ab60e01b8152600481018390526001600160a01b03858116602483015260448201859052821690621a04ab906064016000604051808303816000875af1158015610983573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109ab9190810190611c19565b5050505050565b60006109bc610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401610a079190611a26565b602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a489190611a7f565b6001600160a01b0316826001600160a01b031614905092915050565b6000610523610a9f565b90565b6001600160a01b03163b151590565b6000610a8b83611154565b80156104c257506104c28383611187565b50565b6000610acf610a6e60017f1cd3cead3f33d5ed74fb83a237e17d126ef505cbae350d3d0ffce421e3a1d144611d62565b546001600160a01b0316919050565b6001600160a01b038116610b055760405163eb0308d160e01b815260040160405180910390fd5b34366000803760008036600084865af13d6000803e808015610b26573d6000f35b3d6000fd5b60006001600160e01b03198216630b3888fd60e31b1480610b5c57506001600160e01b031982166301ffc9a760e01b145b806103e057506103e082610b6e610a9f565b6001600160a01b031690610a80565b600080610b88610dce565b9050806001600160a01b0316633f09518c610ba1610c16565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101869052606401602060405180830381865afa158015610bf2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c29190611d79565b6000610acf610a6e60017fc57d320c8f1e45a5114285d6f31191434d3d45422aff570b70ab6787e45bcf00611d62565b6060600082516001600160401b03811115610c6357610c63611560565b604051908082528060200260200182016040528015610c8c578160200160208202803683370190505b509050610c9884611154565b156104c25760005b8351811015610d0057610ccc85858381518110610cbf57610cbf611ab5565b6020026020010151611187565b828281518110610cde57610cde611ab5565b9115156020928302919091019091015280610cf881611b2e565b915050610ca0565b509392505050565b6000818152602081905260409020546001600160a01b0316610d405760405163074fede760e51b815260048101829052602401610425565b6001600160a01b038216610d675760405163671d1add60e11b815260040160405180910390fd5b610d72838383610ece565b60008181526020819052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610dd8610c16565b6001600160a01b031663e3dedd6b7fa9bb56dd0bf7501666e4d616edd892185cdc45d735a001a809bd3db50c9004b86040518263ffffffff1660e01b8152600401610e239190611a26565b602060405180830381865afa158015610e40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e649190611a7f565b60405163ebf03f4960e01b81523060048201526001600160a01b03919091169063ebf03f4990602401602060405180830381865afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105239190611a7f565b610ed6610c16565b6001600160a01b031663e3dedd6b7f9b4d0cb4e76b932bf6c979cd152d23fb4da2bb167c72cceed92f670a5328c4c36040518263ffffffff1660e01b8152600401610f219190611a26565b602060405180830381865afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190611a7f565b6001600160a01b0316336001600160a01b0316146104f957604051630fd6440760e01b815260040160405180910390fd5b60006001600160a01b0384163b610fac57506001611097565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610fde903390899088908890600401611d9a565b6020604051808303816000875af1925050508015611019575060408051601f3d908101601f1916820190925261101691810190611dcd565b60015b611081573d808015611047576040519150601f19603f3d011682016040523d82523d6000602084013e61104c565b606091505b5080516000036110795760405162aae5b760e01b81526001600160a01b0386166004820152602401610425565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606104c28383604051806060016040528060278152602001611e376027913961121b565b6110cf848484610d08565b6110db84848484610f93565b61087d5760405162aae5b760e01b81526001600160a01b0384166004820152602401610425565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104f99084906112f8565b6000611167826301ffc9a760e01b611187565b80156103e05750611180826001600160e01b0319611187565b1592915050565b6000806301ffc9a760e01b836040516024016111a39190611a26565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d91506000519050828015611204575060208210155b80156112105750600081115b979650505050505050565b60606001600160a01b0384163b6112835760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610425565b600080856001600160a01b03168560405161129e9190611dea565b600060405180830381855af49150503d80600081146112d9576040519150601f19603f3d011682016040523d82523d6000602084013e6112de565b606091505b50915091506112ee8282866113ca565b9695505050505050565b600061134d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166114039092919063ffffffff16565b8051909150156104f9578080602001905181019061136b9190611e06565b6104f95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610425565b606083156113d95750816104c2565b8251156113e95782518084602001fd5b8160405162461bcd60e51b81526004016104259190611e23565b60606110978484600085856001600160a01b0385163b6114655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610425565b600080866001600160a01b031685876040516114819190611dea565b60006040518083038185875af1925050503d80600081146114be576040519150601f19603f3d011682016040523d82523d6000602084013e6114c3565b606091505b50915091506112108282866113ca565b6001600160e01b031981168114610a9c57600080fd5b6000602082840312156114fb57600080fd5b81356104c2816114d3565b60006020828403121561151857600080fd5b5035919050565b6001600160a01b0381168114610a9c57600080fd5b6000806040838503121561154757600080fd5b82356115528161151f565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561159857611598611560565b60405290565b60405160a081016001600160401b038111828210171561159857611598611560565b604051601f8201601f191681016001600160401b03811182821017156115e8576115e8611560565b604052919050565b60006001600160401b0382111561160957611609611560565b5060051b60200190565b6000602080838503121561162657600080fd5b82356001600160401b0381111561163c57600080fd5b8301601f8101851361164d57600080fd5b803561166061165b826115f0565b6115c0565b81815260059190911b8201830190838101908783111561167f57600080fd5b928401925b82841015611210578335611697816114d3565b82529284019290840190611684565b6020808252825182820181905260009190848201906040850190845b818110156116e05783511515835292840192918401916001016116c2565b50909695505050505050565b60008060006060848603121561170157600080fd5b833561170c8161151f565b9250602084013561171c8161151f565b929592945050506040919091013590565b60006020828403121561173f57600080fd5b81356104c28161151f565b600082601f83011261175b57600080fd5b81356001600160401b0381111561177457611774611560565b611787601f8201601f19166020016115c0565b81815284602083860101111561179c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156117ce57600080fd5b83356117d98161151f565b92506020840135915060408401356001600160401b038111156117fb57600080fd5b6118078682870161174a565b9150509250925092565b8015158114610a9c57600080fd5b6000806040838503121561183257600080fd5b823561183d8161151f565b9150602083013561184d81611811565b809150509250929050565b6000806020838503121561186b57600080fd5b82356001600160401b038082111561188257600080fd5b818501915085601f83011261189657600080fd5b8135818111156118a557600080fd5b8660208260051b85010111156118ba57600080fd5b60209290920196919550909350505050565b60005b838110156118e75781810151838201526020016118cf565b8381111561087d5750506000910152565b600081518084526119108160208601602086016118cc565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561197957603f198886030184526119678583516118f8565b9450928501929085019060010161194b565b5092979650505050505050565b6000806000806080858703121561199c57600080fd5b84356119a78161151f565b935060208501356119b78161151f565b92506040850135915060608501356001600160401b038111156119d957600080fd5b6119e58782880161174a565b91505092959194509250565b600080600060608486031215611a0657600080fd5b8335611a118161151f565b95602085013595506040909401359392505050565b6001600160e01b031991909116815260200190565b60008060408385031215611a4e57600080fd5b8235611a598161151f565b9150602083013561184d8161151f565b634e487b7160e01b600052602160045260246000fd5b600060208284031215611a9157600080fd5b81516104c28161151f565b600060208284031215611aae57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112611ae257600080fd5b8301803591506001600160401b03821115611afc57600080fd5b602001915036819003821315611b1157600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b600060018201611b4057611b40611b18565b5060010190565b805160078110611b5657600080fd5b919050565b600060808284031215611b6d57600080fd5b604051608081018181106001600160401b0382111715611b8f57611b8f611560565b604052905080611b9e83611b47565b815260208301516020820152604083015160408201526060830151611bc28161151f565b6060919091015292915050565b600060608284031215611be157600080fd5b611be9611576565b9050611bf482611b47565b8152602082015160208201526040820151611c0e8161151f565b604082015292915050565b60006020808385031215611c2c57600080fd5b82516001600160401b0380821115611c4357600080fd5b908401906101008287031215611c5857600080fd5b611c60611576565b825182811115611c6f57600080fd5b83019150601f82018713611c8257600080fd5b8151611c9061165b826115f0565b81815260a0918202840186019186820191908a841115611caf57600080fd5b948701945b83861015611d2f5780868c031215611ccc5760008081fd5b611cd461159e565b611cdd87611b47565b815288870151611cec81611811565b818a0152604087810151611cff8161151f565b9082015260608781015190820152608080880151611d1c8161151f565b9082015283529485019491870191611cb4565b818552611d3e8b898901611b5b565b88860152611d4e8b828901611bcf565b604086015250929998505050505050505050565b600082821015611d7457611d74611b18565b500390565b600060208284031215611d8b57600080fd5b8151600381106104c257600080fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906112ee908301846118f8565b600060208284031215611ddf57600080fd5b81516104c2816114d3565b60008251611dfc8184602087016118cc565b9190910192915050565b600060208284031215611e1857600080fd5b81516104c281611811565b6020815260006104c260208301846118f856fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205b853e3821a2f53df781b1f5fad72aec40f06efcd9234bfba61cd0fa9891b11c64736f6c634300080d0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
