{
  "_format": "hh-sol-artifact-1",
  "contractName": "SuperChainTargetRegistrar",
  "sourceName": "contracts/Registrars/SuperChainTargetRegistrar.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sciRegistry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_crossDomainMessanger",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "_initialDelay",
          "type": "uint48"
        },
        {
          "internalType": "address",
          "name": "_initialDefaultAdmin",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "name": "AccessControlEnforcedDefaultAdminDelay",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AccessControlEnforcedDefaultAdminRules",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "defaultAdmin",
          "type": "address"
        }
      ],
      "name": "AccessControlInvalidDefaultAdmin",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "InvalidMessageSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "bits",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SafeCastOverflowedUintDowncast",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DefaultAdminDelayChangeCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "effectSchedule",
          "type": "uint48"
        }
      ],
      "name": "DefaultAdminDelayChangeScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "DefaultAdminTransferCanceled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint48",
          "name": "acceptSchedule",
          "type": "uint48"
        }
      ],
      "name": "DefaultAdminTransferScheduled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REGISTER_DOMAIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "beginDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cancelDefaultAdminTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        }
      ],
      "name": "changeDefaultAdminDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "crossDomainMessanger",
      "outputs": [
        {
          "internalType": "contract ICrossDomainMessanger",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdminDelay",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultAdminDelayIncreaseWait",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingDefaultAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        },
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingDefaultAdminDelay",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "newDelay",
          "type": "uint48"
        },
        {
          "internalType": "uint48",
          "name": "schedule",
          "type": "uint48"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "domainHash",
          "type": "bytes32"
        }
      ],
      "name": "registerDomain",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "domainHash",
          "type": "bytes32"
        },
        {
          "internalType": "contract IVerifier",
          "name": "verifier",
          "type": "address"
        }
      ],
      "name": "registerDomainWithVerifier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract ISciRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rollbackDefaultAdminDelay",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b5060405161239c38038061239c8339818101604052810190610032919061046b565b8282828181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a95760006040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016100a091906104e1565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506100e16000801b8261015860201b60201c565b5050508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050505050506104fc565b60008060001b830361021957600073ffffffffffffffffffffffffffffffffffffffff1661018a61023160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146101d7576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610229838361025b60201b60201c565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061026d838361035860201b60201c565b61034d57600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506102ea6103c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610352565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103fa826103cf565b9050919050565b61040a816103ef565b811461041557600080fd5b50565b60008151905061042781610401565b92915050565b600065ffffffffffff82169050919050565b6104488161042d565b811461045357600080fd5b50565b6000815190506104658161043f565b92915050565b60008060008060808587031215610485576104846103ca565b5b600061049387828801610418565b94505060206104a487828801610418565b93505060406104b587828801610456565b92505060606104c687828801610418565b91505092959194509250565b6104db816103ef565b82525050565b60006020820190506104f660008301846104d2565b92915050565b60805160a051611e5161054b6000396000818161068b0152818161094a0152610d17015260008181610479015281816107da0152818161086c01528181610ba70152610c390152611e516000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806384ef8ffc116100c3578063cc8463c81161007c578063cc8463c814610369578063cefc142914610387578063cf6eefb714610391578063d547741f146103b0578063d602b9fd146103cc578063dd738e6c146103d65761014d565b806384ef8ffc146102a45780638da5cb5b146102c257806391d14854146102e0578063a1eda53c14610310578063a217fddf1461032f578063a8c008611461034d5761014d565b80632a3fea62116101155780632a3fea62146101f85780632f2ff15d1461021657806336568abe14610232578063634e93da1461024e578063649a5ec71461026a5780637b103999146102865761014d565b806301ffc9a714610152578063022d63fb14610182578063095f025e146101a05780630aa6220b146101be578063248a9ca3146101c8575b600080fd5b61016c600480360381019061016791906117d8565b6103f2565b6040516101799190611820565b60405180910390f35b61018a61046c565b604051610197919061185c565b60405180910390f35b6101a8610477565b6040516101b591906118f6565b60405180910390f35b6101c661049b565b005b6101e260048036038101906101dd9190611947565b6104b3565b6040516101ef9190611983565b60405180910390f35b6102006104d2565b60405161020d9190611983565b60405180910390f35b610230600480360381019061022b91906119dc565b6104f6565b005b61024c600480360381019061024791906119dc565b610540565b005b61026860048036038101906102639190611a1c565b610655565b005b610284600480360381019061027f9190611a75565b61066f565b005b61028e610689565b60405161029b9190611ac3565b60405180910390f35b6102ac6106ad565b6040516102b99190611aed565b60405180910390f35b6102ca6106d7565b6040516102d79190611aed565b60405180910390f35b6102fa60048036038101906102f591906119dc565b6106e6565b6040516103079190611820565b60405180910390f35b610318610750565b604051610326929190611b08565b60405180910390f35b6103376107b0565b6040516103449190611983565b60405180910390f35b61036760048036038101906103629190611b31565b6107b7565b005b6103716109db565b60405161037e919061185c565b60405180910390f35b61038f610a49565b005b610399610adf565b6040516103a7929190611b71565b60405180910390f35b6103ca60048036038101906103c591906119dc565b610b22565b005b6103d4610b6c565b005b6103f060048036038101906103eb9190611bd8565b610b84565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610465575061046482610dab565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b6104a881610e25565b6104b0610e39565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b8203610532576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053c8282610e46565b5050565b6000801b8214801561058457506105556106ad565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561064757600080610594610adf565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806105da57506105d881610e68565b155b806105eb57506105e981610e7d565b155b1561062d57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610624919061185c565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106518282610e91565b5050565b6000801b61066281610e25565b61066b82610f0c565b5050565b6000801b61067c81610e25565b61068582610f87565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006106e16106ad565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061077381610e68565b8015610785575061078381610e7d565b155b610791576000806107a8565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c687f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086857336040517fa90b446100000000000000000000000000000000000000000000000000000000815260040161085f9190611aed565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190611c40565b905061090582826106e6565b6109485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161093f929190611c6d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086185856040518363ffffffff1660e01b81526004016109a3929190611c6d565b600060405180830381600087803b1580156109bd57600080fd5b505af11580156109d1573d6000803e3d6000fd5b5050505050505050565b6000806002601a9054906101000a900465ffffffffffff1690506109fe81610e68565b8015610a0f5750610a0e81610e7d565b5b610a2d576001601a9054906101000a900465ffffffffffff16610a43565b600260149054906101000a900465ffffffffffff165b91505090565b6000610a53610adf565b5090508073ffffffffffffffffffffffffffffffffffffffff16610a75610fee565b73ffffffffffffffffffffffffffffffffffffffff1614610ad457610a98610fee565b6040517fc22c8022000000000000000000000000000000000000000000000000000000008152600401610acb9190611aed565b60405180910390fd5b610adc610ff6565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610b5e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6882826110c5565b5050565b6000801b610b7981610e25565b610b816110e7565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c687f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3557336040517fa90b4461000000000000000000000000000000000000000000000000000000008152600401610c2c9190611aed565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190611c40565b9050610cd282826106e6565b610d155780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610d0c929190611c6d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8686866040518463ffffffff1660e01b8152600401610d7293929190611cb7565b600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610e1e5750610e1d826110f4565b5b9050919050565b610e3681610e31610fee565b61115e565b50565b610e446000806111af565b565b610e4f826104b3565b610e5881610e25565b610e62838361129f565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610e99610fee565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f07828261136c565b505050565b6000610f166109db565b610f1f426113ef565b610f299190611d1d565b9050610f358282611449565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610f7b919061185c565b60405180910390a25050565b6000610f92826114fc565b610f9b426113ef565b610fa59190611d1d565b9050610fb182826111af565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610fe2929190611b08565b60405180910390a15050565b600033905090565b600080611001610adf565b9150915061100e81610e68565b1580611020575061101e81610e7d565b155b1561106257806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401611059919061185c565b60405180910390fd5b6110766000801b6110716106ad565b61136c565b506110846000801b8361129f565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b6110ce826104b3565b6110d781610e25565b6110e1838361136c565b50505050565b6110f2600080611449565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61116882826106e6565b6111ab5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016111a2929190611c6d565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff1690506111d181610e68565b15611250576111df81610e7d565b1561122257600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff16021790555061124f565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361135a57600073ffffffffffffffffffffffffffffffffffffffff166112cb6106ad565b73ffffffffffffffffffffffffffffffffffffffff1614611318576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611364838361155b565b905092915050565b60008060001b831480156113b257506113836106ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156113dd57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6113e7838361164c565b905092915050565b600065ffffffffffff8016821115611441576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401611438929190611db8565b60405180910390fd5b819050919050565b6000611453610adf565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506114c581610e68565b156114f7577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806115076109db565b90508065ffffffffffff168365ffffffffffff161161153157828161152c9190611de1565b611553565b6115528365ffffffffffff1661154561046c565b65ffffffffffff1661173e565b5b915050919050565b600061156783836106e6565b61164157600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115de610fee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611646565b600090505b92915050565b600061165883836106e6565b1561173357600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116d0610fee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611738565b600090505b92915050565b600061174d8284108484611755565b905092915050565b60006117608461176f565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117b581611780565b81146117c057600080fd5b50565b6000813590506117d2816117ac565b92915050565b6000602082840312156117ee576117ed61177b565b5b60006117fc848285016117c3565b91505092915050565b60008115159050919050565b61181a81611805565b82525050565b60006020820190506118356000830184611811565b92915050565b600065ffffffffffff82169050919050565b6118568161183b565b82525050565b6000602082019050611871600083018461184d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006118bc6118b76118b284611877565b611897565b611877565b9050919050565b60006118ce826118a1565b9050919050565b60006118e0826118c3565b9050919050565b6118f0816118d5565b82525050565b600060208201905061190b60008301846118e7565b92915050565b6000819050919050565b61192481611911565b811461192f57600080fd5b50565b6000813590506119418161191b565b92915050565b60006020828403121561195d5761195c61177b565b5b600061196b84828501611932565b91505092915050565b61197d81611911565b82525050565b60006020820190506119986000830184611974565b92915050565b60006119a982611877565b9050919050565b6119b98161199e565b81146119c457600080fd5b50565b6000813590506119d6816119b0565b92915050565b600080604083850312156119f3576119f261177b565b5b6000611a0185828601611932565b9250506020611a12858286016119c7565b9150509250929050565b600060208284031215611a3257611a3161177b565b5b6000611a40848285016119c7565b91505092915050565b611a528161183b565b8114611a5d57600080fd5b50565b600081359050611a6f81611a49565b92915050565b600060208284031215611a8b57611a8a61177b565b5b6000611a9984828501611a60565b91505092915050565b6000611aad826118c3565b9050919050565b611abd81611aa2565b82525050565b6000602082019050611ad86000830184611ab4565b92915050565b611ae78161199e565b82525050565b6000602082019050611b026000830184611ade565b92915050565b6000604082019050611b1d600083018561184d565b611b2a602083018461184d565b9392505050565b60008060408385031215611b4857611b4761177b565b5b6000611b56858286016119c7565b9250506020611b6785828601611932565b9150509250929050565b6000604082019050611b866000830185611ade565b611b93602083018461184d565b9392505050565b6000611ba58261199e565b9050919050565b611bb581611b9a565b8114611bc057600080fd5b50565b600081359050611bd281611bac565b92915050565b600080600060608486031215611bf157611bf061177b565b5b6000611bff868287016119c7565b9350506020611c1086828701611932565b9250506040611c2186828701611bc3565b9150509250925092565b600081519050611c3a816119b0565b92915050565b600060208284031215611c5657611c5561177b565b5b6000611c6484828501611c2b565b91505092915050565b6000604082019050611c826000830185611ade565b611c8f6020830184611974565b9392505050565b6000611ca1826118c3565b9050919050565b611cb181611c96565b82525050565b6000606082019050611ccc6000830186611ade565b611cd96020830185611974565b611ce66040830184611ca8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d288261183b565b9150611d338361183b565b9250828201905065ffffffffffff811115611d5157611d50611cee565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000611d89611d84611d7f84611d57565b611897565b611d61565b9050919050565b611d9981611d6e565b82525050565b6000819050919050565b611db281611d9f565b82525050565b6000604082019050611dcd6000830185611d90565b611dda6020830184611da9565b9392505050565b6000611dec8261183b565b9150611df78361183b565b9250828203905065ffffffffffff811115611e1557611e14611cee565b5b9291505056fea2646970667358221220d1876682a0029faa45012b63f6e33c43f45fdd5e971193958a65b47631b6915264736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806384ef8ffc116100c3578063cc8463c81161007c578063cc8463c814610369578063cefc142914610387578063cf6eefb714610391578063d547741f146103b0578063d602b9fd146103cc578063dd738e6c146103d65761014d565b806384ef8ffc146102a45780638da5cb5b146102c257806391d14854146102e0578063a1eda53c14610310578063a217fddf1461032f578063a8c008611461034d5761014d565b80632a3fea62116101155780632a3fea62146101f85780632f2ff15d1461021657806336568abe14610232578063634e93da1461024e578063649a5ec71461026a5780637b103999146102865761014d565b806301ffc9a714610152578063022d63fb14610182578063095f025e146101a05780630aa6220b146101be578063248a9ca3146101c8575b600080fd5b61016c600480360381019061016791906117d8565b6103f2565b6040516101799190611820565b60405180910390f35b61018a61046c565b604051610197919061185c565b60405180910390f35b6101a8610477565b6040516101b591906118f6565b60405180910390f35b6101c661049b565b005b6101e260048036038101906101dd9190611947565b6104b3565b6040516101ef9190611983565b60405180910390f35b6102006104d2565b60405161020d9190611983565b60405180910390f35b610230600480360381019061022b91906119dc565b6104f6565b005b61024c600480360381019061024791906119dc565b610540565b005b61026860048036038101906102639190611a1c565b610655565b005b610284600480360381019061027f9190611a75565b61066f565b005b61028e610689565b60405161029b9190611ac3565b60405180910390f35b6102ac6106ad565b6040516102b99190611aed565b60405180910390f35b6102ca6106d7565b6040516102d79190611aed565b60405180910390f35b6102fa60048036038101906102f591906119dc565b6106e6565b6040516103079190611820565b60405180910390f35b610318610750565b604051610326929190611b08565b60405180910390f35b6103376107b0565b6040516103449190611983565b60405180910390f35b61036760048036038101906103629190611b31565b6107b7565b005b6103716109db565b60405161037e919061185c565b60405180910390f35b61038f610a49565b005b610399610adf565b6040516103a7929190611b71565b60405180910390f35b6103ca60048036038101906103c591906119dc565b610b22565b005b6103d4610b6c565b005b6103f060048036038101906103eb9190611bd8565b610b84565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610465575061046482610dab565b5b9050919050565b600062069780905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000801b6104a881610e25565b6104b0610e39565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b8203610532576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053c8282610e46565b5050565b6000801b8214801561058457506105556106ad565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1561064757600080610594610adf565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806105da57506105d881610e68565b155b806105eb57506105e981610e7d565b155b1561062d57806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610624919061185c565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106518282610e91565b5050565b6000801b61066281610e25565b61066b82610f0c565b5050565b6000801b61067c81610e25565b61068582610f87565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006106e16106ad565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061077381610e68565b8015610785575061078381610e7d565b155b610791576000806107a8565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c687f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086857336040517fa90b446100000000000000000000000000000000000000000000000000000000815260040161085f9190611aed565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190611c40565b905061090582826106e6565b6109485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161093f929190611c6d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086185856040518363ffffffff1660e01b81526004016109a3929190611c6d565b600060405180830381600087803b1580156109bd57600080fd5b505af11580156109d1573d6000803e3d6000fd5b5050505050505050565b6000806002601a9054906101000a900465ffffffffffff1690506109fe81610e68565b8015610a0f5750610a0e81610e7d565b5b610a2d576001601a9054906101000a900465ffffffffffff16610a43565b600260149054906101000a900465ffffffffffff165b91505090565b6000610a53610adf565b5090508073ffffffffffffffffffffffffffffffffffffffff16610a75610fee565b73ffffffffffffffffffffffffffffffffffffffff1614610ad457610a98610fee565b6040517fc22c8022000000000000000000000000000000000000000000000000000000008152600401610acb9190611aed565b60405180910390fd5b610adc610ff6565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b8203610b5e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6882826110c5565b5050565b6000801b610b7981610e25565b610b816110e7565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c687f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3557336040517fa90b4461000000000000000000000000000000000000000000000000000000008152600401610c2c9190611aed565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc69190611c40565b9050610cd282826106e6565b610d155780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610d0c929190611c6d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8686866040518463ffffffff1660e01b8152600401610d7293929190611cb7565b600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610e1e5750610e1d826110f4565b5b9050919050565b610e3681610e31610fee565b61115e565b50565b610e446000806111af565b565b610e4f826104b3565b610e5881610e25565b610e62838361129f565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610e99610fee565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f07828261136c565b505050565b6000610f166109db565b610f1f426113ef565b610f299190611d1d565b9050610f358282611449565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610f7b919061185c565b60405180910390a25050565b6000610f92826114fc565b610f9b426113ef565b610fa59190611d1d565b9050610fb182826111af565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610fe2929190611b08565b60405180910390a15050565b600033905090565b600080611001610adf565b9150915061100e81610e68565b1580611020575061101e81610e7d565b155b1561106257806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401611059919061185c565b60405180910390fd5b6110766000801b6110716106ad565b61136c565b506110846000801b8361129f565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b6110ce826104b3565b6110d781610e25565b6110e1838361136c565b50505050565b6110f2600080611449565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61116882826106e6565b6111ab5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016111a2929190611c6d565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff1690506111d181610e68565b15611250576111df81610e7d565b1561122257600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff16021790555061124f565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361135a57600073ffffffffffffffffffffffffffffffffffffffff166112cb6106ad565b73ffffffffffffffffffffffffffffffffffffffff1614611318576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611364838361155b565b905092915050565b60008060001b831480156113b257506113836106ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156113dd57600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6113e7838361164c565b905092915050565b600065ffffffffffff8016821115611441576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401611438929190611db8565b60405180910390fd5b819050919050565b6000611453610adf565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506114c581610e68565b156114f7577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806115076109db565b90508065ffffffffffff168365ffffffffffff161161153157828161152c9190611de1565b611553565b6115528365ffffffffffff1661154561046c565b65ffffffffffff1661173e565b5b915050919050565b600061156783836106e6565b61164157600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115de610fee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611646565b600090505b92915050565b600061165883836106e6565b1561173357600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116d0610fee565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050611738565b600090505b92915050565b600061174d8284108484611755565b905092915050565b60006117608461176f565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117b581611780565b81146117c057600080fd5b50565b6000813590506117d2816117ac565b92915050565b6000602082840312156117ee576117ed61177b565b5b60006117fc848285016117c3565b91505092915050565b60008115159050919050565b61181a81611805565b82525050565b60006020820190506118356000830184611811565b92915050565b600065ffffffffffff82169050919050565b6118568161183b565b82525050565b6000602082019050611871600083018461184d565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006118bc6118b76118b284611877565b611897565b611877565b9050919050565b60006118ce826118a1565b9050919050565b60006118e0826118c3565b9050919050565b6118f0816118d5565b82525050565b600060208201905061190b60008301846118e7565b92915050565b6000819050919050565b61192481611911565b811461192f57600080fd5b50565b6000813590506119418161191b565b92915050565b60006020828403121561195d5761195c61177b565b5b600061196b84828501611932565b91505092915050565b61197d81611911565b82525050565b60006020820190506119986000830184611974565b92915050565b60006119a982611877565b9050919050565b6119b98161199e565b81146119c457600080fd5b50565b6000813590506119d6816119b0565b92915050565b600080604083850312156119f3576119f261177b565b5b6000611a0185828601611932565b9250506020611a12858286016119c7565b9150509250929050565b600060208284031215611a3257611a3161177b565b5b6000611a40848285016119c7565b91505092915050565b611a528161183b565b8114611a5d57600080fd5b50565b600081359050611a6f81611a49565b92915050565b600060208284031215611a8b57611a8a61177b565b5b6000611a9984828501611a60565b91505092915050565b6000611aad826118c3565b9050919050565b611abd81611aa2565b82525050565b6000602082019050611ad86000830184611ab4565b92915050565b611ae78161199e565b82525050565b6000602082019050611b026000830184611ade565b92915050565b6000604082019050611b1d600083018561184d565b611b2a602083018461184d565b9392505050565b60008060408385031215611b4857611b4761177b565b5b6000611b56858286016119c7565b9250506020611b6785828601611932565b9150509250929050565b6000604082019050611b866000830185611ade565b611b93602083018461184d565b9392505050565b6000611ba58261199e565b9050919050565b611bb581611b9a565b8114611bc057600080fd5b50565b600081359050611bd281611bac565b92915050565b600080600060608486031215611bf157611bf061177b565b5b6000611bff868287016119c7565b9350506020611c1086828701611932565b9250506040611c2186828701611bc3565b9150509250925092565b600081519050611c3a816119b0565b92915050565b600060208284031215611c5657611c5561177b565b5b6000611c6484828501611c2b565b91505092915050565b6000604082019050611c826000830185611ade565b611c8f6020830184611974565b9392505050565b6000611ca1826118c3565b9050919050565b611cb181611c96565b82525050565b6000606082019050611ccc6000830186611ade565b611cd96020830185611974565b611ce66040830184611ca8565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d288261183b565b9150611d338361183b565b9250828201905065ffffffffffff811115611d5157611d50611cee565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000611d89611d84611d7f84611d57565b611897565b611d61565b9050919050565b611d9981611d6e565b82525050565b6000819050919050565b611db281611d9f565b82525050565b6000604082019050611dcd6000830185611d90565b611dda6020830184611da9565b9392505050565b6000611dec8261183b565b9150611df78361183b565b9250828203905065ffffffffffff811115611e1557611e14611cee565b5b9291505056fea2646970667358221220d1876682a0029faa45012b63f6e33c43f45fdd5e971193958a65b47631b6915264736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
