{
  "_format": "hh-sol-artifact-1",
  "contractName": "DiamondMock",
  "sourceName": "contracts/mocks/diamond/DiamondMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facet",
              "type": "address"
            },
            {
              "internalType": "enum FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "internalType": "struct FacetCut[]",
          "name": "cuts",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Initialization[]",
          "name": "initializations",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "EmptyFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "EmptyInitCallData",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "EtherReceptionDisabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionAlreadyPresent",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "FunctionNotFound",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "InitCallReverted",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ModifyingImmutableFunction",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "NonContractFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "NonContractInitCallTarget",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        }
      ],
      "name": "RemovingWithNonZeroAddressFacet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "facet",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "ReplacingFunctionByItself",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressTargetInitCallButNonEmptyData",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "facet",
              "type": "address"
            },
            {
              "internalType": "enum FacetCutAction",
              "name": "action",
              "type": "uint8"
            },
            {
              "internalType": "bytes4[]",
              "name": "selectors",
              "type": "bytes4[]"
            }
          ],
          "indexed": false,
          "internalType": "struct FacetCut[]",
          "name": "cuts",
          "type": "tuple[]"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "DiamondCut",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "ImmutableFunctionCalled",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "immutableFunction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405261104a80380380610014816101ea565b9283398101906040818303126100b65780516001600160401b0381116100b65781019082601f830112156100b6578151916100566100518461020f565b6101ea565b9260208085838152019160051b830101918583116100b65760208101915b8383106100bb57505050506020810151926001600160401b0384116100b6576100a7936100a19201610278565b90610432565b60405161018a9081610ea08239f35b600080fd5b82516001600160401b0381116100b65782016060818903601f1901126100b6576100e36101a7565b906100f060208201610226565b8252604081015160038110156100b657602083015260608101516001600160401b0381116100b657602091010188601f820112156100b65780516101366100518261020f565b9160208084848152019260051b820101908b82116100b657602001915b818310610170575050506040820152815260209283019201610074565b82516001600160e01b0319811681036100b657815260209283019201610153565b634e487b7160e01b600052604160045260246000fd5b60405190606082016001600160401b038111838210176101c657604052565b610191565b60408051919082016001600160401b038111838210176101c657604052565b6040519190601f01601f191682016001600160401b038111838210176101c657604052565b6001600160401b0381116101c65760051b60200190565b51906001600160a01b03821682036100b657565b6001600160401b0381116101c657601f01601f191660200190565b60005b8381106102685750506000910152565b8181015183820152602001610258565b81601f820112156100b6578051906102926100518361020f565b9260208085858152019360051b830101918183116100b65760208101935b8385106102bf57505050505090565b84516001600160401b0381116100b65782016040818503601f1901126100b6576102e76101cb565b906102f460208201610226565b825260408101516001600160401b0381116100b65760209101019184601f840112156100b6578251916103296100518461023a565b83815286602085870101116100b65761034c602095948695868085019101610255565b838201528152019401936102b0565b604090610367826101ea565b6001815291601f1901366020840137565b634e487b7160e01b600052603260045260246000fd5b80511561039b5760200190565b610378565b805182101561039b5760209160051b010190565b6040906103c0826101ea565b6001815291601f19018260005b8281106103d957505050565b6020906103e46101a7565b6000815260008382015260606040820152828285010152016103cd565b6003111561040b57565b634e487b7160e01b600052602160045260246000fd5b61042b60206101ea565b9060008252565b9190917f65d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e290610461818361069c565b835160005b81811061052657505061052492935060008051602061102a83398151915290602061049c6040519260608452606084019061055c565b600082840152600083820391826040860152520190a16104ba61035b565b6104d26104c68261038e565b63ba7fabfd60e01b9052565b6104da6103b4565b906104f8306104e88461038e565b516001600160a01b039091169052565b600060206105058461038e565b51015260406105138361038e565b51015261051e610421565b91610642565b565b6001906105566001600160a01b0361053e838a6103a0565b515116602061054d848b6103a0565b51015190610843565b01610466565b9080602083519182815201916020808360051b8301019401926000915b83831061058857505050505090565b9091929394601f198282030183528551606082019060018060a01b038151168352602081015190600382101561040b57604060809160209384870152015193606060408201528451809452019201906000905b8082106105fa5750505060208060019297019301930191939290610579565b82516001600160e01b0319168452602093840193909201916001909101906105db565b9060209161063681518092818552858086019101610255565b601f01601f1916010190565b9061069760008051602061102a83398151915293610663836106829561069c565b61066e816000610843565b60405193849360608552606085019061055c565b9060006020850152838203604085015261061d565b0390a1565b60018101906106b76106b0835461ffff1690565b61ffff1690565b9182600094600785166107cf575b80516000915b81831061072257505050830361070d575b50600782166106ea57505050565b60026106f961070a9360031c90565b910190600052602052604060002090565b55565b805461ffff191661ffff8416179055386106dc565b90919561072f87836103a0565b5190604082015151156107b057602082015161074a81610401565b61075381610401565b806107735750906001986107679288610d48565b9790965b0191906106cb565b806107836001929a94939a610401565b0361079a579061079560019288610c07565b61076b565b6001986107a892988861090d565b97909661076b565b815163b39ad1bb60e01b6000526001600160a01b031660045260246000fd5b94506107f16107de8560031c90565b6002850190600052602052604060002090565b54946106c5565b3d15610819573d9061080c6100518361023a565b9182523d6000602084013e565b606090565b6001600160a01b0390911681526040602082018190526108409291019061061d565b90565b906001600160a01b0382168061086e575090505161085d57565b6301cd29fb60e71b60005260046000fd5b8151156108f05730036108cc575b600080825160208401855af4906108916107f8565b911561089c57505050565b81519283156108ac575050602001fd5b6108c860405192839263e83ddca560e01b84526004840161081e565b0390fd5b813b61087c5763df3b7fa960e01b6000526001600160a01b03821660045260246000fd5b623ca88560ea1b6000526001600160a01b03831660045260246000fd5b8351919290916001600160a01b031680610bea5750600761092e8460031c90565b9316946000935b60408601518051861015610bd3576109508661095e926103a0565b516001600160e01b03191690565b9261097c84869063ffffffff60e01b16600052602052604060002090565b54976109c46109b86109b26109a4888a9063ffffffff60e01b16600052602052604060002090565b546001600160601b03191690565b60601c90565b6001600160a01b031690565b15610bb457306109f06109b86109b26109a4898b9063ffffffff60e01b16600052602052604060002090565b14610b955781610b855750506000190193610a18856002860190600052602052604060002090565b54926007975b6000610a72610a3e87610a318d60051b90565b1b63ffffffff60e01b1690565b6001600160e01b03198082169591908a9083168703610b26575b90509063ffffffff60e01b16600052602052604060002090565b55610a8e6007610a8661ffff841660031c90565b921660051b90565b818814610b0b5790610ad5916002880193610ab3838690600052602052604060002090565b5490821c9163ffffffff60e01b901c1916179290600052602052604060002090565b555b8615610ae7575b60010193610935565b91506000610b02856002860190600052602052604060002090565b55600091610ade565b6001600160e01b0319811c199095169190941c179250610ad7565b610b59610b4c6109a484610b7d949063ffffffff60e01b16600052602052604060002090565b6001600160601b03191690565b60018060601b03871617918b9063ffffffff60e01b16600052602052604060002090565b553889610a58565b6000190197919590939091610a1e565b6363c95ddd60e11b6000526001600160e01b0319851660045260246000fd5b630a82dd7360e31b6000526001600160e01b0319851660045260246000fd5b50919593509350610be5915060031b90565b179190565b6391a5e1a360e01b6000526001600160a01b031660045260246000fd5b81516001600160a01b031691823b15610d2a576040018051519190606084901b6001600160601b031916906001600160a01b0385169060005b858110610c505750505050505050565b610c5e6109508284516103a0565b6001600160e01b031981166000908152602087905260409020548060601c8015610d0b57308114610cec578514610cc0576001600160e01b03199091166000908152602087905260409020600192916001600160601b03168617905501610c40565b6373d5d79760e01b6000526001600160a01b0389166004526001600160e01b0319821660245260446000fd5b6363c95ddd60e11b6000526001600160e01b0319831660045260246000fd5b630a82dd7360e31b6000526001600160e01b0319831660045260246000fd5b63190c2f0160e11b6000526001600160a01b03831660045260246000fd5b835192949391926001600160a01b03163081141580610e96575b610e795750906040810191825151906000935b828510610d855750505050509190565b9091929394610d986109508784516103a0565b97610dbc6109b26109a48b879063ffffffff60e01b16600052602052604060002090565b6001600160a01b038116610e4e575085516001600160e01b03198a16600090815260208690526040902060e0929160601b6001600160601b03191684179055610e086007841660051b90565b9963ffffffff831b168a1c9063ffffffff831b8b1c1916179814610e37575b6001809101950193929190610d75565b96610e456107de8960031c90565b55600096610e27565b635f19e89b60e11b6000526001600160a01b03166004526001600160e01b0319891660245260446000fd5b63190c2f0160e11b6000526001600160a01b031660045260246000fd5b50803b15610d6256fe608060405260043610156100e9575b36156100bf577fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527f65d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e260205260406000205460601c9081156100925760008083368280378136915af43d6000803e1561008d573d6000f35b3d6000fd5b7f5416eb980000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7b5c32900000000000000000000000000000000000000000000000000000000060005260046000fd5b60003560e01c63ba7fabfd0361000e573461014f5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014f577f722d29b00acdf165bd4f9387f49041b6ff0b811414a43fd05527a13121fd7d34600080a1005b600080fdfea2646970667358221220fcc4c316a5d260841aa25258aca3d8d66f18edf6741dc0eefe77a1fb2b0aee6e64736f6c634300081e00338faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673",
  "deployedBytecode": "0x608060405260043610156100e9575b36156100bf577fffffffff0000000000000000000000000000000000000000000000000000000060003516806000527f65d27473a5b05206737961f69a3b7a55316862d7a6ef82b3f5455fe92fab43e260205260406000205460601c9081156100925760008083368280378136915af43d6000803e1561008d573d6000f35b3d6000fd5b7f5416eb980000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7b5c32900000000000000000000000000000000000000000000000000000000060005260046000fd5b60003560e01c63ba7fabfd0361000e573461014f5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014f577f722d29b00acdf165bd4f9387f49041b6ff0b811414a43fd05527a13121fd7d34600080a1005b600080fdfea2646970667358221220fcc4c316a5d260841aa25258aca3d8d66f18edf6741dc0eefe77a1fb2b0aee6e64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
