{
    "_format": "hh-sol-artifact-1",
    "contractName": "Whitelist",
    "sourceName": "contracts/vanilla/Whitelist.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_addressbook",
                    "type": "address"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "callee",
                    "type": "address"
                }
            ],
            "name": "CalleeBlacklisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "callee",
                    "type": "address"
                }
            ],
            "name": "CalleeWhitelisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "collateral",
                    "type": "address"
                }
            ],
            "name": "CollateralBlacklisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "collateral",
                    "type": "address"
                }
            ],
            "name": "CollateralWhitelisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "productHash",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "underlying",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "strike",
                    "type": "address"
                }
            ],
            "name": "ProductBlacklisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "productHash",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "underlying",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "strike",
                    "type": "address"
                }
            ],
            "name": "ProductWhitelisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "vToken",
                    "type": "address"
                }
            ],
            "name": "VTokenBlacklisted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "vToken",
                    "type": "address"
                }
            ],
            "name": "VTokenWhitelisted",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "addressbook",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_callee",
                    "type": "address"
                }
            ],
            "name": "blacklistCallee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_collateral",
                    "type": "address"
                }
            ],
            "name": "blacklistCollateral",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_underlying",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_strike",
                    "type": "address"
                }
            ],
            "name": "blacklistProduct",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_vTokenAddress",
                    "type": "address"
                }
            ],
            "name": "blacklistVToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_callee",
                    "type": "address"
                }
            ],
            "name": "isWhitelistedCallee",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_collateral",
                    "type": "address"
                }
            ],
            "name": "isWhitelistedCollateral",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_underlying",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_strike",
                    "type": "address"
                }
            ],
            "name": "isWhitelistedProduct",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_vToken",
                    "type": "address"
                }
            ],
            "name": "isWhitelistedVToken",
            "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": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_callee",
                    "type": "address"
                }
            ],
            "name": "whitelistCallee",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_collateral",
                    "type": "address"
                }
            ],
            "name": "whitelistCollateral",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_underlying",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "_strike",
                    "type": "address"
                }
            ],
            "name": "whitelistProduct",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_vTokenAddress",
                    "type": "address"
                }
            ],
            "name": "whitelistVToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50604051610a35380380610a3583398101604081905261002f91610107565b610038336100b7565b6001600160a01b0381166100925760405162461bcd60e51b815260206004820152601460248201527f496e76616c6964206164647265737320626f6f6b000000000000000000000000604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610118578081fd5b81516001600160a01b038116811461012e578182fd5b9392505050565b6108f1806101446000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a34626c411610097578063de507bad11610066578063de507bad1461023d578063ebd31e8e14610250578063f2fde38b14610263578063f9839d891461027657600080fd5b8063a34626c4146101d8578063ab0fed69146101eb578063b1bbc15d14610217578063b93cb26c1461022a57600080fd5b806370dc320c116100d357806370dc320c14610153578063715018a6146101835780638da5cb5b1461018b578063a2ae545a1461019c57600080fd5b8063069cea531461010557806315f73b011461011a578063173fd09d1461012d578063708a039314610140575b600080fd5b61011861011336600461082f565b6102a2565b005b61011861012836600461082f565b6102f3565b61011861013b36600461082f565b610344565b61011861014e36600461082f565b61048a565b600154610166906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101186104de565b6000546001600160a01b0316610166565b6101c86101aa36600461082f565b6001600160a01b031660009081526005602052604090205460ff1690565b604051901515815260200161017a565b6101186101e636600461082f565b6104f2565b6101c86101f936600461082f565b6001600160a01b031660009081526004602052604090205460ff1690565b6101c861022536600461086e565b610546565b61011861023836600461086e565b6105a1565b61011861024b36600461086e565b610634565b61011861025e36600461082f565b6106bb565b61011861027136600461082f565b61070c565b6101c861028436600461082f565b6001600160a01b031660009081526003602052604090205460ff1690565b6102aa610785565b6001600160a01b038116600081815260046020526040808220805460ff19169055517ff4c14008118c6f93f4b42204f0ddc7cfb15c538348f74af84f2591e8bb97702f9190a250565b6102fb610785565b6001600160a01b038116600081815260036020526040808220805460ff19169055517f2e27eeed3fdce92fcbb383357973ca18ad411294e3cb4f9c07a8665aee9bcf189190a250565b600160009054906101000a90046001600160a01b03166001600160a01b031663be3082716040518163ffffffff1660e01b815260040160206040518083038186803b15801561039257600080fd5b505afa1580156103a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ca9190610852565b6001600160a01b0316336001600160a01b03161461043e5760405162461bcd60e51b815260206004820152602660248201527f57686974656c6973743a2053656e646572206973206e6f742056546f6b656e466044820152656163746f727960d01b60648201526084015b60405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f4aff572e5bd6c948ea2c5d2c79427f1aee2c5b88817bcb1c9e88db1c933ca6469190a250565b610492610785565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f9334f1cf560b8678d242a97ff8aa0f60f61c40b3b7e3bd1a1b6759bb0cec6b9e9190a250565b6104e6610785565b6104f060006107df565b565b6104fa610785565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f38c11947f16670fa95ddb76444c21a13a0be4f0132d147eb6245c4b94ea889fa9190a250565b60008083836040516020016105719291906001600160a01b0392831681529116602082015260400190565b60408051808303601f1901815291815281516020928301206000908152600290925290205460ff16949350505050565b6105a9610785565b604080516001600160a01b038481166020808401829052918516838501819052845180850386018152606085018087528151918501919091206000818152600290955295909320805460ff191660011790559184905290917f6797426648bd0936d2e6b5fe3bddf2bd86e8cf5f68dccf77210a965f89b2d726906080015b60405180910390a3505050565b61063c610785565b604080516001600160a01b038481166020808401829052918516838501819052845180850386018152606085018087528151918501919091206000818152600290955295909320805460ff191690559184905290917fd506bff41709275054d8a33537af998c6f05f55dd09171f8ffaf1b4ecd99a8a790608001610627565b6106c3610785565b6001600160a01b038116600081815260056020526040808220805460ff19169055517f1b04f3cb09a85dced592e37ae08b2a135757683e30116221003f6620de94d4009190a250565b610714610785565b6001600160a01b0381166107795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610435565b610782816107df565b50565b6000546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610435565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610840578081fd5b813561084b816108a6565b9392505050565b600060208284031215610863578081fd5b815161084b816108a6565b60008060408385031215610880578081fd5b823561088b816108a6565b9150602083013561089b816108a6565b809150509250929050565b6001600160a01b038116811461078257600080fdfea2646970667358221220137fb6fa4d4efae51ad47bf3c4ff9270e6630c6ea6684a8fb7d984e529a8fda764736f6c63430008040033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063a34626c411610097578063de507bad11610066578063de507bad1461023d578063ebd31e8e14610250578063f2fde38b14610263578063f9839d891461027657600080fd5b8063a34626c4146101d8578063ab0fed69146101eb578063b1bbc15d14610217578063b93cb26c1461022a57600080fd5b806370dc320c116100d357806370dc320c14610153578063715018a6146101835780638da5cb5b1461018b578063a2ae545a1461019c57600080fd5b8063069cea531461010557806315f73b011461011a578063173fd09d1461012d578063708a039314610140575b600080fd5b61011861011336600461082f565b6102a2565b005b61011861012836600461082f565b6102f3565b61011861013b36600461082f565b610344565b61011861014e36600461082f565b61048a565b600154610166906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101186104de565b6000546001600160a01b0316610166565b6101c86101aa36600461082f565b6001600160a01b031660009081526005602052604090205460ff1690565b604051901515815260200161017a565b6101186101e636600461082f565b6104f2565b6101c86101f936600461082f565b6001600160a01b031660009081526004602052604090205460ff1690565b6101c861022536600461086e565b610546565b61011861023836600461086e565b6105a1565b61011861024b36600461086e565b610634565b61011861025e36600461082f565b6106bb565b61011861027136600461082f565b61070c565b6101c861028436600461082f565b6001600160a01b031660009081526003602052604090205460ff1690565b6102aa610785565b6001600160a01b038116600081815260046020526040808220805460ff19169055517ff4c14008118c6f93f4b42204f0ddc7cfb15c538348f74af84f2591e8bb97702f9190a250565b6102fb610785565b6001600160a01b038116600081815260036020526040808220805460ff19169055517f2e27eeed3fdce92fcbb383357973ca18ad411294e3cb4f9c07a8665aee9bcf189190a250565b600160009054906101000a90046001600160a01b03166001600160a01b031663be3082716040518163ffffffff1660e01b815260040160206040518083038186803b15801561039257600080fd5b505afa1580156103a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ca9190610852565b6001600160a01b0316336001600160a01b03161461043e5760405162461bcd60e51b815260206004820152602660248201527f57686974656c6973743a2053656e646572206973206e6f742056546f6b656e466044820152656163746f727960d01b60648201526084015b60405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f4aff572e5bd6c948ea2c5d2c79427f1aee2c5b88817bcb1c9e88db1c933ca6469190a250565b610492610785565b6001600160a01b038116600081815260056020526040808220805460ff19166001179055517f9334f1cf560b8678d242a97ff8aa0f60f61c40b3b7e3bd1a1b6759bb0cec6b9e9190a250565b6104e6610785565b6104f060006107df565b565b6104fa610785565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f38c11947f16670fa95ddb76444c21a13a0be4f0132d147eb6245c4b94ea889fa9190a250565b60008083836040516020016105719291906001600160a01b0392831681529116602082015260400190565b60408051808303601f1901815291815281516020928301206000908152600290925290205460ff16949350505050565b6105a9610785565b604080516001600160a01b038481166020808401829052918516838501819052845180850386018152606085018087528151918501919091206000818152600290955295909320805460ff191660011790559184905290917f6797426648bd0936d2e6b5fe3bddf2bd86e8cf5f68dccf77210a965f89b2d726906080015b60405180910390a3505050565b61063c610785565b604080516001600160a01b038481166020808401829052918516838501819052845180850386018152606085018087528151918501919091206000818152600290955295909320805460ff191690559184905290917fd506bff41709275054d8a33537af998c6f05f55dd09171f8ffaf1b4ecd99a8a790608001610627565b6106c3610785565b6001600160a01b038116600081815260056020526040808220805460ff19169055517f1b04f3cb09a85dced592e37ae08b2a135757683e30116221003f6620de94d4009190a250565b610714610785565b6001600160a01b0381166107795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610435565b610782816107df565b50565b6000546001600160a01b031633146104f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610435565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610840578081fd5b813561084b816108a6565b9392505050565b600060208284031215610863578081fd5b815161084b816108a6565b60008060408385031215610880578081fd5b823561088b816108a6565b9150602083013561089b816108a6565b809150509250929050565b6001600160a01b038116811461078257600080fdfea2646970667358221220137fb6fa4d4efae51ad47bf3c4ff9270e6630c6ea6684a8fb7d984e529a8fda764736f6c63430008040033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
