test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
850 lines (849 loc) • 44.2 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "LoanTokenSettingsLowerAdmin",
"sourceName": "contracts/connectors/loantoken/LoanTokenSettingsLowerAdmin.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "burner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assetAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Burn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "loanAmount",
"type": "uint256"
}
],
"name": "FlashBorrow",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assetAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "price",
"type": "uint256"
}
],
"name": "Mint",
"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": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "limits",
"type": "uint256[]"
}
],
"name": "SetTransactionLimits",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"payable": false,
"stateMutability": "nonpayable",
"type": "fallback"
},
{
"constant": true,
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "baseRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "checkpointSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "collateralTokens",
"type": "address[]"
},
{
"internalType": "bool[]",
"name": "isTorqueLoans",
"type": "bool[]"
}
],
"name": "disableLoanParams",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "earlyAccessToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "initialPrice",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kinkLevel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "liquidityMiningAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "loanParamsIds",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "loanTokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lowUtilBaseRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "lowUtilRateMultiplier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxScaleRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "pauser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "rateMultiplier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "setAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "_baseRate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_rateMultiplier",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_lowUtilBaseRate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_lowUtilRateMultiplier",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_targetLevel",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_kinkLevel",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxScaleRate",
"type": "uint256"
}
],
"name": "setDemandCurve",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_pauser",
"type": "address"
}
],
"name": "setPauser",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "loanToken",
"type": "address"
},
{
"internalType": "address",
"name": "collateralToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "minInitialMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maintenanceMargin",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxLoanTerm",
"type": "uint256"
}
],
"internalType": "struct LoanParamsStruct.LoanParams[]",
"name": "loanParamsList",
"type": "tuple[]"
},
{
"internalType": "bool",
"name": "areTorqueLoans",
"type": "bool"
}
],
"name": "setupLoanParams",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "sovrynContractAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "targetLevel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "target_",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "string",
"name": "funcId",
"type": "string"
},
{
"internalType": "bool",
"name": "isPaused",
"type": "bool"
}
],
"name": "toggleFunctionPause",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "transactionLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "wrbtcTokenAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040526001600090815561001c6001600160e01b0361006f16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610073565b3390565b61192e806100826000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d8f06c83116100ad578063e41b07e31161007c578063e41b07e3146103d1578063e697d2ee146103e4578063ef2b0b39146103f7578063f2fde38b146103ff578063f851a4401461041257610211565b8063d8f06c8314610385578063d97206a414610398578063dd62ed3e146103ab578063e3cded61146103be57610211565b80639bda3a98116100f45780639bda3a981461035d5780639fd0506d14610365578063ba0e43bf1461036d578063ca37e66614610375578063d759dbeb1461037d57610211565b80638da5cb5b1461033d5780638ee6c4e6146103455780638f32d59b1461034d57806395d89b411461035557610211565b8063313ce567116101a8578063704b6c0211610177578063704b6c02146102ff57806370a0823114610312578063797bf385146103255780637b7933b41461032d5780637e37c08c1461033557610211565b8063313ce567146102c75780633291c11a146102dc578063330691ac146102ef57806356e07d70146102f757610211565b80631d0806ae116101e45780631d0806ae1461029a5780631f68f20a146102a25780632d88af4a146102aa5780632f6b600d146102bf57610211565b806306947a3a1461023257806306fdde0314610250578063095ea7b31461026557806318160ddd14610285575b60405162461bcd60e51b815260040161022990611733565b60405180910390fd5b61023a61041a565b60405161024791906116a6565b60405180910390f35b610258610429565b60405161024791906116f2565b61027861027336600461103e565b6104b4565b60405161024791906116d6565b61028d61051f565b60405161024791906116e4565b61028d610525565b61028d61052b565b6102bd6102b8366004610fde565b610531565b005b61023a610577565b6102cf610586565b6040516102479190611783565b61028d6102ea3660046111ae565b61058f565b61028d6105a1565b61028d6105a7565b6102bd61030d366004610fde565b6105ad565b61028d610320366004610fde565b6105f3565b61023a61060e565b61028d610622565b61028d610628565b61023a61062e565b61023a61063d565b61027861064c565b610258610672565b61023a6106cd565b61023a6106dc565b61028d6106eb565b61023a6106f1565b61028d610700565b6102bd610393366004611113565b610706565b6102bd6103a63660046111cc565b6108d5565b61028d6103b9366004611004565b6109dc565b6102bd6103cc366004611178565b610a07565b61028d6103df366004610fde565b610aac565b6102bd6103f236600461106e565b610abe565b61028d610c6f565b6102bd61040d366004610fde565b610c75565b61023a610ca5565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b820191906000526020600020905b81548152906001019060200180831161048f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061050d9086906116e4565b60405180910390a35060015b92915050565b60155490565b600e5481565b60055481565b61053961064c565b6105555760405162461bcd60e51b815260040161022990611763565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6105b561064c565b6105d15760405162461bcd60e51b815260040161022990611763565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316610663610cb4565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b6018546001600160a01b031681565b601b546001600160a01b031681565b60095481565b601a546001600160a01b031681565b60075481565b61070e61064c565b8061072357506019546001600160a01b031633145b61073f5760405162461bcd60e51b815260040161022990611763565b60045460609061010090046001600160a01b031660005b84518110156107c9578185828151811061076c57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361079e576224ea006107a1565b60005b62ffffff168582815181106107b257fe5b602090810291909101015160e00152600101610756565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906107fa9087906004016116c5565b600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085091908101906110de565b915060005b82518110156108ce5782818151811061086a57fe5b60200260200101516010600087848151811061088257fe5b602002602001015160800151876040516020016108a092919061164e565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101610855565b5050505050565b6108dd61064c565b806108f257506019546001600160a01b031633145b61090e5760405162461bcd60e51b815260040161022990611763565b68056bc75e2d63100000610928878963ffffffff610cb816565b11156109465760405162461bcd60e51b815260040161022990611743565b68056bc75e2d63100000610960858763ffffffff610cb816565b111561097e5760405162461bcd60e51b815260040161022990611743565b68056bc75e2d6310000083111580156109a0575068056bc75e2d631000008211155b6109bc5760405162461bcd60e51b815260040161022990611753565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b03163314610a315760405162461bcd60e51b815260040161022990611773565b600082604051602001610a44919061169a565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a8c929190611674565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b610ac661064c565b80610adb57506019546001600160a01b031633145b610af75760405162461bcd60e51b815260040161022990611763565b828114610b165760405162461bcd60e51b815260040161022990611723565b604080518481526020808602820101909152606090848015610b42578160200160208202803883390190505b50905060005b84811015610c05576000868683818110610b5e57fe5b9050602002016020610b739190810190610fde565b858584818110610b7f57fe5b9050602002016020610b94919081019061115a565b604051602001610ba592919061164e565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610be057fe5b6020908102919091018101919091526000918252601090526040812055600101610b48565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610c369084906004016116b4565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050565b600b5481565b610c7d61064c565b610c995760405162461bcd60e51b815260040161022990611763565b610ca281610ce4565b50565b6019546001600160a01b031681565b3390565b600082820183811015610cdd5760405162461bcd60e51b815260040161022990611713565b9392505050565b6001600160a01b038116610d0a5760405162461bcd60e51b815260040161022990611703565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b8035610519816118c5565b60008083601f840112610d8357600080fd5b50813567ffffffffffffffff811115610d9b57600080fd5b602083019150836020820283011115610db357600080fd5b9250929050565b600082601f830112610dcb57600080fd5b8151610dde610dd9826117b8565b611791565b91508181835260208401935060208101905083856020840282011115610e0357600080fd5b60005b83811015610e2f5781610e198882610ec3565b8452506020928301929190910190600101610e06565b5050505092915050565b600082601f830112610e4a57600080fd5b8135610e58610dd9826117b8565b9150818183526020840193506020810190508385610100840282011115610e7e57600080fd5b60005b83811015610e2f5781610e948882610f1d565b8452506020909201916101009190910190600101610e81565b8035610519816118d9565b8035610519816118e2565b8051610519816118e2565b600082601f830112610edf57600080fd5b8135610eed610dd9826117d9565b91508082526020830160208301858383011115610f0957600080fd5b610f1483828461184b565b50505092915050565b60006101008284031215610f3057600080fd5b610f3b610100611791565b90506000610f498484610eb8565b8252506020610f5a84848301610ead565b6020830152506040610f6e84828501610d66565b6040830152506060610f8284828501610d66565b6060830152506080610f9684828501610d66565b60808301525060a0610faa84828501610eb8565b60a08301525060c0610fbe84828501610eb8565b60c08301525060e0610fd284828501610eb8565b60e08301525092915050565b600060208284031215610ff057600080fd5b6000610ffc8484610d66565b949350505050565b6000806040838503121561101757600080fd5b60006110238585610d66565b925050602061103485828601610d66565b9150509250929050565b6000806040838503121561105157600080fd5b600061105d8585610d66565b925050602061103485828601610eb8565b6000806000806040858703121561108457600080fd5b843567ffffffffffffffff81111561109b57600080fd5b6110a787828801610d71565b9450945050602085013567ffffffffffffffff8111156110c657600080fd5b6110d287828801610d71565b95989497509550505050565b6000602082840312156110f057600080fd5b815167ffffffffffffffff81111561110757600080fd5b610ffc84828501610dba565b6000806040838503121561112657600080fd5b823567ffffffffffffffff81111561113d57600080fd5b61114985828601610e39565b925050602061103485828601610ead565b60006020828403121561116c57600080fd5b6000610ffc8484610ead565b6000806040838503121561118b57600080fd5b823567ffffffffffffffff8111156111a257600080fd5b61114985828601610ece565b6000602082840312156111c057600080fd5b6000610ffc8484610eb8565b600080600080600080600060e0888a0312156111e757600080fd5b60006111f38a8a610eb8565b97505060206112048a828b01610eb8565b96505060406112158a828b01610eb8565b95505060606112268a828b01610eb8565b94505060806112378a828b01610eb8565b93505060a06112488a828b01610eb8565b92505060c06112598a828b01610eb8565b91505092959891949750929550565b60006112748383611372565b505060200190565b6000611288838361159c565b50506101000190565b61129a81611819565b82525050565b61129a6112ac82611819565b611883565b60006112bc82611807565b6112c6818561180b565b93506112d183611801565b8060005b838110156112ff5781516112e98882611268565b97506112f483611801565b9250506001016112d5565b509495945050505050565b600061131582611807565b61131f818561180b565b935061132a83611801565b8060005b838110156112ff578151611342888261127c565b975061134d83611801565b92505060010161132e565b61129a81611824565b61129a61136d82611824565b61188e565b61129a81611829565b61129a6113878261182c565b611829565b600061139782611807565b6113a18185611814565b93506113b1818560208601611857565b9290920192915050565b60006113c682611807565b6113d0818561180b565b93506113e0818560208601611857565b6113e9816118af565b9093019392505050565b600061140060268361180b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611448601b8361180b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611481600e8361180b565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006114ab60328361180b565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b60006114ff60158361180b565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611530600f8361180b565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b600061155b600c8361180b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611583600a8361180b565b6937b7363ca830bab9b2b960b11b815260200192915050565b80516101008301906115ae8482611372565b5060208201516115c16020850182611358565b5060408201516115d46040850182611291565b5060608201516115e76060850182611291565b5060808201516115fa6080850182611291565b5060a082015161160d60a0850182611372565b5060c082015161162060c0850182611372565b5060e082015161163360e0850182611372565b50505050565b61129a61138782611829565b61129a81611845565b600061165a82856112a0565b60148201915061166a8284611361565b5060010192915050565b6000611680828561137b565b6004820191506116908284611639565b5060200192915050565b6000610cdd828461138c565b602081016105198284611291565b60208082528101610cdd81846112b1565b60208082528101610cdd818461130a565b602081016105198284611358565b602081016105198284611372565b60208082528101610cdd81846113bb565b60208082528101610519816113f3565b602080825281016105198161143b565b6020808252810161051981611474565b602080825281016105198161149e565b60208082528101610519816114f2565b6020808252810161051981611523565b602080825281016105198161154e565b6020808252810161051981611576565b602081016105198284611645565b60405181810167ffffffffffffffff811182821017156117b057600080fd5b604052919050565b600067ffffffffffffffff8211156117cf57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f057600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061051982611839565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b8381101561187257818101518382015260200161185a565b838111156116335750506000910152565b600061051982611899565b6000610519826118a4565b6000610519826118bf565b6000610519826118b9565b601f01601f191690565b60f81b90565b60601b90565b6118ce81611819565b8114610ca257600080fd5b6118ce81611824565b6118ce8161182956fea365627a7a72315820b0b55ee9e359ac792e9ef4246a0a84956b698fe8615ffaf9289ce5906c100b756c6578706572696d656e74616cf564736f6c63430005110040",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102115760003560e01c80638da5cb5b11610125578063d8f06c83116100ad578063e41b07e31161007c578063e41b07e3146103d1578063e697d2ee146103e4578063ef2b0b39146103f7578063f2fde38b146103ff578063f851a4401461041257610211565b8063d8f06c8314610385578063d97206a414610398578063dd62ed3e146103ab578063e3cded61146103be57610211565b80639bda3a98116100f45780639bda3a981461035d5780639fd0506d14610365578063ba0e43bf1461036d578063ca37e66614610375578063d759dbeb1461037d57610211565b80638da5cb5b1461033d5780638ee6c4e6146103455780638f32d59b1461034d57806395d89b411461035557610211565b8063313ce567116101a8578063704b6c0211610177578063704b6c02146102ff57806370a0823114610312578063797bf385146103255780637b7933b41461032d5780637e37c08c1461033557610211565b8063313ce567146102c75780633291c11a146102dc578063330691ac146102ef57806356e07d70146102f757610211565b80631d0806ae116101e45780631d0806ae1461029a5780631f68f20a146102a25780632d88af4a146102aa5780632f6b600d146102bf57610211565b806306947a3a1461023257806306fdde0314610250578063095ea7b31461026557806318160ddd14610285575b60405162461bcd60e51b815260040161022990611733565b60405180910390fd5b61023a61041a565b60405161024791906116a6565b60405180910390f35b610258610429565b60405161024791906116f2565b61027861027336600461103e565b6104b4565b60405161024791906116d6565b61028d61051f565b60405161024791906116e4565b61028d610525565b61028d61052b565b6102bd6102b8366004610fde565b610531565b005b61023a610577565b6102cf610586565b6040516102479190611783565b61028d6102ea3660046111ae565b61058f565b61028d6105a1565b61028d6105a7565b6102bd61030d366004610fde565b6105ad565b61028d610320366004610fde565b6105f3565b61023a61060e565b61028d610622565b61028d610628565b61023a61062e565b61023a61063d565b61027861064c565b610258610672565b61023a6106cd565b61023a6106dc565b61028d6106eb565b61023a6106f1565b61028d610700565b6102bd610393366004611113565b610706565b6102bd6103a63660046111cc565b6108d5565b61028d6103b9366004611004565b6109dc565b6102bd6103cc366004611178565b610a07565b61028d6103df366004610fde565b610aac565b6102bd6103f236600461106e565b610abe565b61028d610c6f565b6102bd61040d366004610fde565b610c75565b61023a610ca5565b6016546001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b820191906000526020600020905b81548152906001019060200180831161048f57829003601f168201915b505050505081565b3360008181526014602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061050d9086906116e4565b60405180910390a35060015b92915050565b60155490565b600e5481565b60055481565b61053961064c565b6105555760405162461bcd60e51b815260040161022990611763565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b031681565b60045460ff1681565b60106020526000908152604090205481565b60065481565b600a5481565b6105b561064c565b6105d15760405162461bcd60e51b815260040161022990611763565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526013602052604090205490565b60045461010090046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b601c546001600160a01b031681565b6001546000906001600160a01b0316610663610cb4565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104ac5780601f10610481576101008083540402835291602001916104ac565b6018546001600160a01b031681565b601b546001600160a01b031681565b60095481565b601a546001600160a01b031681565b60075481565b61070e61064c565b8061072357506019546001600160a01b031633145b61073f5760405162461bcd60e51b815260040161022990611763565b60045460609061010090046001600160a01b031660005b84518110156107c9578185828151811061076c57fe5b6020026020010151606001906001600160a01b031690816001600160a01b0316815250508361079e576224ea006107a1565b60005b62ffffff168582815181106107b257fe5b602090810291909101015160e00152600101610756565b506016546040516350d713af60e11b81526001600160a01b039091169063a1ae275e906107fa9087906004016116c5565b600060405180830381600087803b15801561081457600080fd5b505af1158015610828573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261085091908101906110de565b915060005b82518110156108ce5782818151811061086a57fe5b60200260200101516010600087848151811061088257fe5b602002602001015160800151876040516020016108a092919061164e565b60408051601f1981840301815291815281516020928301208352908201929092520160002055600101610855565b5050505050565b6108dd61064c565b806108f257506019546001600160a01b031633145b61090e5760405162461bcd60e51b815260040161022990611763565b68056bc75e2d63100000610928878963ffffffff610cb816565b11156109465760405162461bcd60e51b815260040161022990611743565b68056bc75e2d63100000610960858763ffffffff610cb816565b111561097e5760405162461bcd60e51b815260040161022990611743565b68056bc75e2d6310000083111580156109a0575068056bc75e2d631000008211155b6109bc5760405162461bcd60e51b815260040161022990611753565b600596909655600694909455600792909255600855600955600a55600b55565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b601b546001600160a01b03163314610a315760405162461bcd60e51b815260040161022990611773565b600082604051602001610a44919061169a565b604051602081830303815290604052805190602001207fd46a704bc285dbd6ff5ad3863506260b1df02812f4f857c8cc852317a6ac64f2604051602001610a8c929190611674565b604051602081830303815290604052805190602001209050818155505050565b60126020526000908152604090205481565b610ac661064c565b80610adb57506019546001600160a01b031633145b610af75760405162461bcd60e51b815260040161022990611763565b828114610b165760405162461bcd60e51b815260040161022990611723565b604080518481526020808602820101909152606090848015610b42578160200160208202803883390190505b50905060005b84811015610c05576000868683818110610b5e57fe5b9050602002016020610b739190810190610fde565b858584818110610b7f57fe5b9050602002016020610b94919081019061115a565b604051602001610ba592919061164e565b6040516020818303038152906040528051906020012060001c90506010600082815260200190815260200160002054838381518110610be057fe5b6020908102919091018101919091526000918252601090526040812055600101610b48565b50601654604051637f187d3560e11b81526001600160a01b039091169063fe30fa6a90610c369084906004016116b4565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b505050505050505050565b600b5481565b610c7d61064c565b610c995760405162461bcd60e51b815260040161022990611763565b610ca281610ce4565b50565b6019546001600160a01b031681565b3390565b600082820183811015610cdd5760405162461bcd60e51b815260040161022990611713565b9392505050565b6001600160a01b038116610d0a5760405162461bcd60e51b815260040161022990611703565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b8035610519816118c5565b60008083601f840112610d8357600080fd5b50813567ffffffffffffffff811115610d9b57600080fd5b602083019150836020820283011115610db357600080fd5b9250929050565b600082601f830112610dcb57600080fd5b8151610dde610dd9826117b8565b611791565b91508181835260208401935060208101905083856020840282011115610e0357600080fd5b60005b83811015610e2f5781610e198882610ec3565b8452506020928301929190910190600101610e06565b5050505092915050565b600082601f830112610e4a57600080fd5b8135610e58610dd9826117b8565b9150818183526020840193506020810190508385610100840282011115610e7e57600080fd5b60005b83811015610e2f5781610e948882610f1d565b8452506020909201916101009190910190600101610e81565b8035610519816118d9565b8035610519816118e2565b8051610519816118e2565b600082601f830112610edf57600080fd5b8135610eed610dd9826117d9565b91508082526020830160208301858383011115610f0957600080fd5b610f1483828461184b565b50505092915050565b60006101008284031215610f3057600080fd5b610f3b610100611791565b90506000610f498484610eb8565b8252506020610f5a84848301610ead565b6020830152506040610f6e84828501610d66565b6040830152506060610f8284828501610d66565b6060830152506080610f9684828501610d66565b60808301525060a0610faa84828501610eb8565b60a08301525060c0610fbe84828501610eb8565b60c08301525060e0610fd284828501610eb8565b60e08301525092915050565b600060208284031215610ff057600080fd5b6000610ffc8484610d66565b949350505050565b6000806040838503121561101757600080fd5b60006110238585610d66565b925050602061103485828601610d66565b9150509250929050565b6000806040838503121561105157600080fd5b600061105d8585610d66565b925050602061103485828601610eb8565b6000806000806040858703121561108457600080fd5b843567ffffffffffffffff81111561109b57600080fd5b6110a787828801610d71565b9450945050602085013567ffffffffffffffff8111156110c657600080fd5b6110d287828801610d71565b95989497509550505050565b6000602082840312156110f057600080fd5b815167ffffffffffffffff81111561110757600080fd5b610ffc84828501610dba565b6000806040838503121561112657600080fd5b823567ffffffffffffffff81111561113d57600080fd5b61114985828601610e39565b925050602061103485828601610ead565b60006020828403121561116c57600080fd5b6000610ffc8484610ead565b6000806040838503121561118b57600080fd5b823567ffffffffffffffff8111156111a257600080fd5b61114985828601610ece565b6000602082840312156111c057600080fd5b6000610ffc8484610eb8565b600080600080600080600060e0888a0312156111e757600080fd5b60006111f38a8a610eb8565b97505060206112048a828b01610eb8565b96505060406112158a828b01610eb8565b95505060606112268a828b01610eb8565b94505060806112378a828b01610eb8565b93505060a06112488a828b01610eb8565b92505060c06112598a828b01610eb8565b91505092959891949750929550565b60006112748383611372565b505060200190565b6000611288838361159c565b50506101000190565b61129a81611819565b82525050565b61129a6112ac82611819565b611883565b60006112bc82611807565b6112c6818561180b565b93506112d183611801565b8060005b838110156112ff5781516112e98882611268565b97506112f483611801565b9250506001016112d5565b509495945050505050565b600061131582611807565b61131f818561180b565b935061132a83611801565b8060005b838110156112ff578151611342888261127c565b975061134d83611801565b92505060010161132e565b61129a81611824565b61129a61136d82611824565b61188e565b61129a81611829565b61129a6113878261182c565b611829565b600061139782611807565b6113a18185611814565b93506113b1818560208601611857565b9290920192915050565b60006113c682611807565b6113d0818561180b565b93506113e0818560208601611857565b6113e9816118af565b9093019392505050565b600061140060268361180b565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611448601b8361180b565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611481600e8361180b565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b60006114ab60328361180b565b7f4c6f616e546f6b656e53657474696e67734c6f77657241646d696e202d2066618152711b1b189858dac81b9bdd08185b1b1bddd95960721b602082015260400192915050565b60006114ff60158361180b565b740c6eae4ecca40e0c2e4c2dae640e8dede40d0d2ced605b1b815260200192915050565b6000611530600f8361180b565b6e0d8caeccad8e640e8dede40d0d2ced608b1b815260200192915050565b600061155b600c8361180b565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000611583600a8361180b565b6937b7363ca830bab9b2b960b11b815260200192915050565b80516101008301906115ae8482611372565b5060208201516115c16020850182611358565b5060408201516115d46040850182611291565b5060608201516115e76060850182611291565b5060808201516115fa6080850182611291565b5060a082015161160d60a0850182611372565b5060c082015161162060c0850182611372565b5060e082015161163360e0850182611372565b50505050565b61129a61138782611829565b61129a81611845565b600061165a82856112a0565b60148201915061166a8284611361565b5060010192915050565b6000611680828561137b565b6004820191506116908284611639565b5060200192915050565b6000610cdd828461138c565b602081016105198284611291565b60208082528101610cdd81846112b1565b60208082528101610cdd818461130a565b602081016105198284611358565b602081016105198284611372565b60208082528101610cdd81846113bb565b60208082528101610519816113f3565b602080825281016105198161143b565b6020808252810161051981611474565b602080825281016105198161149e565b60208082528101610519816114f2565b6020808252810161051981611523565b602080825281016105198161154e565b6020808252810161051981611576565b602081016105198284611645565b60405181810167ffffffffffffffff811182821017156117b057600080fd5b604052919050565b600067ffffffffffffffff8211156117cf57600080fd5b5060209081020190565b600067ffffffffffffffff8211156117f057600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b600061051982611839565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60ff1690565b82818337506000910152565b60005b8381101561187257818101518382015260200161185a565b838111156116335750506000910152565b600061051982611899565b6000610519826118a4565b6000610519826118bf565b6000610519826118b9565b601f01601f191690565b60f81b90565b60601b90565b6118ce81611819565b8114610ca257600080fd5b6118ce81611824565b6118ce8161182956fea365627a7a72315820b0b55ee9e359ac792e9ef4246a0a84956b698fe8615ffaf9289ce5906c100b756c6578706572696d656e74616cf564736f6c63430005110040",
"linkReferences": {},
"deployedLinkReferences": {}
}