{
  "_format": "hh-sol-artifact-1",
  "contractName": "CollateralFactorsRiskSteward",
  "sourceName": "contracts/RiskSteward/CollateralFactorsRiskSteward.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "corePoolComptroller_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "riskStewardReceiver_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidPool",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSafeDeltaBps",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTwoUintLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyRiskStewardReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RedundantValue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RenounceOwnershipNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "errorCode",
          "type": "uint256"
        }
      ],
      "name": "SetCollateralFactorFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnsupportedUpdateType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "market",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newCollateralFactor",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newLiquidationThreshold",
          "type": "uint256"
        }
      ],
      "name": "CollateralFactorsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldSafeDeltaBps",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newSafeDeltaBps",
          "type": "uint256"
        }
      ],
      "name": "SafeDeltaBpsUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "COLLATERAL_FACTORS",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "COLLATERAL_FACTORS_KEY",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CORE_POOL_COMPTROLLER",
      "outputs": [
        {
          "internalType": "contract ICorePoolComptroller",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RISK_STEWARD_RECEIVER",
      "outputs": [
        {
          "internalType": "contract IRiskStewardReceiver",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "update",
          "type": "tuple"
        }
      ],
      "name": "applyUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "update",
          "type": "tuple"
        }
      ],
      "name": "isSafeForDirectExecution",
      "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": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "safeDeltaBps",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "safeDeltaBps_",
          "type": "uint256"
        }
      ],
      "name": "setSafeDeltaBps",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b50604051611bcc380380611bcc83398101604081905261002f91610160565b6100388161005a565b6001600160a01b03808316608052811660a052610053610084565b5050610193565b6001600160a01b038116610081576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff16156100f05760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610142576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b038116811461015b57600080fd5b919050565b6000806040838503121561017357600080fd5b61017c83610144565b915061018a60208401610144565b90509250929050565b60805160a0516119ff6101cd600039600081816101f6015261077201526000818161030501528181610e46015261106901526119ff6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b4a0bdf311610097578063e62569be11610066578063e62569be1461027a578063ee97f265146102e4578063f2fde38b146102ed578063fa7b81a01461030057600080fd5b8063b4a0bdf314610218578063bf63783914610236578063c4d66de814610249578063e30c39781461025c57600080fd5b8063715018a6116100d3578063715018a6146101a257806379ba5097146101aa5780638da5cb5b146101b2578063b296e6cb146101f157600080fd5b80630e32cb861461010557806312cc26471461011a5780632c47d86f1461016c57806342b7cfbd1461017f575b600080fd5b6101186101133660046115fe565b610327565b005b6101566040518060400160405280601181526020017f636f6c6c61746572616c466163746f727300000000000000000000000000000081525081565b6040516101639190611686565b60405180910390f35b61011861017a366004611699565b61033b565b61019261018d3660046116b2565b610434565b6040519015158152602001610163565b610118610671565b6101186106a3565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610163565b6101cc7f000000000000000000000000000000000000000000000000000000000000000081565b60975473ffffffffffffffffffffffffffffffffffffffff166101cc565b6101186102443660046116b2565b61075a565b6101186102573660046115fe565b610927565b60655473ffffffffffffffffffffffffffffffffffffffff166101cc565b60408051808201909152601181527f636f6c6c61746572616c466163746f72730000000000000000000000000000006020909101526102d67f8370b9108dc54d549f7f967730058d7047833aa4750d10ac92879dc48e94db6881565b604051908152602001610163565b6102d660c95481565b6101186102fb3660046115fe565b610ab7565b6101cc7f000000000000000000000000000000000000000000000000000000000000000081565b61032f610b67565b61033881610bea565b50565b6103796040518060400160405280601881526020017f7365745361666544656c74614270732875696e74323536290000000000000000815250610d0c565b6127108111156103b5576040517fc514758500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c9548082036103f1576040517f925cd79500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c982905560408051828152602081018490527fa05c0cb0e77decc6503407c6ca159106b8b001d9feb7927d08fad60094a934ab91015b60405180910390a15050565b60408051808201909152601181527f636f6c6c61746572616c466163746f727300000000000000000000000000000060209091015260007f7c8f46ef723ab2ab60806988cffa728fb87cc55b8af2ef536d78623b716b249860808301350161063f576104a861014083016101208401611708565b6bffffffffffffffffffffffff16156104c357506000919050565b60006104d560608401604085016115fe565b73ffffffffffffffffffffffffffffffffffffffff16635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611725565b905060008061059261055860a0870187611742565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de592505050565b90925090506000806105b3856105ae60608a0160408b016115fe565b610e41565b9150915081841480156105c557508083145b156105fc576040517f925cd79500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811580610607575080155b15610619575060009695505050505050565b6106238483610fd6565b801561063457506106348382610fd6565b979650505050505050565b6040517f80919d7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606554339073ffffffffffffffffffffffffffffffffffffffff168114610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033881611026565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107c9576040517f3a739dd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107db60608301604084016115fe565b73ffffffffffffffffffffffffffffffffffffffff16635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108499190611725565b9050600061085f61014084016101208501611708565b60408051808201909152601181527f636f6c6c61746572616c466163746f727300000000000000000000000000000060209091015290507f7c8f46ef723ab2ab60806988cffa728fb87cc55b8af2ef536d78623b716b249860808401350161063f576109226020840135836108da60608701604088016115fe565b846108e860a0890189611742565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061105792505050565b505050565b600054610100900460ff16158080156109475750600054600160ff909116105b806109615750303b158015610961575060005460ff166001145b6109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610748565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a4b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a54826112e7565b8015610ab357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610428565b5050565b610abf610b67565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610b2260335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff163314610be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610748565b565b73ffffffffffffffffffffffffffffffffffffffff8116610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610748565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610428565b6097546040517f18c5e8ab00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906318c5e8ab90610d6590339086906004016117a7565b602060405180830381865afa158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da691906117f3565b905080610ab3573330836040517f4a3fa2930000000000000000000000000000000000000000000000000000000081526004016107489392919061180e565b6000808251604014610e23576040517f3bead5a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82806020019051810190610e379190611850565b9094909350915050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f8e8f294b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152851690638e8f294b9060240160e060405180830381865afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190611874565b50939650909450610fcf9350505050565b6040517f8e8f294b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152851690638e8f294b90602401606060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc891906118e7565b9093509150505b9250929050565b600080828411610fef57610fea848461194b565b610ff9565b610ff9838561194b565b905060006127108460c95461100e919061195e565b6110189190611975565b909111159150505b92915050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556103388161138f565b60008061106383610de5565b915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036111b5576040517f9159b1770000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490526064820183905260009190881690639159b177906084016020604051808303816000875af115801561114e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117291906119b0565b905080156111af576040517ff69d209900000000000000000000000000000000000000000000000000000000815260048101829052602401610748565b5061128b565b6bffffffffffffffffffffffff8416156111fb576040517f2083cd4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5cc4fdeb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820184905260448201839052871690635cc4fdeb90606401600060405180830381600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff87169189917f345175133778c4fdb297de94ca161a1248998f240be2ae89b35225d0167e0648910160405180910390a350505050505050565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b611386611406565b610338816114a5565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b610be861153c565b600054610100900460ff1661032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b600054610100900460ff166115d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b610be833611026565b73ffffffffffffffffffffffffffffffffffffffff8116811461033857600080fd5b60006020828403121561161057600080fd5b813561161b816115dc565b9392505050565b6000815180845260005b818110156116485760208185018101518683018201520161162c565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061161b6020830184611622565b6000602082840312156116ab57600080fd5b5035919050565b6000602082840312156116c457600080fd5b813567ffffffffffffffff8111156116db57600080fd5b8201610180818503121561161b57600080fd5b6bffffffffffffffffffffffff8116811461033857600080fd5b60006020828403121561171a57600080fd5b813561161b816116ee565b60006020828403121561173757600080fd5b815161161b816115dc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261177757600080fd5b83018035915067ffffffffffffffff82111561179257600080fd5b602001915036819003821315610fcf57600080fd5b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006117d66040830184611622565b949350505050565b805180151581146117ee57600080fd5b919050565b60006020828403121561180557600080fd5b61161b826117de565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526118476060830184611622565b95945050505050565b6000806040838503121561186357600080fd5b505080516020909101519092909150565b600080600080600080600060e0888a03121561188f57600080fd5b611898886117de565b9650602088015195506118ad604089016117de565b9450606088015193506080880151925060a08801516118cb816116ee565b91506118d960c089016117de565b905092959891949750929550565b6000806000606084860312156118fc57600080fd5b611905846117de565b925060208401519150604084015190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156110205761102061191c565b80820281158282048414176110205761102061191c565b6000826119ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156119c257600080fd5b505191905056fea264697066735822122084b3e9480a69f40c7501f05acd488455a6cbdb0445afd1f687116b636361c5c264736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063b4a0bdf311610097578063e62569be11610066578063e62569be1461027a578063ee97f265146102e4578063f2fde38b146102ed578063fa7b81a01461030057600080fd5b8063b4a0bdf314610218578063bf63783914610236578063c4d66de814610249578063e30c39781461025c57600080fd5b8063715018a6116100d3578063715018a6146101a257806379ba5097146101aa5780638da5cb5b146101b2578063b296e6cb146101f157600080fd5b80630e32cb861461010557806312cc26471461011a5780632c47d86f1461016c57806342b7cfbd1461017f575b600080fd5b6101186101133660046115fe565b610327565b005b6101566040518060400160405280601181526020017f636f6c6c61746572616c466163746f727300000000000000000000000000000081525081565b6040516101639190611686565b60405180910390f35b61011861017a366004611699565b61033b565b61019261018d3660046116b2565b610434565b6040519015158152602001610163565b610118610671565b6101186106a3565b60335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610163565b6101cc7f000000000000000000000000000000000000000000000000000000000000000081565b60975473ffffffffffffffffffffffffffffffffffffffff166101cc565b6101186102443660046116b2565b61075a565b6101186102573660046115fe565b610927565b60655473ffffffffffffffffffffffffffffffffffffffff166101cc565b60408051808201909152601181527f636f6c6c61746572616c466163746f72730000000000000000000000000000006020909101526102d67f8370b9108dc54d549f7f967730058d7047833aa4750d10ac92879dc48e94db6881565b604051908152602001610163565b6102d660c95481565b6101186102fb3660046115fe565b610ab7565b6101cc7f000000000000000000000000000000000000000000000000000000000000000081565b61032f610b67565b61033881610bea565b50565b6103796040518060400160405280601881526020017f7365745361666544656c74614270732875696e74323536290000000000000000815250610d0c565b6127108111156103b5576040517fc514758500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c9548082036103f1576040517f925cd79500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c982905560408051828152602081018490527fa05c0cb0e77decc6503407c6ca159106b8b001d9feb7927d08fad60094a934ab91015b60405180910390a15050565b60408051808201909152601181527f636f6c6c61746572616c466163746f727300000000000000000000000000000060209091015260007f7c8f46ef723ab2ab60806988cffa728fb87cc55b8af2ef536d78623b716b249860808301350161063f576104a861014083016101208401611708565b6bffffffffffffffffffffffff16156104c357506000919050565b60006104d560608401604085016115fe565b73ffffffffffffffffffffffffffffffffffffffff16635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561051f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105439190611725565b905060008061059261055860a0870187611742565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610de592505050565b90925090506000806105b3856105ae60608a0160408b016115fe565b610e41565b9150915081841480156105c557508083145b156105fc576040517f925cd79500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811580610607575080155b15610619575060009695505050505050565b6106238483610fd6565b801561063457506106348382610fd6565b979650505050505050565b6040517f80919d7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606554339073ffffffffffffffffffffffffffffffffffffffff168114610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033881611026565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107c9576040517f3a739dd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107db60608301604084016115fe565b73ffffffffffffffffffffffffffffffffffffffff16635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108499190611725565b9050600061085f61014084016101208501611708565b60408051808201909152601181527f636f6c6c61746572616c466163746f727300000000000000000000000000000060209091015290507f7c8f46ef723ab2ab60806988cffa728fb87cc55b8af2ef536d78623b716b249860808401350161063f576109226020840135836108da60608701604088016115fe565b846108e860a0890189611742565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061105792505050565b505050565b600054610100900460ff16158080156109475750600054600160ff909116105b806109615750303b158015610961575060005460ff166001145b6109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610748565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a4b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610a54826112e7565b8015610ab357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610428565b5050565b610abf610b67565b6065805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610b2260335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60335473ffffffffffffffffffffffffffffffffffffffff163314610be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610748565b565b73ffffffffffffffffffffffffffffffffffffffff8116610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610748565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09101610428565b6097546040517f18c5e8ab00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906318c5e8ab90610d6590339086906004016117a7565b602060405180830381865afa158015610d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da691906117f3565b905080610ab3573330836040517f4a3fa2930000000000000000000000000000000000000000000000000000000081526004016107489392919061180e565b6000808251604014610e23576040517f3bead5a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82806020019051810190610e379190611850565b9094909350915050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f8e8f294b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152851690638e8f294b9060240160e060405180830381865afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190611874565b50939650909450610fcf9350505050565b6040517f8e8f294b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152851690638e8f294b90602401606060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc891906118e7565b9093509150505b9250929050565b600080828411610fef57610fea848461194b565b610ff9565b610ff9838561194b565b905060006127108460c95461100e919061195e565b6110189190611975565b909111159150505b92915050565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556103388161138f565b60008061106383610de5565b915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036111b5576040517f9159b1770000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018490526064820183905260009190881690639159b177906084016020604051808303816000875af115801561114e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117291906119b0565b905080156111af576040517ff69d209900000000000000000000000000000000000000000000000000000000815260048101829052602401610748565b5061128b565b6bffffffffffffffffffffffff8416156111fb576040517f2083cd4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f5cc4fdeb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820184905260448201839052871690635cc4fdeb90606401600060405180830381600087803b15801561127257600080fd5b505af1158015611286573d6000803e3d6000fd5b505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff87169189917f345175133778c4fdb297de94ca161a1248998f240be2ae89b35225d0167e0648910160405180910390a350505050505050565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b611386611406565b610338816114a5565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b610be861153c565b600054610100900460ff1661032f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b600054610100900460ff166115d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610748565b610be833611026565b73ffffffffffffffffffffffffffffffffffffffff8116811461033857600080fd5b60006020828403121561161057600080fd5b813561161b816115dc565b9392505050565b6000815180845260005b818110156116485760208185018101518683018201520161162c565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061161b6020830184611622565b6000602082840312156116ab57600080fd5b5035919050565b6000602082840312156116c457600080fd5b813567ffffffffffffffff8111156116db57600080fd5b8201610180818503121561161b57600080fd5b6bffffffffffffffffffffffff8116811461033857600080fd5b60006020828403121561171a57600080fd5b813561161b816116ee565b60006020828403121561173757600080fd5b815161161b816115dc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261177757600080fd5b83018035915067ffffffffffffffff82111561179257600080fd5b602001915036819003821315610fcf57600080fd5b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006117d66040830184611622565b949350505050565b805180151581146117ee57600080fd5b919050565b60006020828403121561180557600080fd5b61161b826117de565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526118476060830184611622565b95945050505050565b6000806040838503121561186357600080fd5b505080516020909101519092909150565b600080600080600080600060e0888a03121561188f57600080fd5b611898886117de565b9650602088015195506118ad604089016117de565b9450606088015193506080880151925060a08801516118cb816116ee565b91506118d960c089016117de565b905092959891949750929550565b6000806000606084860312156118fc57600080fd5b611905846117de565b925060208401519150604084015190509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156110205761102061191c565b80820281158282048414176110205761102061191c565b6000826119ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156119c257600080fd5b505191905056fea264697066735822122084b3e9480a69f40c7501f05acd488455a6cbdb0445afd1f687116b636361c5c264736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
