{
  "_format": "hh-sol-artifact-1",
  "contractName": "JCollateralCapErc20Delegator",
  "sourceName": "contracts/JCollateralCapErc20Delegator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "underlying_",
          "type": "address"
        },
        {
          "internalType": "contract JoetrollerInterface",
          "name": "joetroller_",
          "type": "address"
        },
        {
          "internalType": "contract InterestRateModel",
          "name": "interestRateModel_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialExchangeRateMantissa_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        },
        {
          "internalType": "address payable",
          "name": "admin_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "implementation_",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "becomeImplementationData",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cashPrior",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestAccumulated",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "AccrueInterest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "Borrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "error",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "info",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "detail",
          "type": "uint256"
        }
      ],
      "name": "Failure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reservesFee",
          "type": "uint256"
        }
      ],
      "name": "Flashloan",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "jTokenCollateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "LiquidateBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintTokens",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "NewAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newCap",
          "type": "uint256"
        }
      ],
      "name": "NewCollateralCap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldImplementation",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "NewImplementation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "oldJoetroller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "NewJoetroller",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "oldInterestRateModel",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "NewMarketInterestRateModel",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldPendingAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "NewPendingAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldReserveFactorMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "NewReserveFactor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "redeemer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "RepayBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "benefactor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesReduced",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newCollateralTokens",
          "type": "uint256"
        }
      ],
      "name": "UserCollateralChanged",
      "type": "event"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "_acceptAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        }
      ],
      "name": "_addReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        }
      ],
      "name": "_reduceReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newCollateralCap",
          "type": "uint256"
        }
      ],
      "name": "_setCollateralCap",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowResign",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "becomeImplementationData",
          "type": "bytes"
        }
      ],
      "name": "_setImplementation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "_setInterestRateModel",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "_setJoetroller",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "_setPendingAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "_setReserveFactor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "accountCollateralTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "accrualBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "accrueInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address payable",
          "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": "amount",
          "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": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOfUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "collateralCap",
      "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": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "delegateToImplementation",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "delegateToViewImplementation",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "exchangeRateCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "exchangeRateStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "flashFeeBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC3156FlashBorrowerInterface",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "flashLoan",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountSnapshot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "gulp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "implementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "interestRateModel",
      "outputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "internalCash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isCollateralTokenInit",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isJToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "joetroller",
      "outputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "internalType": "contract JTokenInterface",
          "name": "jTokenCollateral",
          "type": "address"
        }
      ],
      "name": "liquidateBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pendingAdmin",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "redeemUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "registerCollateral",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrowBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "reserveFactorMantissa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "seize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supplyRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "totalBorrows",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "totalBorrowsCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalCollateralTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "underlying",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "unregisterCollateral",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001cf438038062001cf483398181016040526101408110156200003857600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007457600080fd5b9083019060208201858111156200008a57600080fd5b8251640100000000811182820188101715620000a557600080fd5b82525081516020918201929091019080838360005b83811015620000d4578181015183820152602001620000ba565b50505050905090810190601f168015620001025780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012657600080fd5b9083019060208201858111156200013c57600080fd5b82516401000000008111828201881017156200015757600080fd5b82525081516020918201929091019080838360005b83811015620001865781810151838201526020016200016c565b50505050905090810190601f168015620001b45780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160608401516080909401805192969195919284640100000000821115620001e957600080fd5b908301906020820185811115620001ff57600080fd5b82516401000000008111828201881017156200021a57600080fd5b82525081516020918201929091019080838360005b83811015620002495781810151838201526020016200022f565b50505050905090810190601f168015620002775780820380516001836020036101000a031916815260200191505b5060405250505033600360016101000a8154816001600160a01b0302191690836001600160a01b0316021790555062000424828b8b8b8b8b8b8b60405160240180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b0316815260200185815260200180602001806020018460ff1660ff168152602001838103835286818151815260200191508051906020019080838360005b838110156200035157818101518382015260200162000337565b50505050905090810190601f1680156200037f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620003b45781810151838201526020016200039a565b50505050905090810190601f168015620003e25780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116631a31d46560e01b17909152909a50620004721698505050505050505050565b506200043c826000836001600160e01b036200053916565b5050600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055506200071a95505050505050565b606060006060846001600160a01b0316846040518082805190602001908083835b60208310620004b45780518252601f19909201916020918201910162000493565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000516576040519150601f19603f3d011682016040523d82523d6000602084013e6200051b565b606091505b5091509150600082141562000531573d60208201fd5b949350505050565b60035461010090046001600160a01b03163314620005895760405162461bcd60e51b815260040180806020018281038252603981526020018062001cbb6039913960400191505060405180910390fd5b8115620005cb576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b17909152620005c99190620006f016565b505b601280546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693620006a1938693909283926064909201919085019080838360005b83811015620006385781810151838201526020016200061e565b50505050905090810190601f168015620006665780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b17909152909350620006f016915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60125460609062000714906001600160a01b0316836001600160e01b036200047216565b92915050565b611591806200072a6000396000f3fe6080604052600436106103a25760003560e01c806381cf00eb116101e7578063b71d1a0c1161010d578063dd62ed3e116100a0578063f3fdb15a1161006f578063f3fdb15a14610be0578063f5e3c46214610bf5578063f851a44014610c38578063fca7820b14610572576103a2565b8063dd62ed3e14610b90578063e9c714f2146109be578063ea11eea414610bcb578063f2b3abbd146105c3576103a2565b8063cfa99201116100dc578063cfa9920114610b33578063d240d64a14610b48578063d2bb18e914610b7b578063db006a7514610572576103a2565b8063b71d1a0c146105c3578063bd6d894d146109be578063c37f68e214610ada578063c5ebeaec14610572576103a2565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb14610525578063aa5af0fd14610aa2578063b1d389741461060b578063b2a02ff114610ab7576103a2565b806395d89b4114610a8d57806395dd91931461098b578063a0712d6814610572578063a6afed95146109be576103a2565b80638897bd85116101c15780638897bd85146105c35780638b35776b14610a305780638f840ddd14610a6357806394909e6214610a78576103a2565b806381cf00eb146109d3578063852a12e31461057257806385d8a2e6146109fd576103a2565b80633b1d21a2116102cc578063555bcc401161026a5780636330533c116102395780636330533c146109615780636f307dc31461097657806370a082311461098b57806373acee98146109be576103a2565b8063555bcc40146107e75780635c60da1b146108b15780635cffe9de146108c6578063601a0bf114610572576103a2565b8063432f4b2d116102a6578063432f4b2d146105c35780634487152f1461072157806347bd3718146107d2578063526097501461060b576103a2565b80633b1d21a21461060b5780633e94101014610572578063406de0b61461070c576103a2565b8063182df0f5116103445780632608f818116103135780632608f8181461068d57806326782247146106b0578063313ce567146106e15780633af9e669146105c3576103a2565b8063182df0f51461060b57806319a4dd3c1461062057806322abdbf51461063557806323b872dd1461064a576103a2565b80630e752702116103805780630e75270214610572578063173b9904146105ae57806317bfdfbc146105c357806318160ddd146105f6576103a2565b806306fdde03146103ea5780630933c1ed14610474578063095ea7b314610525575b34156103df5760405162461bcd60e51b81526004018080602001828103825260378152602001806114ed6037913960400191505060405180910390fd5b6103e7610c4d565b50005b3480156103f657600080fd5b506103ff610cd5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610439578181015183820152602001610421565b50505050905090810190601f1680156104665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048057600080fd5b506103ff6004803603602081101561049757600080fd5b810190602081018135600160201b8111156104b157600080fd5b8201836020820111156104c357600080fd5b803590602001918460018302840111600160201b831117156104e457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d62945050505050565b34801561053157600080fd5b5061055e6004803603604081101561054857600080fd5b506001600160a01b038135169060200135610d81565b604080519115158252519081900360200190f35b34801561057e57600080fd5b5061059c6004803603602081101561059557600080fd5b5035610d92565b60408051918252519081900360200190f35b3480156105ba57600080fd5b5061059c610da2565b3480156105cf57600080fd5b5061059c600480360360208110156105e657600080fd5b50356001600160a01b0316610d92565b34801561060257600080fd5b5061059c610da8565b34801561061757600080fd5b5061059c610dae565b34801561062c57600080fd5b5061059c610dbc565b34801561064157600080fd5b5061059c610dc2565b34801561065657600080fd5b5061055e6004803603606081101561066d57600080fd5b506001600160a01b03813581169160208101359091169060400135610dc8565b34801561069957600080fd5b5061059c6004803603604081101561054857600080fd5b3480156106bc57600080fd5b506106c5610dda565b604080516001600160a01b039092168252519081900360200190f35b3480156106ed57600080fd5b506106f6610de9565b6040805160ff9092168252519081900360200190f35b34801561071857600080fd5b5061055e610df2565b34801561072d57600080fd5b506103ff6004803603602081101561074457600080fd5b810190602081018135600160201b81111561075e57600080fd5b82018360208201111561077057600080fd5b803590602001918460018302840111600160201b8311171561079157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610df7945050505050565b3480156107de57600080fd5b5061059c611016565b3480156107f357600080fd5b506108af6004803603606081101561080a57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561083b57600080fd5b82018360208201111561084d57600080fd5b803590602001918460018302840111600160201b8311171561086e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061101c945050505050565b005b3480156108bd57600080fd5b506106c56111bf565b3480156108d257600080fd5b5061055e600480360360808110156108e957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460018302840111600160201b8311171561095657600080fd5b5090925090506111ce565b34801561096d57600080fd5b506106c56111e2565b34801561098257600080fd5b506106c56111f1565b34801561099757600080fd5b5061059c600480360360208110156109ae57600080fd5b50356001600160a01b0316611200565b3480156109ca57600080fd5b5061059c61120a565b3480156109df57600080fd5b506108af600480360360208110156109f657600080fd5b5035611214565b348015610a0957600080fd5b5061055e60048036036020811015610a2057600080fd5b50356001600160a01b0316611220565b348015610a3c57600080fd5b506108af60048036036020811015610a5357600080fd5b50356001600160a01b0316611214565b348015610a6f57600080fd5b5061059c611235565b348015610a8457600080fd5b506108af61123b565b348015610a9957600080fd5b506103ff611246565b348015610aae57600080fd5b5061059c61129e565b348015610ac357600080fd5b5061059c6004803603606081101561066d57600080fd5b348015610ae657600080fd5b50610b0d60048036036020811015610afd57600080fd5b50356001600160a01b03166112a4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610b3f57600080fd5b5061059c6112ba565b348015610b5457600080fd5b5061059c60048036036020811015610b6b57600080fd5b50356001600160a01b03166112c0565b348015610b8757600080fd5b5061059c6112d2565b348015610b9c57600080fd5b5061059c60048036036040811015610bb357600080fd5b506001600160a01b03813581169160200135166112d8565b348015610bd757600080fd5b5061059c6112e2565b348015610bec57600080fd5b506106c56112e7565b348015610c0157600080fd5b5061059c60048036036060811015610c1857600080fd5b506001600160a01b03813581169160208101359160409091013516610dc8565b348015610c4457600080fd5b506106c56112f6565b6012546040516060916000916001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610cb5576040519150601f19603f3d011682016040523d82523d6000602084013e610cba565b606091505b505090506040513d6000823e818015610cd1573d82f35b3d82fd5b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d5a5780601f10610d2f57610100808354040283529160200191610d5a565b820191906000526020600020905b815481529060010190602001808311610d3d57829003601f168201915b505050505081565b601254606090610d7b906001600160a01b03168361130a565b92915050565b6000610d8b610c4d565b5092915050565b6000610d9c610c4d565b50919050565b60085481565b600d5481565b6000610db86113cc565b5090565b60145481565b60135481565b6000610dd2610c4d565b509392505050565b6004546001600160a01b031681565b60035460ff1681565b600181565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610e48578181015183820152602001610e30565b50505050905090810190601f168015610e755780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610ed05780518252601f199092019160209182019101610eb1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f30576040519150601f19603f3d011682016040523d82523d6000602084013e610f35565b606091505b50915091506000821415610f4a573d60208201fd5b808060200190516020811015610f5f57600080fd5b8101908080516040519392919084600160201b821115610f7e57600080fd5b908301906020820185811115610f9357600080fd5b8251600160201b811182820188101715610fac57600080fd5b82525081516020918201929091019080838360005b83811015610fd9578181015183820152602001610fc1565b50505050905090810190601f1680156110065780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b600b5481565b60035461010090046001600160a01b0316331461106a5760405162461bcd60e51b81526004018080602001828103825260398152602001806115246039913960400191505060405180910390fd5b81156110a4576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b1790526110a290610d62565b505b601280546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693611170938693909283926064909201919085019080838360005b8381101561110e5781810151838201526020016110f6565b50505050905090810190601f16801561113b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790529250610d62915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6012546001600160a01b031681565b60006111d8610c4d565b5095945050505050565b6005546001600160a01b031681565b6011546001600160a01b031681565b6000610d9c6113cc565b6000610db8610c4d565b61121c610c4d565b5050565b60166020526000908152604090205460ff1681565b600c5481565b611243610c4d565b50565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d5a5780601f10610d2f57610100808354040283529160200191610d5a565b600a5481565b6000806000806112b26113cc565b509193509193565b60095481565b60156020526000908152604090205481565b60175481565b6000610d8b6113cc565b600881565b6006546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b6020831061134a5780518252601f19909201916020918201910161132b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113aa576040519150601f19603f3d011682016040523d82523d6000602084013e6113af565b606091505b509150915060008214156113c4573d60208201fd5b949350505050565b60606000306001600160a01b03166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316630933c1ed60e01b17815292518151919750955085945091925081905083835b6020831061146d5780518252601f19909201916020918201910161144e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146114cd576040519150601f19603f3d011682016040523d82523d6000602084013e6114d2565b606091505b505090506040513d6000823e818015610cd1573d60408301f3fe43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b43457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a7231582092287b66105b3cb98a6a1ac200dbb8e4bcbedf2637050159c96e0cf7df94688864736f6c6343000510003243457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e",
  "deployedBytecode": "0x6080604052600436106103a25760003560e01c806381cf00eb116101e7578063b71d1a0c1161010d578063dd62ed3e116100a0578063f3fdb15a1161006f578063f3fdb15a14610be0578063f5e3c46214610bf5578063f851a44014610c38578063fca7820b14610572576103a2565b8063dd62ed3e14610b90578063e9c714f2146109be578063ea11eea414610bcb578063f2b3abbd146105c3576103a2565b8063cfa99201116100dc578063cfa9920114610b33578063d240d64a14610b48578063d2bb18e914610b7b578063db006a7514610572576103a2565b8063b71d1a0c146105c3578063bd6d894d146109be578063c37f68e214610ada578063c5ebeaec14610572576103a2565b806395d89b4111610185578063a9059cbb11610154578063a9059cbb14610525578063aa5af0fd14610aa2578063b1d389741461060b578063b2a02ff114610ab7576103a2565b806395d89b4114610a8d57806395dd91931461098b578063a0712d6814610572578063a6afed95146109be576103a2565b80638897bd85116101c15780638897bd85146105c35780638b35776b14610a305780638f840ddd14610a6357806394909e6214610a78576103a2565b806381cf00eb146109d3578063852a12e31461057257806385d8a2e6146109fd576103a2565b80633b1d21a2116102cc578063555bcc401161026a5780636330533c116102395780636330533c146109615780636f307dc31461097657806370a082311461098b57806373acee98146109be576103a2565b8063555bcc40146107e75780635c60da1b146108b15780635cffe9de146108c6578063601a0bf114610572576103a2565b8063432f4b2d116102a6578063432f4b2d146105c35780634487152f1461072157806347bd3718146107d2578063526097501461060b576103a2565b80633b1d21a21461060b5780633e94101014610572578063406de0b61461070c576103a2565b8063182df0f5116103445780632608f818116103135780632608f8181461068d57806326782247146106b0578063313ce567146106e15780633af9e669146105c3576103a2565b8063182df0f51461060b57806319a4dd3c1461062057806322abdbf51461063557806323b872dd1461064a576103a2565b80630e752702116103805780630e75270214610572578063173b9904146105ae57806317bfdfbc146105c357806318160ddd146105f6576103a2565b806306fdde03146103ea5780630933c1ed14610474578063095ea7b314610525575b34156103df5760405162461bcd60e51b81526004018080602001828103825260378152602001806114ed6037913960400191505060405180910390fd5b6103e7610c4d565b50005b3480156103f657600080fd5b506103ff610cd5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610439578181015183820152602001610421565b50505050905090810190601f1680156104665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048057600080fd5b506103ff6004803603602081101561049757600080fd5b810190602081018135600160201b8111156104b157600080fd5b8201836020820111156104c357600080fd5b803590602001918460018302840111600160201b831117156104e457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d62945050505050565b34801561053157600080fd5b5061055e6004803603604081101561054857600080fd5b506001600160a01b038135169060200135610d81565b604080519115158252519081900360200190f35b34801561057e57600080fd5b5061059c6004803603602081101561059557600080fd5b5035610d92565b60408051918252519081900360200190f35b3480156105ba57600080fd5b5061059c610da2565b3480156105cf57600080fd5b5061059c600480360360208110156105e657600080fd5b50356001600160a01b0316610d92565b34801561060257600080fd5b5061059c610da8565b34801561061757600080fd5b5061059c610dae565b34801561062c57600080fd5b5061059c610dbc565b34801561064157600080fd5b5061059c610dc2565b34801561065657600080fd5b5061055e6004803603606081101561066d57600080fd5b506001600160a01b03813581169160208101359091169060400135610dc8565b34801561069957600080fd5b5061059c6004803603604081101561054857600080fd5b3480156106bc57600080fd5b506106c5610dda565b604080516001600160a01b039092168252519081900360200190f35b3480156106ed57600080fd5b506106f6610de9565b6040805160ff9092168252519081900360200190f35b34801561071857600080fd5b5061055e610df2565b34801561072d57600080fd5b506103ff6004803603602081101561074457600080fd5b810190602081018135600160201b81111561075e57600080fd5b82018360208201111561077057600080fd5b803590602001918460018302840111600160201b8311171561079157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610df7945050505050565b3480156107de57600080fd5b5061059c611016565b3480156107f357600080fd5b506108af6004803603606081101561080a57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b81111561083b57600080fd5b82018360208201111561084d57600080fd5b803590602001918460018302840111600160201b8311171561086e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061101c945050505050565b005b3480156108bd57600080fd5b506106c56111bf565b3480156108d257600080fd5b5061055e600480360360808110156108e957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561092357600080fd5b82018360208201111561093557600080fd5b803590602001918460018302840111600160201b8311171561095657600080fd5b5090925090506111ce565b34801561096d57600080fd5b506106c56111e2565b34801561098257600080fd5b506106c56111f1565b34801561099757600080fd5b5061059c600480360360208110156109ae57600080fd5b50356001600160a01b0316611200565b3480156109ca57600080fd5b5061059c61120a565b3480156109df57600080fd5b506108af600480360360208110156109f657600080fd5b5035611214565b348015610a0957600080fd5b5061055e60048036036020811015610a2057600080fd5b50356001600160a01b0316611220565b348015610a3c57600080fd5b506108af60048036036020811015610a5357600080fd5b50356001600160a01b0316611214565b348015610a6f57600080fd5b5061059c611235565b348015610a8457600080fd5b506108af61123b565b348015610a9957600080fd5b506103ff611246565b348015610aae57600080fd5b5061059c61129e565b348015610ac357600080fd5b5061059c6004803603606081101561066d57600080fd5b348015610ae657600080fd5b50610b0d60048036036020811015610afd57600080fd5b50356001600160a01b03166112a4565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610b3f57600080fd5b5061059c6112ba565b348015610b5457600080fd5b5061059c60048036036020811015610b6b57600080fd5b50356001600160a01b03166112c0565b348015610b8757600080fd5b5061059c6112d2565b348015610b9c57600080fd5b5061059c60048036036040811015610bb357600080fd5b506001600160a01b03813581169160200135166112d8565b348015610bd757600080fd5b5061059c6112e2565b348015610bec57600080fd5b506106c56112e7565b348015610c0157600080fd5b5061059c60048036036060811015610c1857600080fd5b506001600160a01b03813581169160208101359160409091013516610dc8565b348015610c4457600080fd5b506106c56112f6565b6012546040516060916000916001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610cb5576040519150601f19603f3d011682016040523d82523d6000602084013e610cba565b606091505b505090506040513d6000823e818015610cd1573d82f35b3d82fd5b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d5a5780601f10610d2f57610100808354040283529160200191610d5a565b820191906000526020600020905b815481529060010190602001808311610d3d57829003601f168201915b505050505081565b601254606090610d7b906001600160a01b03168361130a565b92915050565b6000610d8b610c4d565b5092915050565b6000610d9c610c4d565b50919050565b60085481565b600d5481565b6000610db86113cc565b5090565b60145481565b60135481565b6000610dd2610c4d565b509392505050565b6004546001600160a01b031681565b60035460ff1681565b600181565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610e48578181015183820152602001610e30565b50505050905090810190601f168015610e755780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610ed05780518252601f199092019160209182019101610eb1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f30576040519150601f19603f3d011682016040523d82523d6000602084013e610f35565b606091505b50915091506000821415610f4a573d60208201fd5b808060200190516020811015610f5f57600080fd5b8101908080516040519392919084600160201b821115610f7e57600080fd5b908301906020820185811115610f9357600080fd5b8251600160201b811182820188101715610fac57600080fd5b82525081516020918201929091019080838360005b83811015610fd9578181015183820152602001610fc1565b50505050905090810190601f1680156110065780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b600b5481565b60035461010090046001600160a01b0316331461106a5760405162461bcd60e51b81526004018080602001828103825260398152602001806115246039913960400191505060405180910390fd5b81156110a4576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b1790526110a290610d62565b505b601280546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693611170938693909283926064909201919085019080838360005b8381101561110e5781810151838201526020016110f6565b50505050905090810190601f16801561113b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790529250610d62915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6012546001600160a01b031681565b60006111d8610c4d565b5095945050505050565b6005546001600160a01b031681565b6011546001600160a01b031681565b6000610d9c6113cc565b6000610db8610c4d565b61121c610c4d565b5050565b60166020526000908152604090205460ff1681565b600c5481565b611243610c4d565b50565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d5a5780601f10610d2f57610100808354040283529160200191610d5a565b600a5481565b6000806000806112b26113cc565b509193509193565b60095481565b60156020526000908152604090205481565b60175481565b6000610d8b6113cc565b600881565b6006546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b6020831061134a5780518252601f19909201916020918201910161132b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146113aa576040519150601f19603f3d011682016040523d82523d6000602084013e6113af565b606091505b509150915060008214156113c4573d60208201fd5b949350505050565b60606000306001600160a01b03166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316630933c1ed60e01b17815292518151919750955085945091925081905083835b6020831061146d5780518252601f19909201916020918201910161144e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146114cd576040519150601f19603f3d011682016040523d82523d6000602084013e6114d2565b606091505b505090506040513d6000823e818015610cd1573d60408301f3fe43457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b43457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a7231582092287b66105b3cb98a6a1ac200dbb8e4bcbedf2637050159c96e0cf7df94688864736f6c63430005100032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
