{
  "contractName": "TestDolomiteMargin",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint64",
              "name": "marginRatioMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "earningsRateMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "marginPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "interestRateMax",
              "type": "uint96"
            },
            {
              "internalType": "uint128",
              "name": "minBorrowedValueMax",
              "type": "uint128"
            }
          ],
          "internalType": "struct Storage.RiskLimits",
          "name": "riskLimits",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginRatio",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpread",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRate",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "minBorrowedValue",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "accountMaxNumberOfMarketsWithBalances",
          "type": "uint256"
        },
        {
          "internalType": "contract IOracleSentinel",
          "name": "oracleSentinel",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "callbackGasLimit",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "trusted",
          "type": "bool"
        }
      ],
      "name": "LogOperatorSet",
      "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"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountBalances",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "value",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.Par[]",
          "name": "",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getAccountMarketWithBalanceAtIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAccountMaxNumberOfMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountNumberOfMarketsWithBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountNumberOfMarketsWithDebt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getAccountPar",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "value",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.Par",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountRiskOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginRatioOverride",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpreadOverride",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "accountOwner",
          "type": "address"
        }
      ],
      "name": "getAccountRiskOverrideSetterByAccountOwner",
      "outputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountStatus",
      "outputs": [
        {
          "internalType": "enum Account.Status",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAccountValues",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getAccountWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getAdjustedAccountValues",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCallbackGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getDefaultAccountRiskOverrideSetter",
      "outputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEarningsRate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "autoTrader",
          "type": "address"
        }
      ],
      "name": "getIsAutoTraderSpecial",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getIsBorrowAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getIsGlobalOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getIsLiquidationAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "getIsLocalOperator",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLiquidationSpread",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "heldMarketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedMarketId",
          "type": "uint256"
        }
      ],
      "name": "getLiquidationSpreadForAccountAndPair",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "heldMarketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedMarketId",
          "type": "uint256"
        }
      ],
      "name": "getLiquidationSpreadForPair",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getLiquidationSpreadOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMarginRatio",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getMarginRatioForAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        }
      ],
      "name": "getMarginRatioOverrideByAccount",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarket",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "isClosing",
              "type": "bool"
            },
            {
              "components": [
                {
                  "internalType": "uint128",
                  "name": "borrow",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "supply",
                  "type": "uint128"
                }
              ],
              "internalType": "struct Types.TotalPar",
              "name": "totalPar",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint112",
                  "name": "borrow",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "supply",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "lastUpdate",
                  "type": "uint32"
                }
              ],
              "internalType": "struct Interest.Index",
              "name": "index",
              "type": "tuple"
            },
            {
              "internalType": "contract IPriceOracle",
              "name": "priceOracle",
              "type": "address"
            },
            {
              "internalType": "contract IInterestSetter",
              "name": "interestSetter",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "marginPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "liquidationSpreadPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxSupplyWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxBorrowWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "earningsRateOverride",
              "type": "tuple"
            }
          ],
          "internalType": "struct Storage.Market",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketBorrowInterestRateApr",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketBorrowInterestRatePerSecond",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketCachedIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketCurrentIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketEarningsRateOverride",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getMarketIdByTokenAddress",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketInterestRate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketInterestSetter",
      "outputs": [
        {
          "internalType": "contract IInterestSetter",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketIsClosing",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketLiquidationSpreadPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMarginPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxBorrowWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxSupplyWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketMaxWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketPrice",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Price",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketPriceOracle",
      "outputs": [
        {
          "internalType": "contract IPriceOracle",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketSpreadPremium",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketSupplyInterestRateApr",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTotalPar",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "borrow",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "supply",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.TotalPar",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketTotalWei",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "borrow",
              "type": "uint128"
            },
            {
              "internalType": "uint128",
              "name": "supply",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.TotalWei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getMarketWithInfo",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "isClosing",
              "type": "bool"
            },
            {
              "components": [
                {
                  "internalType": "uint128",
                  "name": "borrow",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "supply",
                  "type": "uint128"
                }
              ],
              "internalType": "struct Types.TotalPar",
              "name": "totalPar",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint112",
                  "name": "borrow",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "supply",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "lastUpdate",
                  "type": "uint32"
                }
              ],
              "internalType": "struct Interest.Index",
              "name": "index",
              "type": "tuple"
            },
            {
              "internalType": "contract IPriceOracle",
              "name": "priceOracle",
              "type": "address"
            },
            {
              "internalType": "contract IInterestSetter",
              "name": "interestSetter",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "marginPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "liquidationSpreadPremium",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxSupplyWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.Wei",
              "name": "maxBorrowWei",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Decimal.D256",
              "name": "earningsRateOverride",
              "type": "tuple"
            }
          ],
          "internalType": "struct Storage.Market",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Price",
          "name": "",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Interest.Rate",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getMinBorrowedValue",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "getNumExcessTokens",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.Wei",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNumMarkets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getOracleSentinel",
      "outputs": [
        {
          "internalType": "contract IOracleSentinel",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getRiskLimits",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint64",
              "name": "marginRatioMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "earningsRateMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "marginPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "liquidationSpreadPremiumMax",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "interestRateMax",
              "type": "uint96"
            },
            {
              "internalType": "uint128",
              "name": "minBorrowedValueMax",
              "type": "uint128"
            }
          ],
          "internalType": "struct Storage.RiskLimits",
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info[]",
          "name": "accounts",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "enum Actions.ActionType",
              "name": "actionType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "accountId",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "internalType": "bool",
                  "name": "sign",
                  "type": "bool"
                },
                {
                  "internalType": "enum Types.AssetDenomination",
                  "name": "denomination",
                  "type": "uint8"
                },
                {
                  "internalType": "enum Types.AssetReference",
                  "name": "ref",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "internalType": "struct Types.AssetAmount",
              "name": "amount",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "primaryMarketId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "secondaryMarketId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "otherAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "otherAccountId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "internalType": "struct Actions.ActionArgs[]",
          "name": "actions",
          "type": "tuple[]"
        }
      ],
      "name": "operate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "contract IPriceOracle",
          "name": "priceOracle",
          "type": "address"
        },
        {
          "internalType": "contract IInterestSetter",
          "name": "interestSetter",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginPremium",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "spreadPremium",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "maxSupplyWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxBorrowWei",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRateOverride",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "isClosing",
          "type": "bool"
        }
      ],
      "name": "ownerAddMarket",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "accountMaxNumberOfMarketsWithBalances",
          "type": "uint256"
        }
      ],
      "name": "ownerSetAccountMaxNumberOfMarketsWithBalances",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "accountOwner",
          "type": "address"
        },
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "accountRiskOverrideSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetAccountRiskOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "autoTrader",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "special",
          "type": "bool"
        }
      ],
      "name": "ownerSetAutoTraderSpecial",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "callbackGasLimit",
          "type": "uint256"
        }
      ],
      "name": "ownerSetCallbackGasLimit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IAccountRiskOverrideSetter",
          "name": "accountRiskOverrideSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetDefaultAccountRiskOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRate",
          "type": "tuple"
        }
      ],
      "name": "ownerSetEarningsRate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "earningsRateOverride",
          "type": "tuple"
        }
      ],
      "name": "ownerSetEarningsRateOverride",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ownerSetGlobalOperator",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "contract IInterestSetter",
          "name": "interestSetter",
          "type": "address"
        }
      ],
      "name": "ownerSetInterestSetter",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isClosing",
          "type": "bool"
        }
      ],
      "name": "ownerSetIsClosing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "spread",
          "type": "tuple"
        }
      ],
      "name": "ownerSetLiquidationSpread",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "liquidationSpreadPremium",
          "type": "tuple"
        }
      ],
      "name": "ownerSetLiquidationSpreadPremium",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "marginPremium",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMarginPremium",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Decimal.D256",
          "name": "ratio",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMarginRatio",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxBorrowWei",
          "type": "uint256"
        }
      ],
      "name": "ownerSetMaxBorrowWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxSupplyWei",
          "type": "uint256"
        }
      ],
      "name": "ownerSetMaxSupplyWei",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "internalType": "struct Monetary.Value",
          "name": "minBorrowedValue",
          "type": "tuple"
        }
      ],
      "name": "ownerSetMinBorrowedValue",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract IOracleSentinel",
          "name": "oracleSentinel",
          "type": "address"
        }
      ],
      "name": "ownerSetOracleSentinel",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "contract IPriceOracle",
          "name": "priceOracle",
          "type": "address"
        }
      ],
      "name": "ownerSetPriceOracle",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ownerWithdrawExcessTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "ownerWithdrawUnsupportedTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "trusted",
              "type": "bool"
            }
          ],
          "internalType": "struct Types.OperatorArg[]",
          "name": "args",
          "type": "tuple[]"
        }
      ],
      "name": "setOperators",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "market",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "bool",
              "name": "sign",
              "type": "bool"
            },
            {
              "internalType": "uint128",
              "name": "value",
              "type": "uint128"
            }
          ],
          "internalType": "struct Types.Par",
          "name": "newPar",
          "type": "tuple"
        }
      ],
      "name": "setAccountBalance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Account.Info",
          "name": "account",
          "type": "tuple"
        },
        {
          "internalType": "enum Account.Status",
          "name": "status",
          "type": "uint8"
        }
      ],
      "name": "setAccountStatus",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "market",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint112",
              "name": "borrow",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "supply",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "lastUpdate",
              "type": "uint32"
            }
          ],
          "internalType": "struct Interest.Index",
          "name": "index",
          "type": "tuple"
        }
      ],
      "name": "setMarketIndex",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"interestRateMax\",\"type\":\"uint96\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"riskLimits\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatio\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpread\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"accountMaxNumberOfMarketsWithBalances\",\"type\":\"uint256\"},{\"internalType\":\"contract IOracleSentinel\",\"name\":\"oracleSentinel\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"callbackGasLimit\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"name\":\"LogOperatorSet\",\"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\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getAccountMarketWithBalanceAtIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAccountMaxNumberOfMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountNumberOfMarketsWithBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountNumberOfMarketsWithDebt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountPar\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountRiskOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginRatioOverride\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadOverride\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"}],\"name\":\"getAccountRiskOverrideSetterByAccountOwner\",\"outputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountStatus\",\"outputs\":[{\"internalType\":\"enum Account.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getAccountWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getAdjustedAccountValues\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCallbackGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getDefaultAccountRiskOverrideSetter\",\"outputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEarningsRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"}],\"name\":\"getIsAutoTraderSpecial\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getIsBorrowAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsGlobalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getIsLiquidationAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getIsLocalOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLiquidationSpread\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForAccountAndPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"heldMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedMarketId\",\"type\":\"uint256\"}],\"name\":\"getLiquidationSpreadForPair\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getLiquidationSpreadOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMarginRatio\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getMarginRatioForAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"}],\"name\":\"getMarginRatioOverrideByAccount\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarket\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxSupplyWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxBorrowWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketBorrowInterestRateApr\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketBorrowInterestRatePerSecond\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCachedIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketCurrentIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketEarningsRateOverride\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getMarketIdByTokenAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestRate\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketInterestSetter\",\"outputs\":[{\"internalType\":\"contract IInterestSetter\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketIsClosing\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketLiquidationSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMarginPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxBorrowWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxSupplyWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketMaxWei\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketPriceOracle\",\"outputs\":[{\"internalType\":\"contract IPriceOracle\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSpreadPremium\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketSupplyInterestRateApr\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalPar\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketTotalWei\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalWei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getMarketWithInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"borrow\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"supply\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.TotalPar\",\"name\":\"totalPar\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxSupplyWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"maxBorrowWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"internalType\":\"struct Storage.Market\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Price\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Interest.Rate\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getMinBorrowedValue\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"getNumExcessTokens\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumMarkets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOracleSentinel\",\"outputs\":[{\"internalType\":\"contract IOracleSentinel\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRiskLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"marginRatioMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"earningsRateMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"marginPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"liquidationSpreadPremiumMax\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"interestRateMax\",\"type\":\"uint96\"},{\"internalType\":\"uint128\",\"name\":\"minBorrowedValueMax\",\"type\":\"uint128\"}],\"internalType\":\"struct Storage.RiskLimits\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info[]\",\"name\":\"accounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Actions.ActionType\",\"name\":\"actionType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"accountId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"enum Types.AssetDenomination\",\"name\":\"denomination\",\"type\":\"uint8\"},{\"internalType\":\"enum Types.AssetReference\",\"name\":\"ref\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AssetAmount\",\"name\":\"amount\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"primaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondaryMarketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"otherAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"otherAccountId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Actions.ActionArgs[]\",\"name\":\"actions\",\"type\":\"tuple[]\"}],\"name\":\"operate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spreadPremium\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"maxSupplyWei\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBorrowWei\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerAddMarket\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"accountMaxNumberOfMarketsWithBalances\",\"type\":\"uint256\"}],\"name\":\"ownerSetAccountMaxNumberOfMarketsWithBalances\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"accountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"ownerSetAccountRiskOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"autoTrader\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"special\",\"type\":\"bool\"}],\"name\":\"ownerSetAutoTraderSpecial\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"callbackGasLimit\",\"type\":\"uint256\"}],\"name\":\"ownerSetCallbackGasLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IAccountRiskOverrideSetter\",\"name\":\"accountRiskOverrideSetter\",\"type\":\"address\"}],\"name\":\"ownerSetDefaultAccountRiskOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRate\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"earningsRateOverride\",\"type\":\"tuple\"}],\"name\":\"ownerSetEarningsRateOverride\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ownerSetGlobalOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IInterestSetter\",\"name\":\"interestSetter\",\"type\":\"address\"}],\"name\":\"ownerSetInterestSetter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isClosing\",\"type\":\"bool\"}],\"name\":\"ownerSetIsClosing\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"spread\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpread\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"liquidationSpreadPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetLiquidationSpreadPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"marginPremium\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginPremium\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Decimal.D256\",\"name\":\"ratio\",\"type\":\"tuple\"}],\"name\":\"ownerSetMarginRatio\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxBorrowWei\",\"type\":\"uint256\"}],\"name\":\"ownerSetMaxBorrowWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSupplyWei\",\"type\":\"uint256\"}],\"name\":\"ownerSetMaxSupplyWei\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Monetary.Value\",\"name\":\"minBorrowedValue\",\"type\":\"tuple\"}],\"name\":\"ownerSetMinBorrowedValue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract IOracleSentinel\",\"name\":\"oracleSentinel\",\"type\":\"address\"}],\"name\":\"ownerSetOracleSentinel\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"contract IPriceOracle\",\"name\":\"priceOracle\",\"type\":\"address\"}],\"name\":\"ownerSetPriceOracle\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawExcessTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"ownerWithdrawUnsupportedTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"name\":\"setAccountBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Account.Info\",\"name\":\"account\",\"type\":\"tuple\"},{\"internalType\":\"enum Account.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"setAccountStatus\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"market\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint112\",\"name\":\"borrow\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"supply\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"lastUpdate\",\"type\":\"uint32\"}],\"internalType\":\"struct Interest.Index\",\"name\":\"index\",\"type\":\"tuple\"}],\"name\":\"setMarketIndex\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"trusted\",\"type\":\"bool\"}],\"internalType\":\"struct Types.OperatorArg[]\",\"name\":\"args\",\"type\":\"tuple[]\"}],\"name\":\"setOperators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"params\":{\"accounts\":\"A list of all accounts that will be used in this operation. Cannot contain                  duplicates. In each action, the relevant account will be referred-to by its                  index in the list.\",\"actions\":\"An ordered list of all actions that will be taken in this operation. The                  actions will be processed in order.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setOperators((address,bool)[])\":{\"params\":{\"args\":\"A list of OperatorArgs which have an address and a boolean. The boolean value              denotes whether to approve (true) or revoke approval (false) for that address.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])\":{\"notice\":\"The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \\\"operation\\\". Account collateralization is ensured only after the completion of the entire operation.\"},\"setOperators((address,bool)[])\":{\"notice\":\"Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts.     * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol\":\"TestDolomiteMargin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Admin.sol\":{\"keccak256\":\"0x48f1ed90f4affb2868cc8929149fd6467ffffddbb7e5f44293a7b3ce3b69daeb\",\"urls\":[\"bzz-raw://d1825beb03620ace4ae67175f7e17a7ca6a9120c669dff04ad1b9796f8ec02c8\",\"dweb:/ipfs/QmX7c9kMPyoHKjmu5iDV36iXca1BYenSG1uRwbzB4xv3VH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol\":{\"keccak256\":\"0x1ae9619291f1c133eb30ec6d59cd85c5f956e358208bf0f7e4b5e1c4ace8cc38\",\"urls\":[\"bzz-raw://634300fc49a5feb10a4207ea878659a1666317a88ab1fa590a9abd5e6d4cf23e\",\"dweb:/ipfs/QmRbnfoqo9QoPCcgenRhhLSphREQpApW5y4GWJYtQ8NfGn\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Getters.sol\":{\"keccak256\":\"0x38b53eac1a00cdfa28c9492105f6fac5afa919c7b8d6695f25e4338cfc3f33fd\",\"urls\":[\"bzz-raw://a843d1c49aa49a9cfbca882a1aa3e7652a0bf72e382cf6e19158713c759b8bca\",\"dweb:/ipfs/QmSyrWniDHPAtvpXuJhi4VG5ZYMQmFpCRY7ygdyWa1vDuQ\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/HasState.sol\":{\"keccak256\":\"0x5b3ef0033e519ea3f2a7877f659d653465e51f944ee5bb1957c8a089a151f609\",\"urls\":[\"bzz-raw://0f7e2c3b46ea904552e101c7bfffb647afc56408960814bab1989f2c05a34092\",\"dweb:/ipfs/QmWP3jVoYx9UYajjbDdUTBjkJT84gdJXoxaq7npTR4qVb3\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Operation.sol\":{\"keccak256\":\"0x7ba8838ee5773c34b6c11b175f6f31d33b6fe54cb83b815e01ea94be5009ea55\",\"urls\":[\"bzz-raw://776f2e7e207eb0f34d06f15093bf5e59bee5d527a4926f81e7849ccb78032118\",\"dweb:/ipfs/QmZDp8qnbDswHgZV99ZnXKFz7Bsb93cTqkgPW6hbTTRf6f\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/Permission.sol\":{\"keccak256\":\"0x157aabb0fe4711f828790ef35a507d44c427c48b5f01b01eacbefe7a0a7815a7\",\"urls\":[\"bzz-raw://3eb031d9e809cb032dc52d5f197a70387aee9a7d5e02d27fd3f1c00451aefb32\",\"dweb:/ipfs/QmVnYud1bJ9BmRQnpQEGvnmFWTixmBZQBHbCxFy8UMo8ZK\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/AdminImpl.sol\":{\"keccak256\":\"0xe0e67a0da08bac8f60cf3c800c1d462a7046ff6959ff9ba0399f3d754931f672\",\"urls\":[\"bzz-raw://0441193eb7bcb8610dc9044827272d51b5be3294c1bb3f61828e0abc18e4226f\",\"dweb:/ipfs/QmZzpg6mbxu1MZgPHKZnkFfJsFU6Cnk9LNJ5Nu8JaGTVie\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/CallImpl.sol\":{\"keccak256\":\"0x868f8c2ed6dfdf4714505719fc12839df3010f4e83d14daa3b068013e4bd8cca\",\"urls\":[\"bzz-raw://1ad15cf77619f7f2830de1dc1e2278fd4184da7100937b5ad46903a08b1e4e94\",\"dweb:/ipfs/QmYaGB1xqfDLHbWQRASWR6Yt7CxKM2da3QkCU9NZwb1fhB\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/DepositImpl.sol\":{\"keccak256\":\"0x07eaed8d56d7b57a9b0ee9a76918a087d08ae10c999ffc12c7368ab5e8551fb4\",\"urls\":[\"bzz-raw://19f5a6045092355b4a2eca6a67118a737b2ff66f95e8ba816535c719b0479407\",\"dweb:/ipfs/QmZQVZKSCuk6C437jwnx8PX51xcDEZeM1aTJ5YcaViNQw4\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/GettersImpl.sol\":{\"keccak256\":\"0xd22d90a50b968bd9c5a9ead2bb7dff3563c4a932fe0863bf7077a80e878de890\",\"urls\":[\"bzz-raw://42bd9cba27af1cf6926a0ce1f3cac296a23461ecf3b5df193ff27624c2ee860a\",\"dweb:/ipfs/QmWkstrUhRqGgakt539NvgAcQ8Z9PLizcagdWpdWPAJEC5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xc05fd822f0991a652f6c9bc0328370bb15ff5eb3ba89cbc1d9140e4835004e7a\",\"urls\":[\"bzz-raw://842e9c896073941e69fbdc32b21b50f873a8bb57c38c810ef70e7b64ee0c3ff7\",\"dweb:/ipfs/QmRBY47DUJQ3KQ7yKvCimv6vstkk6i3fFUQPtWXfG2mXHg\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/OperationImpl.sol\":{\"keccak256\":\"0xbdd0cdd00dd22d00e26fe3bfea01bfe67ebfa960e50cfdd205dce6bbd988716e\",\"urls\":[\"bzz-raw://c3aa4b12cc57bb1766b97041440b8970f0f2d477f0333609f71e3a7ba864624b\",\"dweb:/ipfs/QmSCmEcnfEqPduWKNdSeNz5DVVXePDRrDQen7jUhBpHb1X\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/TradeImpl.sol\":{\"keccak256\":\"0xa4b8a68b42ce6d5294832f77f30a289f6068c89b2cb3601c2894bf62cf597e91\",\"urls\":[\"bzz-raw://c0474a10ef5e0376ba068e2773e9f7807ded4fd787a6e3db3948288bd43c6fc9\",\"dweb:/ipfs/QmSxWWkbB2Gem27V1Kpbevy8eurr9e1jeA4JaeRZ7sRwsr\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/TransferImpl.sol\":{\"keccak256\":\"0x21ca9d8697802f9e023ecabbce9e9c544c3dd1d6040f5eefb3466e672563b280\",\"urls\":[\"bzz-raw://3b773cb3b8334005070518d6044b555cec9ce79eb99fcc2cfb9d577ce6bf6def\",\"dweb:/ipfs/QmSnMbrerGz8h25Ms2K6pDNpaj8iVUCAGSjLhh6SqHU6zC\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/WithdrawalImpl.sol\":{\"keccak256\":\"0x74c7497bc89d75c0719f98181aed2a63719f6e1d9235679c0e6b5582a772bf8b\",\"urls\":[\"bzz-raw://dcf6492d9b36ded7e109823c126875f0f792c56b2138b088d1f12532e29b8957\",\"dweb:/ipfs/QmSQLsgjUgKqEYA975jV9WjUAEH342F9wtASmmBnE7NjE7\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAutoTrader.sol\":{\"keccak256\":\"0x123b5d92696b180c60a838d3117a9fd571851911f37c78212969015e169e14fc\",\"urls\":[\"bzz-raw://cd5d9aeb5b4e3de18ac8a51a3b2320f3e7a247b959defa9c289ee6aaf2bfc348\",\"dweb:/ipfs/QmPdjeya5BDYHEUMuz6jiwZrKJa8p2uN1vumLAJ7nhG5cN\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/ICallee.sol\":{\"keccak256\":\"0x0b65209369307041e67c28634fc17a19e953199ac42a88198b76578f7fa9b0f8\",\"urls\":[\"bzz-raw://46618851882c2bc5a6212bb0a8ad095e0f38049f24ecf404163ad6b493c728a1\",\"dweb:/ipfs/QmRx4VabTaXTGSyMt8NCTZ7nMiWCHfrvqZjRaKNRir3zEe\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExchangeWrapper.sol\":{\"keccak256\":\"0x74799c3fac16738be41e270a70d3f7ad4f75d1dc7e5d8c58f0fe4c6128345112\",\"urls\":[\"bzz-raw://d9602af1001189d199736d17266d5fb34a32f71cd05fbcf4c0f97c0b3a642eee\",\"dweb:/ipfs/QmPto2DkZ1nKqicBMdMkaek7kGSSXqSKnf697h5zuthvsy\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol\":{\"keccak256\":\"0xd8134eac006b0a59b71cbcca82dfce7ce092a57c13a8383ebf0e8bc90c0df3e7\",\"urls\":[\"bzz-raw://ccead8bdcc71402ae7b1d8fb9bc1527081a5eb14f98a5157f5c6f27f21f8ad31\",\"dweb:/ipfs/QmdnDvTiX3EDm93ahjnZabNNgoyQzGtKpfbQUNtJe7t8Ts\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x9369468538c371057c907f84d438cec6b47673711fe289cc3779f8671314e06b\",\"urls\":[\"bzz-raw://0f59a670f4bc5cf1bd3dd58bdf6c31723d9d84d9da7d9283d6860cdf5f33b7c5\",\"dweb:/ipfs/QmTGuvD5WQD2z56GH35HoPJivKPeeEpbXidJVcbXZyT23C\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Exchange.sol\":{\"keccak256\":\"0x5952f2f78aa0adb88980d9eeec5626fecbec79103038841c3ad9e4f2c4ac556b\",\"urls\":[\"bzz-raw://2a358a8370fa8abba24db2a3337f5b397e51a686d84facaf70ced9cc32d65235\",\"dweb:/ipfs/QmY4vPNq3SMu176LL4XRxFPtDQf8QEztQNxerWvmoEALsR\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/SafeExternalCallback.sol\":{\"keccak256\":\"0xd308a1ab320de20780f7041ea5efd9568f8692e1ed6cf512b967ab63c791a8ff\",\"urls\":[\"bzz-raw://4a904b056f094be598396a90a5ba5297213934cfc2816848a494469ce249edd4\",\"dweb:/ipfs/QmcmeezMFPntDLNS1EY4j5THgRJUeyscgLv55WwxbFoiaY\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol\":{\"keccak256\":\"0x0b9bb2fa39154d11b2a63d2e2a9ae8ed662a7e79cd04061f4a73e3c02fe23c9b\",\"urls\":[\"bzz-raw://7a96f2d2d48dd4f5a2dd147e9225b1936981a5f25e3fc1c7fffa6cb2df4bf85d\",\"dweb:/ipfs/QmbD1FtwwtCiQjztAMAWe7zY1DrWgkikpna5URSMDYXQbF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol\":{\"keccak256\":\"0x6db553a7bf1da1f16e9f189a2a908fa93bf9408ccfb8c7693e0f856b596d65d6\",\"urls\":[\"bzz-raw://af2a4798be64b345393a3dca795095e8879f630fc6c2e8b0b0bcd7e7cc18019d\",\"dweb:/ipfs/QmPifHigQxBrSZSzbUWnfNC9kxFcLh88PEpgoLP1671Q8P\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"@openzeppelin/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzz-raw://bed15b3f35ed05505efc8fb5cb01d06c52230fbcaadf4ed24a85b1ac2f15f33c\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xb63221b23818d622bfd83d18e0968307e4fcb7a35536bdceded76e1cf8349acd\",\"urls\":[\"bzz-raw://44e1e8c22362c4708a8c3362735f1465f5b05e2f7315e16c7010d694ce019d73\",\"dweb:/ipfs/QmWj9g8X1hxkXRre2kwkEjLBetjuzmSbWHD81bsSojnBkS\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620069013803806200690183398101604081905262000034916200065d565b87878787878787876000620000516001600160e01b03620004a116565b601380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620068e1833981519152908290a35060138054600160a01b60ff60a01b1990911617905587516010805460208b01516040808d015160608e01516001600160401b03199485166001600160401b0397881617600160401b600160801b03191668010000000000000000948816850217600160801b600160c01b031916600160801b92881692909202919091176001600160c01b0316600160c01b918716919091021790935560808c01516011805460a08f015194169190951617600160401b600160a01b0319166001600160601b03909216021790915560c0890151601280546001600160801b0319166001600160801b0390921691909117905551632a6e9a8b60e11b815273__AdminImpl_____________________________906354dd351690620001b4906000908b90600401620007df565b60006040518083038186803b158015620001cd57600080fd5b505af4158015620001e2573d6000803e3d6000fd5b50506040516303d139af60e21b815273__AdminImpl_____________________________9250630f44e6bc915062000222906000908a90600401620007df565b60006040518083038186803b1580156200023b57600080fd5b505af415801562000250573d6000803e3d6000fd5b5050604051630311401d60e41b815273__AdminImpl_____________________________925063311401d0915062000290906000908990600401620007df565b60006040518083038186803b158015620002a957600080fd5b505af4158015620002be573d6000803e3d6000fd5b5050604051633e72b31360e21b815273__AdminImpl_____________________________925063f9cacc4c9150620002fe906000908890600401620007df565b60006040518083038186803b1580156200031757600080fd5b505af41580156200032c573d6000803e3d6000fd5b5050604051631c2d854760e21b815273__AdminImpl_____________________________92506370b6151c91506200036c906000908790600401620007fe565b60006040518083038186803b1580156200038557600080fd5b505af41580156200039a573d6000803e3d6000fd5b5050604051632e5c853560e11b815273__AdminImpl_____________________________9250635cb90a6a9150620003da906000908690600401620007b9565b60006040518083038186803b158015620003f357600080fd5b505af415801562000408573d6000803e3d6000fd5b50506040516301cf9adf60e31b815273__AdminImpl_____________________________9250630e7cd6f8915062000448906000908590600401620007fe565b60006040518083038186803b1580156200046157600080fd5b505af415801562000476573d6000803e3d6000fd5b505050506200048b32620004a560201b60201c565b50505050505050505050505050505050620008e0565b3390565b6001600160a01b038116620004d75760405162461bcd60e51b8152600401620004ce90620007a7565b60405180910390fd5b6013546040516001600160a01b03808416921690600080516020620068e183398151915290600090a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b80516200052f816200089a565b92915050565b6000602082840312156200054857600080fd5b6200055460206200081d565b9050600062000564848462000636565b82525092915050565b600060e082840312156200058057600080fd5b6200058c60e06200081d565b905060006200059c848462000643565b8252506020620005af8484830162000643565b6020830152506040620005c58482850162000643565b6040830152506060620005db8482850162000643565b6060830152506080620005f18482850162000643565b60808301525060a0620006078482850162000650565b60a08301525060c06200061d8482850162000629565b60c08301525092915050565b80516200052f81620008b4565b80516200052f81620008bf565b80516200052f81620008ca565b80516200052f81620008d5565b6000806000806000806000806101c0898b0312156200067b57600080fd5b6000620006898b8b6200056d565b98505060e06200069c8b828c0162000535565b975050610100620006b08b828c0162000535565b965050610120620006c48b828c0162000535565b955050610140620006d88b828c0162000535565b945050610160620006ec8b828c0162000636565b935050610180620007008b828c0162000522565b9250506101a0620007148b828c0162000636565b9150509295985092959890939650565b6200072f816200085a565b82525050565b60006200074460268362000844565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b805160208301906200079284826200079c565b50505050565b9052565b6200072f816200087f565b602080825281016200052f8162000735565b60408101620007c9828562000798565b620007d8602083018462000724565b9392505050565b60408101620007ef828562000798565b620007d860208301846200077f565b604081016200080e828562000798565b620007d860208301846200079c565b6040518181016001600160401b03811182821017156200083c57600080fd5b604052919050565b90815260200190565b60006200052f8262000873565b60006200052f826200084d565b6001600160801b031690565b6001600160a01b031690565b90565b6001600160401b031690565b6001600160601b031690565b620008a5816200085a565b8114620008b157600080fd5b50565b620008a58162000867565b620008a5816200087f565b620008a58162000882565b620008a5816200088e565b615ff180620008f06000396000f3fe608060405234801561001057600080fd5b50600436106105cd5760003560e01c80638da5cb5b11610303578063de8be8e71161019c578063ec6e3987116100ee578063f2385be3116100a2578063f94160521161007c578063f941605214610c25578063fd04b60614610c38578063fd47eda61461098a576105cd565b8063f2385be314610bf7578063f2901ae214610bff578063f2fde38b14610c12576105cd565b8063ed4d6f5c116100d3578063ed4d6f5c14610bbe578063ef6957d014610bd1578063f1061ba814610be4576105cd565b8063ec6e398714610b98578063ecef481f14610bab576105cd565b8063e552022811610150578063e8e72f751161012a578063e8e72f7514610b50578063eb1c6e6b14610b63578063eb44fdd314610b78576105cd565b8063e552022814610b22578063e56659fc14610b2a578063e5e23ef214610b3d576105cd565b8063e0e48d1911610181578063e0e48d1914610adc578063e51bfcb414610aef578063e52828c714610b0f576105cd565b8063de8be8e714610ac1578063deec053d14610ac9576105cd565b8063ba77ea6711610255578063cb04a34c11610209578063d93c9591116101e3578063d93c9591146107b7578063d96e406d14610a9b578063dc6d784614610aae576105cd565b8063cb04a34c14610a55578063d24c48bc14610a75578063d5ecf7c514610a88576105cd565b8063c0e044fc1161023a578063c0e044fc14610a32578063c146094214610a3a578063c190c2ec14610a42576105cd565b8063ba77ea6714610a0c578063c0bb72b714610a1f576105cd565b8063ac7bb20b116102b7578063b306e4f811610291578063b306e4f8146109c3578063b548b892146109d6578063b64e31ea146109f9576105cd565b8063ac7bb20b1461098a578063b002c82f1461099d578063b0dc49f8146109b0576105cd565b80638f6bc659116102e85780638f6bc659146109515780638fae3be114610964578063a67a6a4514610977576105cd565b80638da5cb5b146109415780638f32d59b14610949576105cd565b806338402762116104755780635ac7d17c116103c7578063715018a61161037b5780638356667011610355578063835666701461090857806385b53fc81461091b5780638928378e1461092e576105cd565b8063715018a6146108f0578063770e43e0146108f85780637e9eaf4114610900576105cd565b806363ae56b3116103ac57806363ae56b3146108a757806366411ff4146108ba5780636a8194e7146108cd576105cd565b80635ac7d17c146108815780635d3c0ce814610894576105cd565b80634be87414116104295780634f3c1542116104035780634f3c1542146108465780634f4d66f61461084e57806356ea84b214610861576105cd565b80634be87414146108235780634db90d52146108365780634e6340671461083e576105cd565b80633a031bf01161045a5780633a031bf0146107dd57806347d1b53c146107f057806348e648ee14610810576105cd565b806338402762146107b7578063387a498a146107ca576105cd565b806317b505251161052e57806320945e26116104e25780632e822af3116104bc5780632e822af3146107915780633063bce2146107a45780633305e5bb1461072a576105cd565b806320945e2614610763578063295c39a5146107765780632a5608451461077e576105cd565b80631a7777bb116105135780631a7777bb1461072a5780631ae4ec521461073d5780631eb1207614610750576105cd565b806317b50525146106f7578063197f0f0514610717576105cd565b80630f47fab011610585578063121fb72f1161056a578063121fb72f146106a3578063124f914c146106b657806313368364146106d7576105cd565b80630f47fab014610663578063105de10c14610683576105cd565b80630781d820116105b65780630781d8201461061b57806307af1568146106305780630b28fa3e14610650576105cd565b8063052f72d7146105d2578063062bd3e9146105fb575b600080fd5b6105e56105e03660046149ed565b610c4b565b6040516105f29190615932565b60405180910390f35b61060e610609366004615010565b610cf8565b6040516105f291906158a1565b61062e610629366004615010565b610d9d565b005b61064361063e366004615010565b610e99565b6040516105f29190615d42565b61062e61065e3660046150a9565b610f43565b610676610671366004614e12565b611039565b6040516105f291906158ca565b610696610691366004614e12565b6110e3565b6040516105f2919061599d565b61062e6106b136600461508a565b61118e565b6106c96106c4366004614e12565b61123d565b6040516105f29291906159ab565b6106ea6106e5366004615010565b6112f8565b6040516105f29190615940565b61070a610705366004614e12565b61139d565b6040516105f29190615d50565b6106ea610725366004615010565b611442565b610696610738366004615010565b611497565b61062e61074b366004615109565b6114f2565b61069661075e366004614edd565b6115a1565b610696610771366004614e12565b61165a565b61070a6116b5565b61070a61078c366004614a29565b61175d565b61062e61079f366004614d88565b611879565b61062e6107b2366004614d88565b611926565b6106436107c5366004615010565b6119d3565b61062e6107d8366004614d88565b611a2e565b6105e56107eb366004614a29565b611adb565b6108036107fe366004614e60565b611b8b565b6040516105f29190615a1c565b6106ea61081e3660046149ed565b611c37565b61062e6108313660046150a9565b611c8c565b6105e5611d3b565b6105e5611dde565b610696611e31565b61070a61085c366004614e12565b611eda565b61087461086f366004615010565b611f2f565b6040516105f291906159c6565b6105e561088f366004615010565b611fda565b6106966108a2366004614e12565b61202f565b61062e6108b5366004615010565b61208a565b61062e6108c8366004614d2e565b612137565b6108e06108db366004614e12565b6121e4565b6040516105f294939291906158db565b61062e612287565b6106ea61231a565b6106966123bd565b61062e610916366004614e30565b612416565b61062e610929366004614be6565b612488565b61069661093c366004615010565b61255f565b61060e6125ba565b6105e56125d6565b61070a61095f36600461504c565b612616565b61070a6109723660046149ed565b6126c7565b61062e610985366004614b87565b61271c565b610696610998366004615010565b6127a7565b61062e6109ab3660046150d9565b612802565b61062e6109be366004614a93565b6129b9565b61062e6109d1366004615109565b612a68565b6109e96109e4366004615010565b612b17565b6040516105f294939291906159e3565b610696610a07366004615010565b612bdb565b6106c9610a1a366004614e12565b612c36565b61062e610a2d366004614d88565b612cf2565b61070a612d9f565b610696612df2565b610643610a50366004614e60565b612e4b565b610a68610a63366004615010565b612ef7565b6040516105f29190615d34565b610696610a83366004615109565b612fa1565b610643610a96366004615010565b613074565b61062e610aa9366004614e90565b6130cf565b610a68610abc366004615010565b613166565b61070a6131c1565b610874610ad7366004615010565b613214565b61070a610aea366004614e60565b61326f565b610b02610afd366004614e12565b613316565b6040516105f2919061594e565b610696610b1d366004615010565b6133bb565b610696613416565b61062e610b38366004614d2e565b61346f565b61062e610b4b3660046150a9565b61351c565b61062e610b5e36600461508a565b6135cb565b610b6b61367a565b6040516105f29190615a2a565b610b8b610b86366004615010565b613723565b6040516105f291906159d4565b61062e610ba6366004614a63565b6137cf565b610696610bb9366004615010565b61387e565b61062e610bcc366004614ac3565b6138d9565b61062e610bdf36600461506b565b6139e4565b6105e5610bf23660046149ed565b613a93565b6106ea613ae8565b61062e610c0d366004614a63565b613b3b565b61062e610c203660046149ed565b613bea565b6106c9610c33366004614e12565b613c1a565b610696610c46366004615010565b613c7d565b6040517f288afc6200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063288afc6290610ca09084908690600401615a46565b60206040518083038186803b158015610cb857600080fd5b505af4158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d10565b90505b919050565b6040517fa2169a3a00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a2169a3a90610d4d9084908690600401615c78565b60206040518083038186803b158015610d6557600080fd5b505af4158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614a0b565b610da56125d6565b610dca5760405162461bcd60e51b8152600401610dc19061597d565b60405180910390fd5b601354600160a01b900460ff16610df35760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f70b6151c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906370b6151c90610e53906000908590600401615c78565b60006040518083038186803b158015610e6b57600080fd5b505af4158015610e7f573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b179055505050565b610ea1613f47565b6040517f7462482a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90637462482a90610ef4906000908690600401615c78565b604080518083038186803b158015610f0b57600080fd5b505af4158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614ff2565b610f4b6125d6565b610f675760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16610f905760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f1c90d82400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90631c90d82490610ff29060009086908690600401615ce4565b60006040518083038186803b15801561100a57600080fd5b505af415801561101e573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b17905550505050565b6040517fbbf7039800000000000000000000000000000000000000000000000000000000815260609073__GettersImpl___________________________9063bbf703989061108f906000908690600401615bcb565b60006040518083038186803b1580156110a757600080fd5b505af41580156110bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf09190810190614c1b565b6110eb613f5e565b6040517fc61f66b400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c61f66b49061113e906000908690600401615bcb565b60206040518083038186803b15801561115657600080fd5b505af415801561116a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614da6565b6111966125d6565b6111b25760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166111db5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610ff29060009086908690600401615cc9565b611245613f5e565b61124d613f5e565b6040517fddc7c6f000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ddc7c6f0906112a0906000908790600401615bcb565b604080518083038186803b1580156112b757600080fd5b505af41580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ef9190810190614dc4565b91509150915091565b6040517fa18862fc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a18862fc9061134d9084908690600401615c78565b60206040518083038186803b15801561136557600080fd5b505af4158015611379573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d4c565b6040517f6a0e643300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636a0e6433906113f29084908690600401615bcb565b60206040518083038186803b15801561140a57600080fd5b505af415801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf0919081019061502e565b6040517f35b5d1f600000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906335b5d1f69061134d9084908690600401615c78565b61149f613f5e565b6040517f063bf37300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063063bf3739061113e906000908690600401615c78565b6114fa6125d6565b6115165760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff1661153f5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f3ea4188300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633ea4188390610ff29060009086908690600401615d0c565b6115a9613f5e565b6040517ffef3d3cb00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063fef3d3cb9061160090600090889088908890600401615c43565b60206040518083038186803b15801561161857600080fd5b505af415801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116509190810190614da6565b90505b9392505050565b611662613f5e565b6040517f62f8e1b300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906362f8e1b39061113e906000908690600401615bcb565b6040517fe99388d300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e99388d390611708908490600401615a38565b60206040518083038186803b15801561172057600080fd5b505af4158015611734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611758919081019061502e565b905090565b60006117676125d6565b6117835760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166117ac5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a9061180e9060009087908790600401615a61565b60206040518083038186803b15801561182657600080fd5b505af415801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061185e919081019061502e565b90506013805460ff60a01b1916600160a01b17905592915050565b6118816125d6565b61189d5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166118c65760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e53906000908590600401615bbd565b61192e6125d6565b61194a5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166119735760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e53906000908590600401615bbd565b6119db613f47565b6040517fc641ccd100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c641ccd190610ef4906000908690600401615c78565b611a366125d6565b611a525760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16611a7b5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e53906000908590600401615bbd565b6040517f75bcaa4800000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906375bcaa4890611b3290849087908790600401615a61565b60206040518083038186803b158015611b4a57600080fd5b505af4158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614d10565b90505b92915050565b611b93613f47565b6040517f787f772700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063787f772790611be89060009087908790600401615be6565b604080518083038186803b158015611bff57600080fd5b505af4158015611c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614f98565b6040517f2e19a6ea00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90632e19a6ea9061134d9084908690600401615a46565b611c946125d6565b611cb05760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16611cd95760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610ff29060009086908690600401615ce4565b6040517f83fe9e1400000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906383fe9e1490611d8e908490600401615a38565b60206040518083038186803b158015611da657600080fd5b505af4158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614d10565b6040517f6861138d00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636861138d90611d8e908490600401615a38565b611e39613f5e565b6040517f4f820bd600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634f820bd690611e8a90600090600401615a38565b60206040518083038186803b158015611ea257600080fd5b505af4158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614da6565b6040517fe647a68700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e647a687906113f29084908690600401615bcb565b611f37613f71565b6040517fd23406b600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d23406b690611f8a906000908690600401615c78565b60606040518083038186803b158015611fa257600080fd5b505af4158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614df4565b6040517fd09657e100000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063d09657e190610ca09084908690600401615c78565b612037613f5e565b6040517f58105e3500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906358105e359061113e906000908690600401615bcb565b6120926125d6565b6120ae5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166120d75760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f0e7cd6f800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630e7cd6f890610e53906000908590600401615c78565b61213f6125d6565b61215b5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166121845760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fa289756d00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063a289756d90610e53906000908590600401615ba2565b60608060608073__GettersImpl___________________________63edf9c1ec6000876040518363ffffffff1660e01b8152600401612224929190615bcb565b60006040518083038186803b15801561223c57600080fd5b505af4158015612250573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122789190810190614c50565b93509350935093509193509193565b61228f6125d6565b6122ab5760405162461bcd60e51b8152600401610dc19061597d565b60135460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6040517f5ebcae4c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90635ebcae4c9061236d908490600401615a38565b60206040518083038186803b15801561238557600080fd5b505af4158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614d4c565b6123c5613f5e565b6040517f136a1dc700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063136a1dc790611e8a90600090600401615a38565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600360209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561247f57fe5b02179055505050565b805160005b8181101561255a5760008382815181106124a357fe5b602002602001015160000151905060008483815181106124bf57fe5b6020026020010151602001519050806124d95760026124dc565b60015b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529081902060ff9390931690925590517f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061254890859085906158af565b60405180910390a2505060010161248d565b505050565b612567613f5e565b6040517f8828244f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638828244f9061113e906000908690600401615c78565b60135473ffffffffffffffffffffffffffffffffffffffff1690565b60135460009073ffffffffffffffffffffffffffffffffffffffff166125fa613cd8565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006126206125d6565b61263c5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166126655760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e09061180e9060009087908790600401615c93565b6040517f92108b1e00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906392108b1e906113f29084908690600401615a46565b601354600160a01b900460ff166127455760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610ff29060009086908690600401615b6e565b6127af613f5e565b6040517f2bdf1cf200000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90632bdf1cf29061113e906000908690600401615c78565b61280a613f71565b5060008281526001602090815260409182902082516060810184526002909101546dffffffffffffffffffffffffffff80821683526e01000000000000000000000000000082048116938301939093527c0100000000000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166128a35780516dffffffffffffffffffffffffffff1682525b60208201516dffffffffffffffffffffffffffff166128d7576020808201516dffffffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff9485166e010000000000000000000000000000027fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffff000000000000000000000000000090941693909317939093161716179055565b6129c16125d6565b6129dd5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612a065760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fdf7ff36300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063df7ff36390610ff29060009086908690600401615ab1565b612a706125d6565b612a8c5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612ab55760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f6f48141000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636f48141090610ff29060009086908690600401615d0c565b612b1f613f91565b612b27613f71565b612b2f613f5e565b612b37613f5e565b6040517fba25f9d600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ba25f9d690612b8a906000908990600401615c78565b6102a06040518083038186803b158015612ba357600080fd5b505af4158015612bb7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122789190810190614f3f565b612be3613f5e565b6040517fa16184f600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a16184f69061113e906000908690600401615c78565b612c3e613f5e565b612c46613f5e565b6040517fd933f84400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d933f84490612c99906000908790600401615bcb565b604080518083038186803b158015612cb057600080fd5b505af4158015612cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ce89190810190614dc4565b9094909350915050565b612cfa6125d6565b612d165760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612d3f5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e53906000908590600401615bbd565b6040517f4a451be200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634a451be290611708908490600401615a38565b612dfa613f5e565b6040517f8339c50f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638339c50f90611e8a90600090600401615a38565b612e53613f47565b6040517f634c50ce00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063634c50ce90612ea89060009087908790600401615be6565b604080518083038186803b158015612ebf57600080fd5b505af4158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614ff2565b612eff613f47565b6040517f055369d700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063055369d790612f52906000908690600401615c78565b604080518083038186803b158015612f6957600080fd5b505af4158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614fd4565b612fa9613f5e565b612fb1613f47565b5060408051808201825260008082526020820181905291517ffef3d3cb000000000000000000000000000000000000000000000000000000008152909173__GettersImpl___________________________9163fef3d3cb9161301c91859089908990600401615c43565b60206040518083038186803b15801561303457600080fd5b505af4158015613048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061306c9190810190614da6565b949350505050565b61307c613f47565b6040517fd2c9ee0000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d2c9ee0090610ef4906000908690600401615c78565b6130da600083613cdc565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e9061313190600090879087908790600401615c0e565b60006040518083038186803b15801561314957600080fd5b505af415801561315d573d6000803e3d6000fd5b50505050505050565b61316e613f47565b6040517f485df94f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063485df94f90612f52906000908690600401615c78565b6040517f10b9711c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310b9711c90611708908490600401615a38565b61321c613f71565b6040517f4aaee58500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634aaee58590611f8a906000908690600401615c78565b6040517f99c4c00900000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906399c4c009906132c690849087908790600401615be6565b60206040518083038186803b1580156132de57600080fd5b505af41580156132f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b82919081019061502e565b6040517f4af71ebc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634af71ebc9061336b9084908690600401615bcb565b60206040518083038186803b15801561338357600080fd5b505af4158015613397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d6a565b6133c3613f5e565b6040517f041f229400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063041f22949061113e906000908690600401615c78565b61341e613f5e565b6040517f22ef216100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906322ef216190611e8a90600090600401615a38565b6134776125d6565b6134935760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166134bc5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f5cb90a6a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90635cb90a6a90610e53906000908590600401615ba2565b6135246125d6565b6135405760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166135695760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f6928084500000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636928084590610ff29060009086908690600401615ce4565b6135d36125d6565b6135ef5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166136185760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610ff29060009086908690600401615cc9565b613682614012565b6040517f8b19f9e800000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638b19f9e8906136d390600090600401615a38565b60e06040518083038186803b1580156136eb57600080fd5b505af41580156136ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614fb6565b61372b613f91565b6040517f0b48557f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90630b48557f9061377e906000908690600401615c78565b6102006040518083038186803b15801561379757600080fd5b505af41580156137ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614f20565b6137d76125d6565b6137f35760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff1661381c5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610ff29060009086908690600401615a89565b613886613f5e565b6040517fdb32b3ca00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063db32b3ca9061113e906000908690600401615c78565b6138e16125d6565b6138fd5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166139265760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fbc54053f00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063bc54053f90613996906000908d908d908d908d908d908d908d908d908d90600401615ad9565b60006040518083038186803b1580156139ae57600080fd5b505af41580156139c2573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b1790555050505050505050505050565b6139ec6125d6565b613a085760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16613a315760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610ff29060009086908690600401615cae565b6040517f3808f21700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90633808f21790610ca09084908690600401615a46565b6040517f10f1b88c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310f1b88c9061236d908490600401615a38565b613b436125d6565b613b5f5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16613b885760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610ff29060009086908690600401615a89565b613bf26125d6565b613c0e5760405162461bcd60e51b8152600401610dc19061597d565b613c1781613d60565b50565b613c22613f5e565b613c2a613f5e565b6040517febec2e6c00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ebec2e6c906112a0906000908790600401615bcb565b613c85613f5e565b6040517fa335f47a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a335f47a9061113e906000908690600401615c78565b3390565b8154613d5c9082108015613d155750600082815260018401602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b7f47657474657273496d706c0000000000000000000000000000000000000000007f496e76616c6964206d61726b6574000000000000000000000000000000000000613e21565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116613d935760405162461bcd60e51b8152600401610dc19061596d565b60135460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8261255a57613e2f82613e91565b7f3a20000000000000000000000000000000000000000000000000000000000000613e5983613e91565b604051602001613e6b93929190615879565b60408051601f198184030181529082905262461bcd60e51b8252610dc19160040161595c565b60608082604051602001613ea59190615864565b60408051601f19818403018152919052905060205b8015613f305781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110613ef357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613f2b5760010181529050610cf3565b613eba565b505060408051600081526020810190915292915050565b604080518082019091526000808252602082015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516101608101825260008082526020820152908101613fb1613f47565b8152602001613fbe613f71565b81526000602082018190526040820152606001613fd9613f5e565b8152602001613fe6613f5e565b8152602001613ff3613f47565b8152602001614000613f47565b815260200161400d613f5e565b905290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b8035611b8581615f2b565b8051611b8581615f2b565b600082601f83011261407557600080fd5b815161408861408382615d85565b615d5e565b915081818352602084019350602081019050838560208402820111156140ad57600080fd5b60005b838110156140d957816140c38882614059565b84525060209283019291909101906001016140b0565b5050505092915050565b600082601f8301126140f457600080fd5b813561410261408382615d85565b81815260209384019390925082018360005b838110156140d9578135860161412a888261441f565b8452506020928301929190910190600101614114565b600082601f83011261415157600080fd5b813561415f61408382615d85565b9150818183526020840193506020810190508385604084028201111561418457600080fd5b60005b838110156140d9578161419a8882614671565b84525060209092019160409190910190600101614187565b600082601f8301126141c357600080fd5b81356141d161408382615d85565b915081818352602084019350602081019050838560408402820111156141f657600080fd5b60005b838110156140d9578161420c88826147be565b845250602090920191604091909101906001016141f9565b600082601f83011261423557600080fd5b815161424361408382615d85565b9150818183526020840193506020810190508385604084028201111561426857600080fd5b60005b838110156140d9578161427e88826147f9565b8452506020909201916040919091019060010161426b565b600082601f8301126142a757600080fd5b81516142b561408382615d85565b915081818352602084019350602081019050838560408402820111156142da57600080fd5b60005b838110156140d957816142f08882614944565b845250602090920191604091909101906001016142dd565b600082601f83011261431957600080fd5b815161432761408382615d85565b9150818183526020840193506020810190508385602084028201111561434c57600080fd5b60005b838110156140d9578161436288826149b6565b845250602092830192919091019060010161434f565b8035611b8581615f3f565b8051611b8581615f3f565b600082601f83011261439f57600080fd5b81356143ad61408382615da6565b915080825260208301602083018583830111156143c957600080fd5b6143d4838284615ecb565b50505092915050565b8035611b8581615f48565b8051611b8581615f48565b8035611b8581615f51565b8035611b8581615f5e565b8035611b8581615f6b565b8051611b8581615f6b565b6000610160828403121561443257600080fd5b61443d610100615d5e565b9050600061444b84846143f3565b825250602061445c848483016149ab565b6020830152506040614470848285016144fb565b60408301525060c0614484848285016149ab565b60608301525060e0614498848285016149ab565b6080830152506101006144ad8482850161404e565b60a0830152506101206144c2848285016149ab565b60c08301525061014082013567ffffffffffffffff8111156144e357600080fd5b6144ef8482850161438e565b60e08301525092915050565b60006080828403121561450d57600080fd5b6145176080615d5e565b905060006145258484614378565b8252506020614536848483016143fe565b602083015250604061454a848285016143fe565b604083015250606061455e848285016149ab565b60608301525092915050565b60006020828403121561457c57600080fd5b6145866020615d5e565b9050600061459484846149b6565b82525092915050565b6000602082840312156145af57600080fd5b6145b96020615d5e565b9050600061459484846149ab565b6000606082840312156145d957600080fd5b6145e36060615d5e565b905060006145f1848461498a565b82525060206146028484830161498a565b6020830152506040614616848285016149cc565b60408301525092915050565b60006060828403121561463457600080fd5b61463e6060615d5e565b9050600061464c848461497f565b825250602061465d8484830161497f565b6020830152506040614616848285016149c1565b60006040828403121561468357600080fd5b61468d6040615d5e565b9050600061469b848461404e565b82525060206146ac848483016149ab565b60208301525092915050565b600061020082840312156146cb57600080fd5b6146d6610160615d5e565b905060006146e48484614059565b82525060206146f584848301614383565b60208301525060406147098482850161491a565b604083015250608061471d848285016145c7565b60608301525060e0614731848285016143e8565b608083015250610100614746848285016143e8565b60a08301525061012061475b8482850161456a565b60c0830152506101406147708482850161456a565b60e08301525061016061478584828501614944565b610100830152506101a061479b84828501614944565b610120830152506101e06147b18482850161456a565b6101408301525092915050565b6000604082840312156147d057600080fd5b6147da6040615d5e565b905060006147e8848461404e565b82525060206146ac84848301614378565b60006040828403121561480b57600080fd5b6148156040615d5e565b905060006148238484614383565b82525060206146ac848483016149a0565b60006040828403121561484657600080fd5b6148506040615d5e565b9050600061485e8484614378565b82525060206146ac84848301614995565b600060e0828403121561488157600080fd5b61488b60e0615d5e565b9050600061489984846149d7565b82525060206148aa848483016149d7565b60208301525060406148be848285016149d7565b60408301525060606148d2848285016149d7565b60608301525060806148e6848285016149d7565b60808301525060a06148fa848285016149e2565b60a08301525060c061490e848285016149a0565b60c08301525092915050565b60006040828403121561492c57600080fd5b6149366040615d5e565b9050600061482384846149a0565b60006040828403121561495657600080fd5b6149606040615d5e565b9050600061496e8484614383565b82525060206146ac848483016149b6565b8035611b8581615f78565b8051611b8581615f78565b8035611b8581615f81565b8051611b8581615f81565b8035611b8581615f8a565b8051611b8581615f8a565b8035611b8581615f93565b8051611b8581615f93565b8051611b8581615f9c565b8051611b8581615fa5565b6000602082840312156149ff57600080fd5b600061306c848461404e565b600060208284031215614a1d57600080fd5b600061306c8484614059565b60008060408385031215614a3c57600080fd5b6000614a48858561404e565b9250506020614a598582860161404e565b9150509250929050565b60008060408385031215614a7657600080fd5b6000614a82858561404e565b9250506020614a5985828601614378565b60008060408385031215614aa657600080fd5b6000614ab2858561404e565b9250506020614a59858286016143dd565b60008060008060008060008060006101208a8c031215614ae257600080fd5b6000614aee8c8c61404e565b9950506020614aff8c828d016143dd565b9850506040614b108c828d016143dd565b9750506060614b218c828d0161459d565b9650506080614b328c828d0161459d565b95505060a0614b438c828d016149ab565b94505060c0614b548c828d016149ab565b93505060e0614b658c828d0161459d565b925050610100614b778c828d01614378565b9150509295985092959850929598565b60008060408385031215614b9a57600080fd5b823567ffffffffffffffff811115614bb157600080fd5b614bbd85828601614140565b925050602083013567ffffffffffffffff811115614bda57600080fd5b614a59858286016140e3565b600060208284031215614bf857600080fd5b813567ffffffffffffffff811115614c0f57600080fd5b61306c848285016141b2565b600060208284031215614c2d57600080fd5b815167ffffffffffffffff811115614c4457600080fd5b61306c84828501614308565b60008060008060808587031215614c6657600080fd5b845167ffffffffffffffff811115614c7d57600080fd5b614c8987828801614308565b945050602085015167ffffffffffffffff811115614ca657600080fd5b614cb287828801614064565b935050604085015167ffffffffffffffff811115614ccf57600080fd5b614cdb87828801614224565b925050606085015167ffffffffffffffff811115614cf857600080fd5b614d0487828801614296565b91505092959194509250565b600060208284031215614d2257600080fd5b600061306c8484614383565b600060208284031215614d4057600080fd5b600061306c84846143dd565b600060208284031215614d5e57600080fd5b600061306c84846143e8565b600060208284031215614d7c57600080fd5b600061306c8484614414565b600060208284031215614d9a57600080fd5b600061306c848461459d565b600060208284031215614db857600080fd5b600061306c848461456a565b60008060408385031215614dd757600080fd5b6000614de3858561456a565b9250506020614a598582860161456a565b600060608284031215614e0657600080fd5b600061306c84846145c7565b600060408284031215614e2457600080fd5b600061306c8484614671565b60008060608385031215614e4357600080fd5b6000614e4f8585614671565b9250506040614a5985828601614409565b60008060608385031215614e7357600080fd5b6000614e7f8585614671565b9250506040614a59858286016149ab565b600080600060a08486031215614ea557600080fd5b6000614eb18686614671565b9350506040614ec2868287016149ab565b9250506060614ed386828701614834565b9150509250925092565b600080600060808486031215614ef257600080fd5b6000614efe8686614671565b9350506040614f0f868287016149ab565b9250506060614ed3868287016149ab565b60006102008284031215614f3357600080fd5b600061306c84846146b8565b6000806000806102a08587031215614f5657600080fd5b6000614f6287876146b8565b945050610200614f74878288016145c7565b935050610260614f868782880161456a565b925050610280614d048782880161456a565b600060408284031215614faa57600080fd5b600061306c84846147f9565b600060e08284031215614fc857600080fd5b600061306c848461486f565b600060408284031215614fe657600080fd5b600061306c848461491a565b60006040828403121561500457600080fd5b600061306c8484614944565b60006020828403121561502257600080fd5b600061306c84846149ab565b60006020828403121561504057600080fd5b600061306c84846149b6565b6000806040838503121561505f57600080fd5b6000614a4885856149ab565b6000806040838503121561507e57600080fd5b6000614a8285856149ab565b6000806040838503121561509d57600080fd5b6000614ab285856149ab565b600080604083850312156150bc57600080fd5b60006150c885856149ab565b9250506020614a598582860161459d565b600080608083850312156150ec57600080fd5b60006150f885856149ab565b9250506020614a5985828601614622565b6000806040838503121561511c57600080fd5b600061512885856149ab565b9250506020614a59858286016149ab565b60006151458383615191565b505060200190565b6000611b828383615521565b60006151658383615664565b505060400190565b60006151658383615761565b6000615165838361581d565b60006151458383615840565b61519a81615de1565b82525050565b60006151ab82615dd4565b6151b58185615dd8565b93506151c083615dce565b8060005b838110156151ee5781516151d88882615139565b97506151e383615dce565b9250506001016151c4565b509495945050505050565b600061520482615dd4565b61520e8185615dd8565b93508360208202850161522085615dce565b8060005b8581101561525a578484038952815161523d858261514d565b945061524883615dce565b60209a909a0199925050600101615224565b5091979650505050505050565b600061527282615dd4565b61527c8185615dd8565b935061528783615dce565b8060005b838110156151ee57815161529f8882615159565b97506152aa83615dce565b92505060010161528b565b60006152c082615dd4565b6152ca8185615dd8565b93506152d583615dce565b8060005b838110156151ee5781516152ed888261516d565b97506152f883615dce565b9250506001016152d9565b600061530e82615dd4565b6153188185615dd8565b935061532383615dce565b8060005b838110156151ee57815161533b8882615179565b975061534683615dce565b925050600101615327565b600061535c82615dd4565b6153668185615dd8565b935061537183615dce565b8060005b838110156151ee5781516153898882615185565b975061539483615dce565b925050600101615375565b61519a81615dec565b61519a6153b482615df1565b615e16565b61519a6153b482615e16565b60006153d082615dd4565b6153da8185610cf3565b93506153ea818560208601615ed7565b9290920192915050565b60006153ff82615dd4565b6154098185615dd8565b9350615419818560208601615ed7565b61542281615f03565b9093019392505050565b61519a81615e19565b61519a81615eaa565b61519a81615eb5565b61519a81615ec0565b600061545d602683615dd8565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006154bc602083615dd8565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006154f5601f83615dd8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906155368582615435565b5060208301516155496020860182615840565b50604083015161555c60408601826155cc565b50606083015161556f60c0860182615840565b50608083015161558260e0860182615840565b5060a0830151615596610100860182615191565b5060c08301516155aa610120860182615840565b5060e08301518482036101408601526155c382826153f4565b95945050505050565b805160808301906155dd848261539f565b5060208201516155f0602085018261543e565b506040820151615603604085018261543e565b5060608201516156166060850182615840565b50505050565b805160208301906156168482615840565b8051606083019061563e848261582e565b506020820151615651602085018261582e565b5060408201516156166040850182615849565b805160408301906156758482615191565b5060208201516156166020850182615840565b805161020083019061569a8482615191565b5060208201516156ad602085018261539f565b5060408201516156c0604085018261580c565b5060608201516156d3608085018261562d565b5060808201516156e660e085018261542c565b5060a08201516156fa61010085018261542c565b5060c082015161570e61012085018261561c565b5060e082015161572261014085018261561c565b5061010082015161573761016085018261581d565b5061012082015161574c6101a085018261581d565b506101408201516156166101e085018261561c565b80516040830190615772848261539f565b5060208201516156166020850182615837565b805160e08301906157968482615852565b5060208201516157a96020850182615852565b5060408201516157bc6040850182615852565b5060608201516157cf6060850182615852565b5060808201516157e26080850182615852565b5060a08201516157f560a085018261585b565b5060c082015161561660c0850182615837565b9052565b805160408301906157728482615837565b80516040830190615675848261539f565b61519a81615e42565b61519a81615e55565b61519a81615e16565b61519a81615e83565b61519a81615e8c565b61519a81615e99565b600061587082846153b9565b50602001919050565b600061588582866153c5565b915061589182856153a8565b6002820191506155c382846153c5565b60208101611b858284615191565b604081016158bd8285615191565b611653602083018461539f565b60208082528101611b828184615351565b608080825281016158ec8187615351565b9050818103602083015261590081866151a0565b9050818103604083015261591481856152b5565b905081810360608301526159288184615303565b9695505050505050565b60208101611b85828461539f565b60208101611b85828461542c565b60208101611b858284615447565b60208082528101611b8281846153f4565b60208082528101610cf081615450565b60208082528101610cf0816154af565b60208082528101610cf0816154e8565b60208101611b85828461561c565b604081016159b9828561561c565b611653602083018461561c565b60608101611b85828461562d565b6102008101611b858284615688565b6102a081016159f28287615688565b615a0061020083018661562d565b615a0e61026083018561561c565b6155c361028083018461561c565b60408101611b858284615761565b60e08101611b858284615785565b60208101611b858284615808565b60408101615a548285615808565b6116536020830184615191565b60608101615a6f8286615808565b615a7c6020830185615191565b61306c6040830184615191565b60608101615a978286615808565b615aa46020830185615191565b61306c604083018461539f565b60608101615abf8286615808565b615acc6020830185615191565b61306c604083018461542c565b6101408101615ae8828d615808565b615af5602083018c615191565b615b02604083018b61542c565b615b0f606083018a61542c565b615b1c608083018961561c565b615b2960a083018861561c565b615b3660c0830187615840565b615b4360e0830186615840565b615b5161010083018561561c565b615b5f61012083018461539f565b9b9a5050505050505050505050565b60608101615b7c8286615808565b8181036020830152615b8e8185615267565b905081810360408301526155c381846151f9565b60408101615bb08285615808565b611653602083018461542c565b604081016159b98285615808565b60608101615bd98285615808565b6116536020830184615664565b60808101615bf48286615808565b615c016020830185615664565b61306c6060830184615840565b60c08101615c1c8287615808565b615c296020830186615664565b615c366060830185615840565b6155c36080830184615761565b60a08101615c518287615808565b615c5e6020830186615664565b615c6b6060830185615840565b6155c36080830184615840565b60408101615c868285615808565b6116536020830184615840565b60608101615ca18286615808565b615a7c6020830185615840565b60608101615cbc8286615808565b615aa46020830185615840565b60608101615cd78286615808565b615acc6020830185615840565b60608101615cf28286615808565b615cff6020830185615840565b61306c604083018461561c565b60608101615d1a8286615808565b615d276020830185615840565b61306c6040830184615840565b60408101611b85828461580c565b60408101611b85828461581d565b60208101611b858284615840565b60405181810167ffffffffffffffff81118282101715615d7d57600080fd5b604052919050565b600067ffffffffffffffff821115615d9c57600080fd5b5060209081020190565b600067ffffffffffffffff821115615dbd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610cf082615e6a565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610cf082615de1565b80610cf381615f0d565b80610cf381615f17565b80610cf381615f21565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610cf082615e24565b6000610cf082615e2e565b6000610cf082615e38565b82818337506000910152565b60005b83811015615ef2578181015183820152602001615eda565b838111156156165750506000910152565b601f01601f191690565b60098110613c1757fe5b60028110613c1757fe5b60038110613c1757fe5b615f3481615de1565b8114613c1757600080fd5b615f3481615dec565b615f3481615e19565b60098110613c1757600080fd5b60028110613c1757600080fd5b60038110613c1757600080fd5b615f3481615e42565b615f3481615e55565b615f3481615e16565b615f3481615e83565b615f3481615e8c565b615f3481615e9956fea365627a7a72315820a513982413f63fdf1d5803d5ec85052c4ed6f08cba8f47093ad265e65b2841aa6c6578706572696d656e74616cf564736f6c634300051000408be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106105cd5760003560e01c80638da5cb5b11610303578063de8be8e71161019c578063ec6e3987116100ee578063f2385be3116100a2578063f94160521161007c578063f941605214610c25578063fd04b60614610c38578063fd47eda61461098a576105cd565b8063f2385be314610bf7578063f2901ae214610bff578063f2fde38b14610c12576105cd565b8063ed4d6f5c116100d3578063ed4d6f5c14610bbe578063ef6957d014610bd1578063f1061ba814610be4576105cd565b8063ec6e398714610b98578063ecef481f14610bab576105cd565b8063e552022811610150578063e8e72f751161012a578063e8e72f7514610b50578063eb1c6e6b14610b63578063eb44fdd314610b78576105cd565b8063e552022814610b22578063e56659fc14610b2a578063e5e23ef214610b3d576105cd565b8063e0e48d1911610181578063e0e48d1914610adc578063e51bfcb414610aef578063e52828c714610b0f576105cd565b8063de8be8e714610ac1578063deec053d14610ac9576105cd565b8063ba77ea6711610255578063cb04a34c11610209578063d93c9591116101e3578063d93c9591146107b7578063d96e406d14610a9b578063dc6d784614610aae576105cd565b8063cb04a34c14610a55578063d24c48bc14610a75578063d5ecf7c514610a88576105cd565b8063c0e044fc1161023a578063c0e044fc14610a32578063c146094214610a3a578063c190c2ec14610a42576105cd565b8063ba77ea6714610a0c578063c0bb72b714610a1f576105cd565b8063ac7bb20b116102b7578063b306e4f811610291578063b306e4f8146109c3578063b548b892146109d6578063b64e31ea146109f9576105cd565b8063ac7bb20b1461098a578063b002c82f1461099d578063b0dc49f8146109b0576105cd565b80638f6bc659116102e85780638f6bc659146109515780638fae3be114610964578063a67a6a4514610977576105cd565b80638da5cb5b146109415780638f32d59b14610949576105cd565b806338402762116104755780635ac7d17c116103c7578063715018a61161037b5780638356667011610355578063835666701461090857806385b53fc81461091b5780638928378e1461092e576105cd565b8063715018a6146108f0578063770e43e0146108f85780637e9eaf4114610900576105cd565b806363ae56b3116103ac57806363ae56b3146108a757806366411ff4146108ba5780636a8194e7146108cd576105cd565b80635ac7d17c146108815780635d3c0ce814610894576105cd565b80634be87414116104295780634f3c1542116104035780634f3c1542146108465780634f4d66f61461084e57806356ea84b214610861576105cd565b80634be87414146108235780634db90d52146108365780634e6340671461083e576105cd565b80633a031bf01161045a5780633a031bf0146107dd57806347d1b53c146107f057806348e648ee14610810576105cd565b806338402762146107b7578063387a498a146107ca576105cd565b806317b505251161052e57806320945e26116104e25780632e822af3116104bc5780632e822af3146107915780633063bce2146107a45780633305e5bb1461072a576105cd565b806320945e2614610763578063295c39a5146107765780632a5608451461077e576105cd565b80631a7777bb116105135780631a7777bb1461072a5780631ae4ec521461073d5780631eb1207614610750576105cd565b806317b50525146106f7578063197f0f0514610717576105cd565b80630f47fab011610585578063121fb72f1161056a578063121fb72f146106a3578063124f914c146106b657806313368364146106d7576105cd565b80630f47fab014610663578063105de10c14610683576105cd565b80630781d820116105b65780630781d8201461061b57806307af1568146106305780630b28fa3e14610650576105cd565b8063052f72d7146105d2578063062bd3e9146105fb575b600080fd5b6105e56105e03660046149ed565b610c4b565b6040516105f29190615932565b60405180910390f35b61060e610609366004615010565b610cf8565b6040516105f291906158a1565b61062e610629366004615010565b610d9d565b005b61064361063e366004615010565b610e99565b6040516105f29190615d42565b61062e61065e3660046150a9565b610f43565b610676610671366004614e12565b611039565b6040516105f291906158ca565b610696610691366004614e12565b6110e3565b6040516105f2919061599d565b61062e6106b136600461508a565b61118e565b6106c96106c4366004614e12565b61123d565b6040516105f29291906159ab565b6106ea6106e5366004615010565b6112f8565b6040516105f29190615940565b61070a610705366004614e12565b61139d565b6040516105f29190615d50565b6106ea610725366004615010565b611442565b610696610738366004615010565b611497565b61062e61074b366004615109565b6114f2565b61069661075e366004614edd565b6115a1565b610696610771366004614e12565b61165a565b61070a6116b5565b61070a61078c366004614a29565b61175d565b61062e61079f366004614d88565b611879565b61062e6107b2366004614d88565b611926565b6106436107c5366004615010565b6119d3565b61062e6107d8366004614d88565b611a2e565b6105e56107eb366004614a29565b611adb565b6108036107fe366004614e60565b611b8b565b6040516105f29190615a1c565b6106ea61081e3660046149ed565b611c37565b61062e6108313660046150a9565b611c8c565b6105e5611d3b565b6105e5611dde565b610696611e31565b61070a61085c366004614e12565b611eda565b61087461086f366004615010565b611f2f565b6040516105f291906159c6565b6105e561088f366004615010565b611fda565b6106966108a2366004614e12565b61202f565b61062e6108b5366004615010565b61208a565b61062e6108c8366004614d2e565b612137565b6108e06108db366004614e12565b6121e4565b6040516105f294939291906158db565b61062e612287565b6106ea61231a565b6106966123bd565b61062e610916366004614e30565b612416565b61062e610929366004614be6565b612488565b61069661093c366004615010565b61255f565b61060e6125ba565b6105e56125d6565b61070a61095f36600461504c565b612616565b61070a6109723660046149ed565b6126c7565b61062e610985366004614b87565b61271c565b610696610998366004615010565b6127a7565b61062e6109ab3660046150d9565b612802565b61062e6109be366004614a93565b6129b9565b61062e6109d1366004615109565b612a68565b6109e96109e4366004615010565b612b17565b6040516105f294939291906159e3565b610696610a07366004615010565b612bdb565b6106c9610a1a366004614e12565b612c36565b61062e610a2d366004614d88565b612cf2565b61070a612d9f565b610696612df2565b610643610a50366004614e60565b612e4b565b610a68610a63366004615010565b612ef7565b6040516105f29190615d34565b610696610a83366004615109565b612fa1565b610643610a96366004615010565b613074565b61062e610aa9366004614e90565b6130cf565b610a68610abc366004615010565b613166565b61070a6131c1565b610874610ad7366004615010565b613214565b61070a610aea366004614e60565b61326f565b610b02610afd366004614e12565b613316565b6040516105f2919061594e565b610696610b1d366004615010565b6133bb565b610696613416565b61062e610b38366004614d2e565b61346f565b61062e610b4b3660046150a9565b61351c565b61062e610b5e36600461508a565b6135cb565b610b6b61367a565b6040516105f29190615a2a565b610b8b610b86366004615010565b613723565b6040516105f291906159d4565b61062e610ba6366004614a63565b6137cf565b610696610bb9366004615010565b61387e565b61062e610bcc366004614ac3565b6138d9565b61062e610bdf36600461506b565b6139e4565b6105e5610bf23660046149ed565b613a93565b6106ea613ae8565b61062e610c0d366004614a63565b613b3b565b61062e610c203660046149ed565b613bea565b6106c9610c33366004614e12565b613c1a565b610696610c46366004615010565b613c7d565b6040517f288afc6200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063288afc6290610ca09084908690600401615a46565b60206040518083038186803b158015610cb857600080fd5b505af4158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d10565b90505b919050565b6040517fa2169a3a00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a2169a3a90610d4d9084908690600401615c78565b60206040518083038186803b158015610d6557600080fd5b505af4158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614a0b565b610da56125d6565b610dca5760405162461bcd60e51b8152600401610dc19061597d565b60405180910390fd5b601354600160a01b900460ff16610df35760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f70b6151c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906370b6151c90610e53906000908590600401615c78565b60006040518083038186803b158015610e6b57600080fd5b505af4158015610e7f573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b179055505050565b610ea1613f47565b6040517f7462482a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90637462482a90610ef4906000908690600401615c78565b604080518083038186803b158015610f0b57600080fd5b505af4158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614ff2565b610f4b6125d6565b610f675760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16610f905760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f1c90d82400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90631c90d82490610ff29060009086908690600401615ce4565b60006040518083038186803b15801561100a57600080fd5b505af415801561101e573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b17905550505050565b6040517fbbf7039800000000000000000000000000000000000000000000000000000000815260609073__GettersImpl___________________________9063bbf703989061108f906000908690600401615bcb565b60006040518083038186803b1580156110a757600080fd5b505af41580156110bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cf09190810190614c1b565b6110eb613f5e565b6040517fc61f66b400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c61f66b49061113e906000908690600401615bcb565b60206040518083038186803b15801561115657600080fd5b505af415801561116a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614da6565b6111966125d6565b6111b25760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166111db5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517faa92e34800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063aa92e34890610ff29060009086908690600401615cc9565b611245613f5e565b61124d613f5e565b6040517fddc7c6f000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ddc7c6f0906112a0906000908790600401615bcb565b604080518083038186803b1580156112b757600080fd5b505af41580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112ef9190810190614dc4565b91509150915091565b6040517fa18862fc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063a18862fc9061134d9084908690600401615c78565b60206040518083038186803b15801561136557600080fd5b505af4158015611379573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d4c565b6040517f6a0e643300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636a0e6433906113f29084908690600401615bcb565b60206040518083038186803b15801561140a57600080fd5b505af415801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf0919081019061502e565b6040517f35b5d1f600000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906335b5d1f69061134d9084908690600401615c78565b61149f613f5e565b6040517f063bf37300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063063bf3739061113e906000908690600401615c78565b6114fa6125d6565b6115165760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff1661153f5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f3ea4188300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633ea4188390610ff29060009086908690600401615d0c565b6115a9613f5e565b6040517ffef3d3cb00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063fef3d3cb9061160090600090889088908890600401615c43565b60206040518083038186803b15801561161857600080fd5b505af415801561162c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116509190810190614da6565b90505b9392505050565b611662613f5e565b6040517f62f8e1b300000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906362f8e1b39061113e906000908690600401615bcb565b6040517fe99388d300000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e99388d390611708908490600401615a38565b60206040518083038186803b15801561172057600080fd5b505af4158015611734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611758919081019061502e565b905090565b60006117676125d6565b6117835760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166117ac5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fdd32998a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063dd32998a9061180e9060009087908790600401615a61565b60206040518083038186803b15801561182657600080fd5b505af415801561183a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061185e919081019061502e565b90506013805460ff60a01b1916600160a01b17905592915050565b6118816125d6565b61189d5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166118c65760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517ff9cacc4c00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063f9cacc4c90610e53906000908590600401615bbd565b61192e6125d6565b61194a5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166119735760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f0f44e6bc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630f44e6bc90610e53906000908590600401615bbd565b6119db613f47565b6040517fc641ccd100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063c641ccd190610ef4906000908690600401615c78565b611a366125d6565b611a525760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16611a7b5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f311401d000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063311401d090610e53906000908590600401615bbd565b6040517f75bcaa4800000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906375bcaa4890611b3290849087908790600401615a61565b60206040518083038186803b158015611b4a57600080fd5b505af4158015611b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614d10565b90505b92915050565b611b93613f47565b6040517f787f772700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063787f772790611be89060009087908790600401615be6565b604080518083038186803b158015611bff57600080fd5b505af4158015611c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614f98565b6040517f2e19a6ea00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90632e19a6ea9061134d9084908690600401615a46565b611c946125d6565b611cb05760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16611cd95760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f7335079b00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90637335079b90610ff29060009086908690600401615ce4565b6040517f83fe9e1400000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906383fe9e1490611d8e908490600401615a38565b60206040518083038186803b158015611da657600080fd5b505af4158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614d10565b6040517f6861138d00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90636861138d90611d8e908490600401615a38565b611e39613f5e565b6040517f4f820bd600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634f820bd690611e8a90600090600401615a38565b60206040518083038186803b158015611ea257600080fd5b505af4158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614da6565b6040517fe647a68700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063e647a687906113f29084908690600401615bcb565b611f37613f71565b6040517fd23406b600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d23406b690611f8a906000908690600401615c78565b60606040518083038186803b158015611fa257600080fd5b505af4158015611fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614df4565b6040517fd09657e100000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________9063d09657e190610ca09084908690600401615c78565b612037613f5e565b6040517f58105e3500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906358105e359061113e906000908690600401615bcb565b6120926125d6565b6120ae5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166120d75760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f0e7cd6f800000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90630e7cd6f890610e53906000908590600401615c78565b61213f6125d6565b61215b5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166121845760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fa289756d00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063a289756d90610e53906000908590600401615ba2565b60608060608073__GettersImpl___________________________63edf9c1ec6000876040518363ffffffff1660e01b8152600401612224929190615bcb565b60006040518083038186803b15801561223c57600080fd5b505af4158015612250573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122789190810190614c50565b93509350935093509193509193565b61228f6125d6565b6122ab5760405162461bcd60e51b8152600401610dc19061597d565b60135460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3601380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6040517f5ebcae4c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90635ebcae4c9061236d908490600401615a38565b60206040518083038186803b15801561238557600080fd5b505af4158015612399573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614d4c565b6123c5613f5e565b6040517f136a1dc700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063136a1dc790611e8a90600090600401615a38565b815173ffffffffffffffffffffffffffffffffffffffff166000908152600360209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561247f57fe5b02179055505050565b805160005b8181101561255a5760008382815181106124a357fe5b602002602001015160000151905060008483815181106124bf57fe5b6020026020010151602001519050806124d95760026124dc565b60015b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529081902060ff9390931690925590517f4d7f317d2088d039c2a95a09fcbf9cc9191fad5905f883c937cc3d317c4a63279061254890859085906158af565b60405180910390a2505060010161248d565b505050565b612567613f5e565b6040517f8828244f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638828244f9061113e906000908690600401615c78565b60135473ffffffffffffffffffffffffffffffffffffffff1690565b60135460009073ffffffffffffffffffffffffffffffffffffffff166125fa613cd8565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60006126206125d6565b61263c5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166126655760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fb25328e000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063b25328e09061180e9060009087908790600401615c93565b6040517f92108b1e00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906392108b1e906113f29084908690600401615a46565b601354600160a01b900460ff166127455760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fbd76ecfd00000000000000000000000000000000000000000000000000000000815273__OperationImpl_________________________9063bd76ecfd90610ff29060009086908690600401615b6e565b6127af613f5e565b6040517f2bdf1cf200000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90632bdf1cf29061113e906000908690600401615c78565b61280a613f71565b5060008281526001602090815260409182902082516060810184526002909101546dffffffffffffffffffffffffffff80821683526e01000000000000000000000000000082048116938301939093527c0100000000000000000000000000000000000000000000000000000000900463ffffffff16928101929092528251166128a35780516dffffffffffffffffffffffffffff1682525b60208201516dffffffffffffffffffffffffffff166128d7576020808201516dffffffffffffffffffffffffffff16908301525b5060009182526001602090815260409283902082516002909101805492840151939094015163ffffffff167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff9485166e010000000000000000000000000000027fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff959093167fffffffffffffffffffffffffffffffffffff000000000000000000000000000090941693909317939093161716179055565b6129c16125d6565b6129dd5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612a065760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fdf7ff36300000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063df7ff36390610ff29060009086908690600401615ab1565b612a706125d6565b612a8c5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612ab55760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f6f48141000000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636f48141090610ff29060009086908690600401615d0c565b612b1f613f91565b612b27613f71565b612b2f613f5e565b612b37613f5e565b6040517fba25f9d600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ba25f9d690612b8a906000908990600401615c78565b6102a06040518083038186803b158015612ba357600080fd5b505af4158015612bb7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122789190810190614f3f565b612be3613f5e565b6040517fa16184f600000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a16184f69061113e906000908690600401615c78565b612c3e613f5e565b612c46613f5e565b6040517fd933f84400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d933f84490612c99906000908790600401615bcb565b604080518083038186803b158015612cb057600080fd5b505af4158015612cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ce89190810190614dc4565b9094909350915050565b612cfa6125d6565b612d165760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16612d3f5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f54dd351600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906354dd351690610e53906000908590600401615bbd565b6040517f4a451be200000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634a451be290611708908490600401615a38565b612dfa613f5e565b6040517f8339c50f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638339c50f90611e8a90600090600401615a38565b612e53613f47565b6040517f634c50ce00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063634c50ce90612ea89060009087908790600401615be6565b604080518083038186803b158015612ebf57600080fd5b505af4158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b829190810190614ff2565b612eff613f47565b6040517f055369d700000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063055369d790612f52906000908690600401615c78565b604080518083038186803b158015612f6957600080fd5b505af4158015612f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614fd4565b612fa9613f5e565b612fb1613f47565b5060408051808201825260008082526020820181905291517ffef3d3cb000000000000000000000000000000000000000000000000000000008152909173__GettersImpl___________________________9163fef3d3cb9161301c91859089908990600401615c43565b60206040518083038186803b15801561303457600080fd5b505af4158015613048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061306c9190810190614da6565b949350505050565b61307c613f47565b6040517fd2c9ee0000000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063d2c9ee0090610ef4906000908690600401615c78565b6130da600083613cdc565b6040517f81379a5e00000000000000000000000000000000000000000000000000000000815273__TestOperationImpl_____________________906381379a5e9061313190600090879087908790600401615c0e565b60006040518083038186803b15801561314957600080fd5b505af415801561315d573d6000803e3d6000fd5b50505050505050565b61316e613f47565b6040517f485df94f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063485df94f90612f52906000908690600401615c78565b6040517f10b9711c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310b9711c90611708908490600401615a38565b61321c613f71565b6040517f4aaee58500000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90634aaee58590611f8a906000908690600401615c78565b6040517f99c4c00900000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906399c4c009906132c690849087908790600401615be6565b60206040518083038186803b1580156132de57600080fd5b505af41580156132f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b82919081019061502e565b6040517f4af71ebc00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90634af71ebc9061336b9084908690600401615bcb565b60206040518083038186803b15801561338357600080fd5b505af4158015613397573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614d6a565b6133c3613f5e565b6040517f041f229400000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063041f22949061113e906000908690600401615c78565b61341e613f5e565b6040517f22ef216100000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________906322ef216190611e8a90600090600401615a38565b6134776125d6565b6134935760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166134bc5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f5cb90a6a00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90635cb90a6a90610e53906000908590600401615ba2565b6135246125d6565b6135405760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166135695760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f6928084500000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90636928084590610ff29060009086908690600401615ce4565b6135d36125d6565b6135ef5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166136185760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f8c5dabd100000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90638c5dabd190610ff29060009086908690600401615cc9565b613682614012565b6040517f8b19f9e800000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90638b19f9e8906136d390600090600401615a38565b60e06040518083038186803b1580156136eb57600080fd5b505af41580156136ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117589190810190614fb6565b61372b613f91565b6040517f0b48557f00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________90630b48557f9061377e906000908690600401615c78565b6102006040518083038186803b15801561379757600080fd5b505af41580156137ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cf09190810190614f20565b6137d76125d6565b6137f35760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff1661381c5760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f3c0c9ddc00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________90633c0c9ddc90610ff29060009086908690600401615a89565b613886613f5e565b6040517fdb32b3ca00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063db32b3ca9061113e906000908690600401615c78565b6138e16125d6565b6138fd5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff166139265760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fbc54053f00000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063bc54053f90613996906000908d908d908d908d908d908d908d908d908d90600401615ad9565b60006040518083038186803b1580156139ae57600080fd5b505af41580156139c2573d6000803e3d6000fd5b50506013805460ff60a01b1916600160a01b1790555050505050505050505050565b6139ec6125d6565b613a085760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16613a315760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517f10c87b0600000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________906310c87b0690610ff29060009086908690600401615cae565b6040517f3808f21700000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________90633808f21790610ca09084908690600401615a46565b6040517f10f1b88c00000000000000000000000000000000000000000000000000000000815260009073__GettersImpl___________________________906310f1b88c9061236d908490600401615a38565b613b436125d6565b613b5f5760405162461bcd60e51b8152600401610dc19061597d565b601354600160a01b900460ff16613b885760405162461bcd60e51b8152600401610dc19061598d565b6013805460ff60a01b191690556040517fe80f802400000000000000000000000000000000000000000000000000000000815273__AdminImpl_____________________________9063e80f802490610ff29060009086908690600401615a89565b613bf26125d6565b613c0e5760405162461bcd60e51b8152600401610dc19061597d565b613c1781613d60565b50565b613c22613f5e565b613c2a613f5e565b6040517febec2e6c00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063ebec2e6c906112a0906000908790600401615bcb565b613c85613f5e565b6040517fa335f47a00000000000000000000000000000000000000000000000000000000815273__GettersImpl___________________________9063a335f47a9061113e906000908690600401615c78565b3390565b8154613d5c9082108015613d155750600082815260018401602052604090205473ffffffffffffffffffffffffffffffffffffffff1615155b7f47657474657273496d706c0000000000000000000000000000000000000000007f496e76616c6964206d61726b6574000000000000000000000000000000000000613e21565b5050565b73ffffffffffffffffffffffffffffffffffffffff8116613d935760405162461bcd60e51b8152600401610dc19061596d565b60135460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3601380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8261255a57613e2f82613e91565b7f3a20000000000000000000000000000000000000000000000000000000000000613e5983613e91565b604051602001613e6b93929190615879565b60408051601f198184030181529082905262461bcd60e51b8252610dc19160040161595c565b60608082604051602001613ea59190615864565b60408051601f19818403018152919052905060205b8015613f305781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110613ef357fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615613f2b5760010181529050610cf3565b613eba565b505060408051600081526020810190915292915050565b604080518082019091526000808252602082015290565b6040518060200160405280600081525090565b604080516060810182526000808252602082018190529181019190915290565b604080516101608101825260008082526020820152908101613fb1613f47565b8152602001613fbe613f71565b81526000602082018190526040820152606001613fd9613f5e565b8152602001613fe6613f5e565b8152602001613ff3613f47565b8152602001614000613f47565b815260200161400d613f5e565b905290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b8035611b8581615f2b565b8051611b8581615f2b565b600082601f83011261407557600080fd5b815161408861408382615d85565b615d5e565b915081818352602084019350602081019050838560208402820111156140ad57600080fd5b60005b838110156140d957816140c38882614059565b84525060209283019291909101906001016140b0565b5050505092915050565b600082601f8301126140f457600080fd5b813561410261408382615d85565b81815260209384019390925082018360005b838110156140d9578135860161412a888261441f565b8452506020928301929190910190600101614114565b600082601f83011261415157600080fd5b813561415f61408382615d85565b9150818183526020840193506020810190508385604084028201111561418457600080fd5b60005b838110156140d9578161419a8882614671565b84525060209092019160409190910190600101614187565b600082601f8301126141c357600080fd5b81356141d161408382615d85565b915081818352602084019350602081019050838560408402820111156141f657600080fd5b60005b838110156140d9578161420c88826147be565b845250602090920191604091909101906001016141f9565b600082601f83011261423557600080fd5b815161424361408382615d85565b9150818183526020840193506020810190508385604084028201111561426857600080fd5b60005b838110156140d9578161427e88826147f9565b8452506020909201916040919091019060010161426b565b600082601f8301126142a757600080fd5b81516142b561408382615d85565b915081818352602084019350602081019050838560408402820111156142da57600080fd5b60005b838110156140d957816142f08882614944565b845250602090920191604091909101906001016142dd565b600082601f83011261431957600080fd5b815161432761408382615d85565b9150818183526020840193506020810190508385602084028201111561434c57600080fd5b60005b838110156140d9578161436288826149b6565b845250602092830192919091019060010161434f565b8035611b8581615f3f565b8051611b8581615f3f565b600082601f83011261439f57600080fd5b81356143ad61408382615da6565b915080825260208301602083018583830111156143c957600080fd5b6143d4838284615ecb565b50505092915050565b8035611b8581615f48565b8051611b8581615f48565b8035611b8581615f51565b8035611b8581615f5e565b8035611b8581615f6b565b8051611b8581615f6b565b6000610160828403121561443257600080fd5b61443d610100615d5e565b9050600061444b84846143f3565b825250602061445c848483016149ab565b6020830152506040614470848285016144fb565b60408301525060c0614484848285016149ab565b60608301525060e0614498848285016149ab565b6080830152506101006144ad8482850161404e565b60a0830152506101206144c2848285016149ab565b60c08301525061014082013567ffffffffffffffff8111156144e357600080fd5b6144ef8482850161438e565b60e08301525092915050565b60006080828403121561450d57600080fd5b6145176080615d5e565b905060006145258484614378565b8252506020614536848483016143fe565b602083015250604061454a848285016143fe565b604083015250606061455e848285016149ab565b60608301525092915050565b60006020828403121561457c57600080fd5b6145866020615d5e565b9050600061459484846149b6565b82525092915050565b6000602082840312156145af57600080fd5b6145b96020615d5e565b9050600061459484846149ab565b6000606082840312156145d957600080fd5b6145e36060615d5e565b905060006145f1848461498a565b82525060206146028484830161498a565b6020830152506040614616848285016149cc565b60408301525092915050565b60006060828403121561463457600080fd5b61463e6060615d5e565b9050600061464c848461497f565b825250602061465d8484830161497f565b6020830152506040614616848285016149c1565b60006040828403121561468357600080fd5b61468d6040615d5e565b9050600061469b848461404e565b82525060206146ac848483016149ab565b60208301525092915050565b600061020082840312156146cb57600080fd5b6146d6610160615d5e565b905060006146e48484614059565b82525060206146f584848301614383565b60208301525060406147098482850161491a565b604083015250608061471d848285016145c7565b60608301525060e0614731848285016143e8565b608083015250610100614746848285016143e8565b60a08301525061012061475b8482850161456a565b60c0830152506101406147708482850161456a565b60e08301525061016061478584828501614944565b610100830152506101a061479b84828501614944565b610120830152506101e06147b18482850161456a565b6101408301525092915050565b6000604082840312156147d057600080fd5b6147da6040615d5e565b905060006147e8848461404e565b82525060206146ac84848301614378565b60006040828403121561480b57600080fd5b6148156040615d5e565b905060006148238484614383565b82525060206146ac848483016149a0565b60006040828403121561484657600080fd5b6148506040615d5e565b9050600061485e8484614378565b82525060206146ac84848301614995565b600060e0828403121561488157600080fd5b61488b60e0615d5e565b9050600061489984846149d7565b82525060206148aa848483016149d7565b60208301525060406148be848285016149d7565b60408301525060606148d2848285016149d7565b60608301525060806148e6848285016149d7565b60808301525060a06148fa848285016149e2565b60a08301525060c061490e848285016149a0565b60c08301525092915050565b60006040828403121561492c57600080fd5b6149366040615d5e565b9050600061482384846149a0565b60006040828403121561495657600080fd5b6149606040615d5e565b9050600061496e8484614383565b82525060206146ac848483016149b6565b8035611b8581615f78565b8051611b8581615f78565b8035611b8581615f81565b8051611b8581615f81565b8035611b8581615f8a565b8051611b8581615f8a565b8035611b8581615f93565b8051611b8581615f93565b8051611b8581615f9c565b8051611b8581615fa5565b6000602082840312156149ff57600080fd5b600061306c848461404e565b600060208284031215614a1d57600080fd5b600061306c8484614059565b60008060408385031215614a3c57600080fd5b6000614a48858561404e565b9250506020614a598582860161404e565b9150509250929050565b60008060408385031215614a7657600080fd5b6000614a82858561404e565b9250506020614a5985828601614378565b60008060408385031215614aa657600080fd5b6000614ab2858561404e565b9250506020614a59858286016143dd565b60008060008060008060008060006101208a8c031215614ae257600080fd5b6000614aee8c8c61404e565b9950506020614aff8c828d016143dd565b9850506040614b108c828d016143dd565b9750506060614b218c828d0161459d565b9650506080614b328c828d0161459d565b95505060a0614b438c828d016149ab565b94505060c0614b548c828d016149ab565b93505060e0614b658c828d0161459d565b925050610100614b778c828d01614378565b9150509295985092959850929598565b60008060408385031215614b9a57600080fd5b823567ffffffffffffffff811115614bb157600080fd5b614bbd85828601614140565b925050602083013567ffffffffffffffff811115614bda57600080fd5b614a59858286016140e3565b600060208284031215614bf857600080fd5b813567ffffffffffffffff811115614c0f57600080fd5b61306c848285016141b2565b600060208284031215614c2d57600080fd5b815167ffffffffffffffff811115614c4457600080fd5b61306c84828501614308565b60008060008060808587031215614c6657600080fd5b845167ffffffffffffffff811115614c7d57600080fd5b614c8987828801614308565b945050602085015167ffffffffffffffff811115614ca657600080fd5b614cb287828801614064565b935050604085015167ffffffffffffffff811115614ccf57600080fd5b614cdb87828801614224565b925050606085015167ffffffffffffffff811115614cf857600080fd5b614d0487828801614296565b91505092959194509250565b600060208284031215614d2257600080fd5b600061306c8484614383565b600060208284031215614d4057600080fd5b600061306c84846143dd565b600060208284031215614d5e57600080fd5b600061306c84846143e8565b600060208284031215614d7c57600080fd5b600061306c8484614414565b600060208284031215614d9a57600080fd5b600061306c848461459d565b600060208284031215614db857600080fd5b600061306c848461456a565b60008060408385031215614dd757600080fd5b6000614de3858561456a565b9250506020614a598582860161456a565b600060608284031215614e0657600080fd5b600061306c84846145c7565b600060408284031215614e2457600080fd5b600061306c8484614671565b60008060608385031215614e4357600080fd5b6000614e4f8585614671565b9250506040614a5985828601614409565b60008060608385031215614e7357600080fd5b6000614e7f8585614671565b9250506040614a59858286016149ab565b600080600060a08486031215614ea557600080fd5b6000614eb18686614671565b9350506040614ec2868287016149ab565b9250506060614ed386828701614834565b9150509250925092565b600080600060808486031215614ef257600080fd5b6000614efe8686614671565b9350506040614f0f868287016149ab565b9250506060614ed3868287016149ab565b60006102008284031215614f3357600080fd5b600061306c84846146b8565b6000806000806102a08587031215614f5657600080fd5b6000614f6287876146b8565b945050610200614f74878288016145c7565b935050610260614f868782880161456a565b925050610280614d048782880161456a565b600060408284031215614faa57600080fd5b600061306c84846147f9565b600060e08284031215614fc857600080fd5b600061306c848461486f565b600060408284031215614fe657600080fd5b600061306c848461491a565b60006040828403121561500457600080fd5b600061306c8484614944565b60006020828403121561502257600080fd5b600061306c84846149ab565b60006020828403121561504057600080fd5b600061306c84846149b6565b6000806040838503121561505f57600080fd5b6000614a4885856149ab565b6000806040838503121561507e57600080fd5b6000614a8285856149ab565b6000806040838503121561509d57600080fd5b6000614ab285856149ab565b600080604083850312156150bc57600080fd5b60006150c885856149ab565b9250506020614a598582860161459d565b600080608083850312156150ec57600080fd5b60006150f885856149ab565b9250506020614a5985828601614622565b6000806040838503121561511c57600080fd5b600061512885856149ab565b9250506020614a59858286016149ab565b60006151458383615191565b505060200190565b6000611b828383615521565b60006151658383615664565b505060400190565b60006151658383615761565b6000615165838361581d565b60006151458383615840565b61519a81615de1565b82525050565b60006151ab82615dd4565b6151b58185615dd8565b93506151c083615dce565b8060005b838110156151ee5781516151d88882615139565b97506151e383615dce565b9250506001016151c4565b509495945050505050565b600061520482615dd4565b61520e8185615dd8565b93508360208202850161522085615dce565b8060005b8581101561525a578484038952815161523d858261514d565b945061524883615dce565b60209a909a0199925050600101615224565b5091979650505050505050565b600061527282615dd4565b61527c8185615dd8565b935061528783615dce565b8060005b838110156151ee57815161529f8882615159565b97506152aa83615dce565b92505060010161528b565b60006152c082615dd4565b6152ca8185615dd8565b93506152d583615dce565b8060005b838110156151ee5781516152ed888261516d565b97506152f883615dce565b9250506001016152d9565b600061530e82615dd4565b6153188185615dd8565b935061532383615dce565b8060005b838110156151ee57815161533b8882615179565b975061534683615dce565b925050600101615327565b600061535c82615dd4565b6153668185615dd8565b935061537183615dce565b8060005b838110156151ee5781516153898882615185565b975061539483615dce565b925050600101615375565b61519a81615dec565b61519a6153b482615df1565b615e16565b61519a6153b482615e16565b60006153d082615dd4565b6153da8185610cf3565b93506153ea818560208601615ed7565b9290920192915050565b60006153ff82615dd4565b6154098185615dd8565b9350615419818560208601615ed7565b61542281615f03565b9093019392505050565b61519a81615e19565b61519a81615eaa565b61519a81615eb5565b61519a81615ec0565b600061545d602683615dd8565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181527f6464726573730000000000000000000000000000000000000000000000000000602082015260400192915050565b60006154bc602083615dd8565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006154f5601f83615dd8565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815260200192915050565b80516000906101608401906155368582615435565b5060208301516155496020860182615840565b50604083015161555c60408601826155cc565b50606083015161556f60c0860182615840565b50608083015161558260e0860182615840565b5060a0830151615596610100860182615191565b5060c08301516155aa610120860182615840565b5060e08301518482036101408601526155c382826153f4565b95945050505050565b805160808301906155dd848261539f565b5060208201516155f0602085018261543e565b506040820151615603604085018261543e565b5060608201516156166060850182615840565b50505050565b805160208301906156168482615840565b8051606083019061563e848261582e565b506020820151615651602085018261582e565b5060408201516156166040850182615849565b805160408301906156758482615191565b5060208201516156166020850182615840565b805161020083019061569a8482615191565b5060208201516156ad602085018261539f565b5060408201516156c0604085018261580c565b5060608201516156d3608085018261562d565b5060808201516156e660e085018261542c565b5060a08201516156fa61010085018261542c565b5060c082015161570e61012085018261561c565b5060e082015161572261014085018261561c565b5061010082015161573761016085018261581d565b5061012082015161574c6101a085018261581d565b506101408201516156166101e085018261561c565b80516040830190615772848261539f565b5060208201516156166020850182615837565b805160e08301906157968482615852565b5060208201516157a96020850182615852565b5060408201516157bc6040850182615852565b5060608201516157cf6060850182615852565b5060808201516157e26080850182615852565b5060a08201516157f560a085018261585b565b5060c082015161561660c0850182615837565b9052565b805160408301906157728482615837565b80516040830190615675848261539f565b61519a81615e42565b61519a81615e55565b61519a81615e16565b61519a81615e83565b61519a81615e8c565b61519a81615e99565b600061587082846153b9565b50602001919050565b600061588582866153c5565b915061589182856153a8565b6002820191506155c382846153c5565b60208101611b858284615191565b604081016158bd8285615191565b611653602083018461539f565b60208082528101611b828184615351565b608080825281016158ec8187615351565b9050818103602083015261590081866151a0565b9050818103604083015261591481856152b5565b905081810360608301526159288184615303565b9695505050505050565b60208101611b85828461539f565b60208101611b85828461542c565b60208101611b858284615447565b60208082528101611b8281846153f4565b60208082528101610cf081615450565b60208082528101610cf0816154af565b60208082528101610cf0816154e8565b60208101611b85828461561c565b604081016159b9828561561c565b611653602083018461561c565b60608101611b85828461562d565b6102008101611b858284615688565b6102a081016159f28287615688565b615a0061020083018661562d565b615a0e61026083018561561c565b6155c361028083018461561c565b60408101611b858284615761565b60e08101611b858284615785565b60208101611b858284615808565b60408101615a548285615808565b6116536020830184615191565b60608101615a6f8286615808565b615a7c6020830185615191565b61306c6040830184615191565b60608101615a978286615808565b615aa46020830185615191565b61306c604083018461539f565b60608101615abf8286615808565b615acc6020830185615191565b61306c604083018461542c565b6101408101615ae8828d615808565b615af5602083018c615191565b615b02604083018b61542c565b615b0f606083018a61542c565b615b1c608083018961561c565b615b2960a083018861561c565b615b3660c0830187615840565b615b4360e0830186615840565b615b5161010083018561561c565b615b5f61012083018461539f565b9b9a5050505050505050505050565b60608101615b7c8286615808565b8181036020830152615b8e8185615267565b905081810360408301526155c381846151f9565b60408101615bb08285615808565b611653602083018461542c565b604081016159b98285615808565b60608101615bd98285615808565b6116536020830184615664565b60808101615bf48286615808565b615c016020830185615664565b61306c6060830184615840565b60c08101615c1c8287615808565b615c296020830186615664565b615c366060830185615840565b6155c36080830184615761565b60a08101615c518287615808565b615c5e6020830186615664565b615c6b6060830185615840565b6155c36080830184615840565b60408101615c868285615808565b6116536020830184615840565b60608101615ca18286615808565b615a7c6020830185615840565b60608101615cbc8286615808565b615aa46020830185615840565b60608101615cd78286615808565b615acc6020830185615840565b60608101615cf28286615808565b615cff6020830185615840565b61306c604083018461561c565b60608101615d1a8286615808565b615d276020830185615840565b61306c6040830184615840565b60408101611b85828461580c565b60408101611b85828461581d565b60208101611b858284615840565b60405181810167ffffffffffffffff81118282101715615d7d57600080fd5b604052919050565b600067ffffffffffffffff821115615d9c57600080fd5b5060209081020190565b600067ffffffffffffffff821115615dbd57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610cf082615e6a565b151590565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6000610cf082615de1565b80610cf381615f0d565b80610cf381615f17565b80610cf381615f21565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b6000610cf082615e24565b6000610cf082615e2e565b6000610cf082615e38565b82818337506000910152565b60005b83811015615ef2578181015183820152602001615eda565b838111156156165750506000910152565b601f01601f191690565b60098110613c1757fe5b60028110613c1757fe5b60038110613c1757fe5b615f3481615de1565b8114613c1757600080fd5b615f3481615dec565b615f3481615e19565b60098110613c1757600080fd5b60028110613c1757600080fd5b60038110613c1757600080fd5b615f3481615e42565b615f3481615e55565b615f3481615e16565b615f3481615e83565b615f3481615e8c565b615f3481615e9956fea365627a7a72315820a513982413f63fdf1d5803d5ec85052c4ed6f08cba8f47093ad265e65b2841aa6c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "1266:1732:118:-;;;1365:671;8:9:-1;5:2;;;30:1;27;20:12;5:2;1365:671:118;;;;;;;;;;;;;;;;;;;;;1788:10;1812:11;1837:17;1868:12;1894:16;1924:37;1975:14;2003:16;698:17:151;718:12;-1:-1:-1;;;;;718:10:151;:12;:::i;:::-;740:6;:18;;-1:-1:-1;;;;;;740:18:151;-1:-1:-1;;;;;740:18:151;;;;;;;;773:43;;740:18;;-1:-1:-1;740:18:151;-1:-1:-1;;;;;;;;;;;;;773:43:151;-1:-1:-1;;773:43:151;-1:-1:-1;1421:11:156;:18;;-1:-1:-1;;;;;;;1421:18:156;;;;;;1818:31:63;;:18;:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1818:31:63;;;-1:-1:-1;;;;;1818:31:63;;;;-1:-1:-1;;;;;;;;1818:31:63;;;;;;;;-1:-1:-1;;;;;;;;1818:31:63;-1:-1:-1;;;1818:31:63;;;;;;;;;;;-1:-1:-1;;;;;1818:31:63;-1:-1:-1;;;1818:31:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;1818:31:63;-1:-1:-1;;;;;1818:31:63;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1818:31:63;-1:-1:-1;;;;;1818:31:63;;;;;;;;;1859:51;-1:-1:-1;;;1859:51:63;;:9;;:29;;:51;;-1:-1:-1;;1898:11:63;;1859:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1859:51:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1920:63:63;;-1:-1:-1;;;1920:63:63;;:9;;-1:-1:-1;1920:35:63;;-1:-1:-1;1920:63:63;;1956:7;;1965:17;;1920:63;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1920:63:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1993:53:63;;-1:-1:-1;;;1993:53:63;;:9;;-1:-1:-1;1993:30:63;;-1:-1:-1;1993:53:63;;2024:7;;2033:12;;1993:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1993:53:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2056:61:63;;-1:-1:-1;;;2056:61:63;;:9;;-1:-1:-1;2056:34:63;;-1:-1:-1;2056:61:63;;2091:7;;2100:16;;2056:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2056:61:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2127:103:63;;-1:-1:-1;;;2127:103:63;;:9;;-1:-1:-1;2127:55:63;;-1:-1:-1;2127:103:63;;2183:7;;2192:37;;2127:103;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2127:103:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2240:57:63;;-1:-1:-1;;;2240:57:63;;:9;;-1:-1:-1;2240:32:63;;-1:-1:-1;2240:57:63;;2273:7;;2282:14;;2240:57;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2240:57:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2307:61:63;;-1:-1:-1;;;2307:61:63;;:9;;-1:-1:-1;2307:34:63;;-1:-1:-1;2307:61:63;;2342:7;;2351:16;;2307:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2307:61:63;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2307:61:63;;;;2378:29;2397:9;2378:18;;;:29;;:::i;:::-;1418:996;;;;;;;;1365:671:118;;;;;;;;1266:1732;;788:96:148;867:10;788:96;:::o;2178:225:151:-;-1:-1:-1;;;;;2251:22:151;;2243:73;;;;-1:-1:-1;;;2243:73:151;;;;;;;;;;;;;;;;;2352:6;;2331:38;;-1:-1:-1;;;;;2331:38:151;;;;2352:6;;-1:-1:-1;;;;;;;;;;;2331:38:151;2352:6;;2331:38;2379:6;:17;;-1:-1:-1;;;;;;2379:17:151;-1:-1:-1;;;;;2379:17:151;;;;;;;;;;2178:225::o;5:184:-1:-;108:13;;126:58;108:13;126:58;;;93:96;;;;;222:344;;345:4;333:9;328:3;324:19;320:30;317:2;;;363:1;360;353:12;317:2;381:20;396:4;381:20;;;372:29;-1:-1;452:1;484:60;540:3;520:9;484:60;;;459:86;;-1:-1;470:5;311:255;-1:-1;;311:255;605:1374;;734:4;722:9;717:3;713:19;709:30;706:2;;;752:1;749;742:12;706:2;770:20;785:4;770:20;;;761:29;-1:-1;850:1;882:59;937:3;917:9;882:59;;;857:85;;-1:-1;1019:2;1052:59;1107:3;1083:22;;;1052:59;;;1045:4;1038:5;1034:16;1027:85;963:160;1184:2;1217:59;1272:3;1263:6;1252:9;1248:22;1217:59;;;1210:4;1203:5;1199:16;1192:85;1133:155;1350:2;1383:59;1438:3;1429:6;1418:9;1414:22;1383:59;;;1376:4;1369:5;1365:16;1358:85;1298:156;1527:3;1561:59;1616:3;1607:6;1596:9;1592:22;1561:59;;;1554:4;1547:5;1543:16;1536:85;1464:168;1693:3;1727:59;1782:3;1773:6;1762:9;1758:22;1727:59;;;1720:4;1713:5;1709:16;1702:85;1642:156;1863:3;1897:60;1953:3;1944:6;1933:9;1929:22;1897:60;;;1890:4;1883:5;1879:16;1872:86;1808:161;700:1279;;;;;2366:134;2444:13;;2462:33;2444:13;2462:33;;2507:134;2585:13;;2603:33;2585:13;2603:33;;2648:132;2725:13;;2743:32;2725:13;2743:32;;2787:132;2864:13;;2882:32;2864:13;2882:32;;2926:1517;;;;;;;;;3307:3;3295:9;3286:7;3282:23;3278:33;3275:2;;;3324:1;3321;3314:12;3275:2;3359:1;3376:93;3461:7;3441:9;3376:93;;;3366:103;;3338:137;3506:3;3525:87;3604:7;3595:6;3584:9;3580:22;3525:87;;;3515:97;;3485:133;3649:3;3668:87;3747:7;3738:6;3727:9;3723:22;3668:87;;;3658:97;;3628:133;3792:3;3811:87;3890:7;3881:6;3870:9;3866:22;3811:87;;;3801:97;;3771:133;3935:3;3954:88;4034:7;4025:6;4014:9;4010:22;3954:88;;;3944:98;;3914:134;4079:3;4098:64;4154:7;4145:6;4134:9;4130:22;4098:64;;;4088:74;;4058:110;4199:3;4218:89;4299:7;4290:6;4279:9;4275:22;4218:89;;;4208:99;;4178:135;4344:3;4363:64;4419:7;4410:6;4399:9;4395:22;4363:64;;;4353:74;;4323:110;3269:1174;;;;;;;;;;;;4450:184;4566:62;4622:5;4566:62;;;4561:3;4554:75;4548:86;;;4642:375;;4802:67;4866:2;4861:3;4802:67;;;4902:34;4882:55;;-1:-1;;;4966:2;4957:12;;4950:30;5008:2;4999:12;;4788:229;-1:-1;;4788:229;5074:335;5288:23;;5221:4;5212:14;;;5317:71;5216:3;5288:23;5317:71;;;5241:153;5194:215;;;;5416:123;5516:18;;5510:29;5943:121;6034:24;6052:5;6034:24;;6189:407;6380:2;6394:47;;;6365:18;;6455:131;6365:18;6455:131;;6603:440;6803:2;6788:18;;6817:100;6792:9;6890:6;6817:100;;;6928:105;7029:2;7018:9;7014:18;7005:6;6928:105;;;6774:269;;;;;;7050:482;7271:2;7256:18;;7285:100;7260:9;7358:6;7285:100;;;7396:126;7518:2;7507:9;7503:18;7494:6;7396:126;;8032:390;8207:2;8192:18;;8221:100;8196:9;8294:6;8221:100;;;8332:80;8408:2;8397:9;8393:18;8384:6;8332:80;;8429:256;8491:2;8485:9;8517:17;;;-1:-1;;;;;8577:34;;8613:22;;;8574:62;8571:2;;;8649:1;8646;8639:12;8571:2;8665;8658:22;8469:216;;-1:-1;8469:216;8693:163;8796:19;;;8845:4;8836:14;;8789:67;8864:91;;8926:24;8944:5;8926:24;;8962:116;;9049:24;9067:5;9049:24;;9085:113;-1:-1;;;;;9147:46;;9130:68;9205:121;-1:-1;;;;;9267:54;;9250:76;9333:72;9395:5;9378:27;9412:96;-1:-1;;;;;9473:30;;9456:52;9515:104;-1:-1;;;;;9576:38;;9559:60;9944:167;10038:49;10081:5;10038:49;;;10031:5;10028:60;10018:2;;10102:1;10099;10092:12;10018:2;10012:99;;10118:117;10187:24;10205:5;10187:24;;10242:117;10311:24;10329:5;10311:24;;10366:115;10434:23;10451:5;10434:23;;10488:115;10556:23;10573:5;10556:23;;10530:73;1266:1732:118;;;;;;",
  "deployedSourceMap": "1266:1732:118:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1266:1732:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14123:190:64;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6175:197;;;;;;;;;:::i;:::-;;;;;;;;6547:316:62;;;;;;;;;:::i;:::-;;9148:206:64;;;;;;;;;:::i;:::-;;;;;;;;5188:320:62;;;;;;;;;:::i;12019:232:64:-;;;;;;;;;:::i;:::-;;;;;;;;1794:225;;;;;;;;;:::i;:::-;;;;;;;;3686:292:62;;;;;;;;;:::i;13008:234:64:-;;;;;;;;;:::i;:::-;;;;;;;;;7625:200;;;;;;;;;:::i;:::-;;;;;;;;12771:231;;;;;;;;;:::i;:::-;;;;;;;;7831:209;;;;;;;;;:::i;8502:222::-;;;;;;;;;:::i;4906:276:62:-;;;;;;;;;:::i;2672:397:64:-;;;;;;;;;:::i;5347:251::-;;;;;;;;;:::i;5823:141::-;;;:::i;2044:317:62:-;;;;;;;;;:::i;6283:258::-;;;;;;;;;:::i;5793:238::-;;;;;;;;;:::i;8936:206:64:-;;;;;;;;;:::i;6037:240:62:-;;;;;;;;;:::i;13899:218:64:-;;;;;;;;;:::i;11325:236::-;;;;;;;;;:::i;:::-;;;;;;;;4462:266;;;;;;;;;:::i;3984:292:62:-;;;;;;;;;:::i;3929:158:64:-;;;:::i;3775:148::-;;;:::i;1633:155::-;;;:::i;12257:239::-;;;;;;;;;:::i;7408:211::-;;;;;;;;;:::i;:::-;;;;;;;;6378:188;;;;;;;;;:::i;5102:239::-;;;;;;;;;:::i;7073:198:62:-;;;;;;;;;:::i;7277:255::-;;;;;;;;;:::i;13504:323:64:-;;;;;;;;;:::i;:::-;;;;;;;;;;;1684:137:151;;;:::i;4252:204:64:-;;;:::i;3238:167::-;;;:::i;2379:199:118:-;;;;;;;;;:::i;1816:414:67:-;;;;;;;;;:::i;6572:197:64:-;;;;;;;;;:::i;899:77:151:-;;;:::i;1250:92::-;;;:::i;1725:313:62:-;;;;;;;;;:::i;5970:199:64:-;;;;;;;;;:::i;2078:260:66:-;;;;;;;;;:::i;9822:240:64:-;;;;;;;;;:::i;2584:412:118:-;;;;;;;;;:::i;7538:285:62:-;;;;;;;;;:::i;4624:276::-;;;;;;;;;:::i;10729:329:64:-;;;;;;;;;:::i;:::-;;;;;;;;;;;10302:228;;;;;;;;;:::i;4734:362::-;;;;;;;;;:::i;5563:224:62:-;;;;;;;;;:::i;3411:195:64:-;;;:::i;2025:167::-;;;:::i;11567:236::-;;;;;;;;;:::i;6775:203::-;;;;;;;;;:::i;:::-;;;;;;;;2198:468;;;;;;;;;:::i;11064:200::-;;;;;;;;;:::i;2094:279:118:-;;;;;;;;;:::i;6984:203:64:-;;;;;;;;;:::i;4093:153::-;;;:::i;7193:209::-;;;;;;;;;:::i;12502:263::-;;;;;;;;;:::i;11809:204::-;;;;;;;;;:::i;:::-;;;;;;;;9360:225;;;;;;;;;:::i;3075:157::-;;;:::i;6869:198:62:-;;;;;;;;;:::i;4282:336::-;;;;;;;;;:::i;3403:277::-;;;;;;;;;:::i;5604:159:64:-;;;:::i;:::-;;;;;;;;10536:187;;;;;;;;;:::i;:::-;;;;;;;;8164:277:62;;;;;;;;;:::i;10068:228:64:-;;;;;;;;;:::i;2418:712:62:-;;;;;;;;;:::i;3136:261::-;;;;;;;;;:::i;14319:200:64:-;;;;;;;;;:::i;3612:157::-;;;:::i;7889:269:62:-;;;;;;;;;:::i;1970:107:151:-;;;;;;;;;:::i;13248:250:64:-;;;;;;;;;:::i;8046:211::-;;;;;;;;;:::i;14123:190::-;14256:50;;;;;14229:4;;14256:11;;:31;;:50;;14229:4;;14297:8;;14256:50;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14256:50:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14256:50:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14256:50:64;;;;;;;;;14249:57;;14123:190;;;;:::o;6175:197::-;6313:52;;;;;6283:7;;6313:11;;:33;;:52;;6283:7;;6356:8;;6313:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6313:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6313:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6313:52:64;;;;;;;;6547:316:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6719:137:62;;;;;:9;;:55;;:137;;2070:5:156;;6809:37:62;;6719:137;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6719:137:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;6547:316:62:o;9148:206:64:-;9256:16;;:::i;:::-;9295:52;;;;;:11;;:33;;:52;;9329:7;;9338:8;;9295:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9295:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9295:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9295:52:64;;;;;;;;5188:320:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5376:125:62;;;;;:9;;:38;;:125;;2070:5:156;;5449:8:62;;5471:20;;5376:125;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5376:125:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;;5188:320:62:o;12019:232:64:-;12185:59;;;;;12146:16;;12185:11;;:41;;:59;;12227:7;;12236;;12185:59;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12185:59:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12185:59:64;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12185:59:64;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;12185:59:64;;;;;;;;1794:225;1916:19;;:::i;:::-;1958:54;;;;;:11;;:36;;:54;;1995:7;;2004;;1958:54;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1958:54:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1958:54:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1958:54:64;;;;;;;;3686:292:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3858:113:62;;;;;:9;;:32;;:113;;2070:5:156;;3925:8:62;;3947:14;;3858:113;;;;13008:234:64;13122:21;;:::i;:::-;13145;;:::i;:::-;13189:46;;;;;:11;;:28;;:46;;13218:7;;13227;;13189:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13189:46:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13189:46:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13189:46:64;;;;;;;;;13182:53;;;;13008:234;;;:::o;7625:200::-;7767:51;;;;;7732:12;;7767:11;;:32;;:51;;7732:12;;7809:8;;7767:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7767:51:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7767:51:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7767:51:64;;;;;;;;12771:231;12932:63;;;;;12902:7;;12932:11;;:45;;:63;;12902:7;;12987;;12932:63;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12932:63:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12932:63:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12932:63:64;;;;;;;;7831:209;7979:54;;;;;7941:15;;7979:11;;:35;;:54;;7941:15;;8024:8;;7979:54;;;;8502:222;8611:19;;:::i;:::-;8653:64;;;;;:11;;:45;;:64;;8699:7;;8708:8;;8653:64;;;;4906:276:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5066:109:62;;;;;:9;;:30;;:109;;2070:5:156;;5131:8:62;;5153:12;;5066:109;;;;2672:397:64;2867:19;;:::i;:::-;2909:153;;;;;:11;;:49;;:153;;2972:7;;2993;;3014:12;;3040;;2909:153;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2909:153:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2909:153:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2909:153:64;;;;;;;;;2902:160;;2672:397;;;;;;:::o;5347:251::-;5482:19;;:::i;:::-;5524:67;;;;;:11;;:49;;:67;;5574:7;;5583;;5524:67;;;;5823:141;5923:34;;;;;5893:7;;5923:11;;:25;;:34;;5893:7;;5923:34;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5923:34:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5923:34:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5923:34:64;;;;;;;;;5916:41;;5823:141;:::o;2044:317:62:-;2211:7;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2241:113:62;;;;;:9;;:40;;:113;;2070:5:156;;2316::62;;2335:9;;2241:113;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2241:113:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2241:113:62;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2241:113:62;;;;;;;;;2234:120;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;2044:317:62;;-1:-1:-1;;2044:317:62:o;6283:258::-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6439:95:62;;;;;:9;;:34;;:95;;2070:5:156;;6508:16:62;;6439:95;;;;5793:238;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5938:86:62;;;;;:9;;:35;;:86;;2070:5:156;;6008:6:62;;5938:86;;;;8936:206:64;9044:16;;:::i;:::-;9083:52;;;;;:11;;:33;;:52;;9117:7;;9126:8;;9083:52;;;;6037:240:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;6183:87:62;;;;;:9;;:30;;:87;;2070:5:156;;6248:12:62;;6183:87;;;;13899:218:64;14054:56;;;;;14027:4;;14054:11;;:30;;:56;;14027:4;;14094:5;;14101:8;;14054:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14054:56:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14054:56:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;14054:56:64;;;;;;;;;14047:63;;13899:218;;;;;:::o;11325:236::-;11462:16;;:::i;:::-;11501:53;;;;;:11;;:25;;:53;;11527:7;;11536;;11545:8;;11501:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11501:53:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11501:53:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11501:53:64;;;;;;;;4462:266;4644:77;;;;;4595:26;;4644:11;;:54;;:77;;4595:26;;4708:12;;4644:77;;;;3984:292:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4158:111:62;;;;;:9;;:31;;:111;;2070:5:156;;4224:8:62;;4246:13;;4158:111;;;;3929:158:64;4036:44;;;;;4009:4;;4036:11;;:35;;:44;;4009:4;;4036:44;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4036:44:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4036:44:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4036:44:64;;;;;;;;3775:148;3877:39;;;;;3850:4;;3877:11;;:30;;:39;;3850:4;;3877:39;;;;1633:155;1704:19;;:::i;:::-;1746:35;;;;;:11;;:26;;:35;;1773:7;;1746:35;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:35:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1746:35:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1746:35:64;;;;;;;;12257:239;12422:67;;;;;12392:7;;12422:11;;:49;;:67;;12392:7;;12481;;12422:67;;;;7408:211;7516:21;;:::i;:::-;7560:52;;;;;:11;;:33;;:52;;7594:7;;7603:8;;7560:52;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7560:52:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7560:52:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7560:52:64;;;;;;;;6378:188;6510:49;;;;;6483:4;;6510:11;;:30;;:49;;6483:4;;6550:8;;6510:49;;;;5102:239;5231:19;;:::i;:::-;5273:61;;;;;:11;;:43;;:61;;5317:7;;5326;;5273:61;;;;7073:198:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7203:61:62;;;;;:9;;:34;;:61;;2070:5:156;;7247:16:62;;7203:61;;;;7277:255;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7445:80:62;;;;;:9;;:44;;:80;;2070:5:156;;7499:25:62;;7445:80;;;;13504:323:64;13633:13;13660:16;13690:18;13722;13772:11;:30;13803:7;13812;13772:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13772:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13772:48:64;;;;;;39:16:-1;36:1;17:17;2:54;101:4;13772:48:64;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13772:48:64;;;;;;;;;13765:55;;;;;;;;13504:323;;;;;:::o;1684:137:151:-;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1766:6;;1745:40;;1782:1;;1745:40;1766:6;;1745:40;;1782:1;;1745:40;1795:6;:19;;;;;;1684:137::o;4252:204:64:-;4393:56;;;;;4344:26;;4393:11;;:47;;:56;;4344:26;;4393:56;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4393:56:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4393:56:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4393:56:64;;;;;;;;3238:167;3314:21;;:::i;:::-;3358:40;;;;;:11;;:31;;:40;;3390:7;;3358:40;;;;2379:199:118;2525:13;;2508:31;;:7;:31;;;:16;:31;;;;;;;;2540:14;;;;2508:47;;;;;;;:63;;2565:6;;2508:47;:63;;;2565:6;2508:63;;;;;;;;;;;;;2379:199;;:::o;1816:414:67:-;1931:11;;1914:14;1952:272;1972:6;1968:1;:10;1952:272;;;1999:16;2018:4;2023:1;2018:7;;;;;;;;;;;;;;:16;;;1999:35;;2048:12;2063:4;2068:1;2063:7;;;;;;;;;;;;;;:15;;;2048:30;;2134:7;:15;;2148:1;2134:15;;;2144:1;2134:15;2110:10;2092:7;:29;;;:17;:29;;;;;;;;;:39;;;;;;;;;;;:57;;;;;;;;2168:45;;;;;;2122:8;;2205:7;;2168:45;;;;;;;;;;-1:-1:-1;;1980:3:67;;1952:272;;;;1816:414;;:::o;6572:197:64:-;6673:21;;:::i;:::-;6717:45;;;;;:11;;:26;;:45;;6744:7;;6753:8;;6717:45;;;;899:77:151;963:6;;;;899:77;:::o;1250:92::-;1329:6;;1290:4;;1329:6;;1313:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;1725:313:62:-;1890:7;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;1920:111:62;;;;;:9;;:35;;:111;;2070:5:156;;1990:8:62;;2012:9;;1920:111;;;;5970:199:64;6109:53;;;;;6079:7;;6109:11;;:37;;:53;;6079:7;;6156:5;;6109:53;;;;2078:260:66;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2236:95:66;;;;;:13;;:21;;:95;;2070:5:156;;2292:8:66;;2314:7;;2236:95;;;;9822:240:64;9945:20;;:::i;:::-;9988:67;;;;;:11;;:48;;:67;;10037:7;;10046:8;;9988:67;;;;2584:412:118;2704:30;;:::i;:::-;-1:-1:-1;2737:7:118;:23;;;:15;:23;;;;;;;;;2704:62;;;;;;;2737:29;;;;2704:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:12;;:17;2777:78;;2829:15;;2814:30;;;;2777:78;2868:12;;;;:17;;2864:78;;2916:15;;;;;2901:30;;:12;;;:30;2864:78;-1:-1:-1;2952:7:118;:23;;;:15;:23;;;;;;;;;:37;;:29;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2584:412::o;7538:285:62:-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7729:87:62;;;;;:9;;:37;;:87;;2070:5:156;;7776:12:62;;7790:25;;7729:87;;;;4624:276;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4784:109:62;;;;;:9;;:30;;:109;;2070:5:156;;4849:8:62;;4871:12;;4784:109;;;;10729:329:64;10846:21;;:::i;:::-;10881;;:::i;:::-;10916;;:::i;:::-;10951:20;;:::i;:::-;11003:48;;;;;:11;;:29;;:48;;11033:7;;11042:8;;11003:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11003:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11003:48:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11003:48:64;;;;;;;;10302:228;10419:20;;:::i;:::-;10462:61;;;;;:11;;:42;;:61;;10505:7;;10514:8;;10462:61;;;;4734:362;4863:39;;:::i;:::-;4904:45;;:::i;:::-;5028:61;;;;;:11;;:43;;:61;;5072:7;;5081;;5028:61;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5028:61:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5028:61:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5028:61:64;;;;;;;;;4965:124;;;;-1:-1:-1;4734:362:64;-1:-1:-1;;4734:362:64:o;5563:224:62:-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;5701:79:62;;;;;:9;;:29;;:79;;2070:5:156;;5765::62;;5701:79;;;;3411:195:64;3538:61;;;;;3508:7;;3538:11;;:52;;:61;;3508:7;;3538:61;;;;2025:167;2102:19;;:::i;:::-;2144:41;;;;;:11;;:32;;:41;;2177:7;;2144:41;;;;11567:236;11704:16;;:::i;:::-;11743:53;;;;;:11;;:25;;:53;;11769:7;;11778;;11787:8;;11743:53;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11743:53:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11743:53:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11743:53:64;;;;;;;;6775:203;6879:21;;:::i;:::-;6923:48;;;;;:11;;:29;;:48;;6953:7;;6962:8;;6923:48;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6923:48:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6923:48:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6923:48:64;;;;;;;;2198:468;2346:19;;:::i;:::-;2381:27;;:::i;:::-;-1:-1:-1;2411:78:64;;;;;;;;-1:-1:-1;2411:78:64;;;;;;;;;2506:153;;;;;2411:78;;2506:11;;:49;;:153;;2411:78;;2611:12;;2637;;2506:153;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2506:153:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2506:153:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2506:153:64;;;;;;;;;2499:160;2198:468;-1:-1:-1;;;;2198:468:64:o;11064:200::-;11169:16;;:::i;:::-;11208:49;;;;;:11;;:30;;:49;;11239:7;;11248:8;;11208:49;;;;2094:279:118;2250:48;2282:7;2291:6;2250:31;:48::i;:::-;2308:58;;;;;:17;;:24;;:58;;2333:7;;2342;;2351:6;;2359;;2308:58;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2308:58:118;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2308:58:118;;;;2094:279;;;:::o;6984:203:64:-;7088:21;;:::i;:::-;7132:48;;;;;:11;;:29;;:48;;7162:7;;7171:8;;7132:48;;;;4093:153;4199:40;;;;;4169:7;;4199:11;;:31;;:40;;4169:7;;4199:40;;;;7193:209;7300:21;;:::i;:::-;7344:51;;;;;:11;;:32;;:51;;7377:7;;7386:8;;7344:51;;;;12502:263;12687:71;;;;;12657:7;;12687:11;;:46;;:71;;12657:7;;12743;;12752:5;;12687:71;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12687:71:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12687:71:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;12687:71:64;;;;;;;;11809:204;11960:46;;;;;11923:14;;11960:11;;:28;;:46;;11923:14;;11998:7;;11960:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11960:46:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11960:46:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11960:46:64;;;;;;;;9360:225;9476:19;;:::i;:::-;9518:60;;;;;:11;;:41;;:60;;9560:7;;9569:8;;9518:60;;;;3075:157;3147:19;;:::i;:::-;3189:36;;;;;:11;;:27;;:36;;3217:7;;3189:36;;;;6869:198:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;7003:57:62;;;;;:9;;:32;;:57;;2070:5:156;;7045:14:62;;7003:57;;;;4282:336;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;4478:133:62;;;;;:9;;:42;;:133;;2070:5:156;;4555:8:62;;4577:24;;4478:133;;;;3403:277;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3566:107:62;;;;;:9;;:29;;:107;;2070:5:156;;3630:8:62;;3652:11;;3566:107;;;;5604:159:64;5674:25;;:::i;:::-;5722:34;;;;;:11;;:25;;:34;;5748:7;;5722:34;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5722:34:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5722:34:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5722:34:64;;;;;;;;10536:187;10632:21;;:::i;:::-;10676:40;;;;;:11;;:21;;:40;;10698:7;;10707:8;;10676:40;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10676:40:64;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10676:40:64;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;10676:40:64;;;;;;;;8164:277:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;8323:111:62;;;;;:9;;:35;;:111;;2070:5:156;;8393:10:62;;8417:7;;8323:111;;;;10068:228:64;10185:20;;:::i;:::-;10228:61;;;;;:11;;:42;;:61;;10271:7;;10280:8;;10228:61;;;;2418:712:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;2833:290:62;;;;;:9;;:24;;:290;;2070:5:156;;2892::62;;2911:11;;2936:14;;2964:13;;2991;;3018:12;;3044;;3070:20;;3104:9;;2833:290;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2833:290:62;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2230:11:156;:18;;-1:-1:-1;;;;2230:18:156;-1:-1:-1;;;2230:18:156;;;-1:-1:-1;;;;;;;;;;;2418:712:62:o;3136:261::-;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;3287:103:62;;;;;:9;;:27;;:103;;2070:5:156;;3349:8:62;;3371:9;;3287:103;;;;14319:200:64;14457:55;;;;;14430:4;;14457:11;;:34;;:55;;14430:4;;14501:10;;14457:55;;;;3612:157;3724:38;;;;;3686:15;;3724:11;;:29;;:38;;3686:15;;3724:38;;;;7889:269:62;1103:9:151;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;1934:11:156;;-1:-1:-1;;;1934:11:156;;;;1926:55;;;;-1:-1:-1;;;1926:55:156;;;;;;;;;2056:11;:19;;-1:-1:-1;;;;2056:19:156;;;8044:107:62;;;;;:9;;:32;;:107;;2070:5:156;;8111:8:62;;8133;;8044:107;;;;1970::151;1103:9;:7;:9::i;:::-;1095:54;;;;-1:-1:-1;;;1095:54:151;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;13248:250:64:-;13370:21;;:::i;:::-;13393;;:::i;:::-;13437:54;;;;;:11;;:36;;:54;;13474:7;;13483;;13437:54;;;;8046:211;8155:19;;:::i;:::-;8197:53;;;;;:11;;:34;;:53;;8232:7;;8241:8;;8197:53;;;;788:96:148;867:10;788:96;:::o;18572:299:71:-;18743:16;;18706:158;;18732:27;;:74;;;;-1:-1:-1;18804:1:71;18763:23;;;:13;;;:23;;;;;:29;:43;:29;:43;;18732:74;18820:4;18706:158;:12;:158::i;:::-;18572:299;;:::o;2178:225:151:-;2251:22;;;2243:73;;;;-1:-1:-1;;;2243:73:151;;;;;;;;;2352:6;;2331:38;;;;;;;2352:6;;2331:38;;2352:6;;2331:38;2379:6;:17;;;;;;;;;;;;;;;2178:225::o;1294:426:99:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;1500:171:99;;;;-1:-1:-1;;;1448:255:99;;;;;;;;6359:968;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;;7308:12:99;;;7318:1;7308:12;;;;;;;;;7301:19;-1:-1:-1;;6359:968:99:o;1266:1732:118:-;;;;;;;;;;-1:-1:-1;1266:1732:118;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1266:1732:118;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1266:1732:118;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1266:1732:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;301:722;;429:3;422:4;414:6;410:17;406:27;396:2;;447:1;444;437:12;396:2;477:6;471:13;499:80;514:64;571:6;514:64;;;499:80;;;490:89;;596:5;621:6;614:5;607:21;651:4;643:6;639:17;629:27;;673:4;668:3;664:14;657:21;;726:6;773:3;765:4;757:6;753:17;748:3;744:27;741:36;738:2;;;790:1;787;780:12;738:2;815:1;800:217;825:6;822:1;819:13;800:217;;;883:3;905:48;949:3;937:10;905:48;;;893:61;;-1:-1;977:4;968:14;;;;996;;;;;847:1;840:9;800:217;;;804:14;389:634;;;;;;;;1067:753;;1209:3;1202:4;1194:6;1190:17;1186:27;1176:2;;1227:1;1224;1217:12;1176:2;1264:6;1251:20;1286:105;1301:89;1383:6;1301:89;;1286:105;1419:21;;;1463:4;1451:17;;;;1277:114;;-1:-1;1476:14;;1451:17;1571:1;1556:258;1581:6;1578:1;1575:13;1556:258;;;1664:3;1651:17;1643:6;1639:30;1688:62;1746:3;1734:10;1688:62;;;1676:75;;-1:-1;1774:4;1765:14;;;;1793;;;;;1603:1;1596:9;1556:258;;1858:764;;1994:3;1987:4;1979:6;1975:17;1971:27;1961:2;;2012:1;2009;2002:12;1961:2;2049:6;2036:20;2071:99;2086:83;2162:6;2086:83;;2071:99;2062:108;;2187:5;2212:6;2205:5;2198:21;2242:4;2234:6;2230:17;2220:27;;2264:4;2259:3;2255:14;2248:21;;2317:6;2364:3;2356:4;2348:6;2344:17;2339:3;2335:27;2332:36;2329:2;;;2381:1;2378;2371:12;2329:2;2406:1;2391:225;2416:6;2413:1;2410:13;2391:225;;;2474:3;2496:56;2548:3;2536:10;2496:56;;;2484:69;;-1:-1;2576:4;2567:14;;;;2604:4;2595:14;;;;;2438:1;2431:9;2391:225;;2665:785;;2808:3;2801:4;2793:6;2789:17;2785:27;2775:2;;2826:1;2823;2816:12;2775:2;2863:6;2850:20;2885:106;2900:90;2983:6;2900:90;;2885:106;2876:115;;3008:5;3033:6;3026:5;3019:21;3063:4;3055:6;3051:17;3041:27;;3085:4;3080:3;3076:14;3069:21;;3138:6;3185:3;3177:4;3169:6;3165:17;3160:3;3156:27;3153:36;3150:2;;;3202:1;3199;3192:12;3150:2;3227:1;3212:232;3237:6;3234:1;3231:13;3212:232;;;3295:3;3317:63;3376:3;3364:10;3317:63;;;3305:76;;-1:-1;3404:4;3395:14;;;;3432:4;3423:14;;;;;3259:1;3252:9;3212:232;;3485:776;;3631:3;3624:4;3616:6;3612:17;3608:27;3598:2;;3649:1;3646;3639:12;3598:2;3679:6;3673:13;3701:98;3716:82;3791:6;3716:82;;3701:98;3692:107;;3816:5;3841:6;3834:5;3827:21;3871:4;3863:6;3859:17;3849:27;;3893:4;3888:3;3884:14;3877:21;;3946:6;3993:3;3985:4;3977:6;3973:17;3968:3;3964:27;3961:36;3958:2;;;4010:1;4007;4000:12;3958:2;4035:1;4020:235;4045:6;4042:1;4039:13;4020:235;;;4103:3;4125:66;4187:3;4175:10;4125:66;;;4113:79;;-1:-1;4215:4;4206:14;;;;4243:4;4234:14;;;;;4067:1;4060:9;4020:235;;4296:776;;4442:3;4435:4;4427:6;4423:17;4419:27;4409:2;;4460:1;4457;4450:12;4409:2;4490:6;4484:13;4512:98;4527:82;4602:6;4527:82;;4512:98;4503:107;;4627:5;4652:6;4645:5;4638:21;4682:4;4674:6;4670:17;4660:27;;4704:4;4699:3;4695:14;4688:21;;4757:6;4804:3;4796:4;4788:6;4784:17;4779:3;4775:27;4772:36;4769:2;;;4821:1;4818;4811:12;4769:2;4846:1;4831:235;4856:6;4853:1;4850:13;4831:235;;;4914:3;4936:66;4998:3;4986:10;4936:66;;;4924:79;;-1:-1;5026:4;5017:14;;;;5054:4;5045:14;;;;;4878:1;4871:9;4831:235;;5098:722;;5226:3;5219:4;5211:6;5207:17;5203:27;5193:2;;5244:1;5241;5234:12;5193:2;5274:6;5268:13;5296:80;5311:64;5368:6;5311:64;;5296:80;5287:89;;5393:5;5418:6;5411:5;5404:21;5448:4;5440:6;5436:17;5426:27;;5470:4;5465:3;5461:14;5454:21;;5523:6;5570:3;5562:4;5554:6;5550:17;5545:3;5541:27;5538:36;5535:2;;;5587:1;5584;5577:12;5535:2;5612:1;5597:217;5622:6;5619:1;5616:13;5597:217;;;5680:3;5702:48;5746:3;5734:10;5702:48;;;5690:61;;-1:-1;5774:4;5765:14;;;;5793;;;;;5644:1;5637:9;5597:217;;5828:124;5892:20;;5917:30;5892:20;5917:30;;5959:128;6034:13;;6052:30;6034:13;6052:30;;6095:432;;6192:3;6185:4;6177:6;6173:17;6169:27;6159:2;;6210:1;6207;6200:12;6159:2;6247:6;6234:20;6269:60;6284:44;6321:6;6284:44;;6269:60;6260:69;;6349:6;6342:5;6335:21;6385:4;6377:6;6373:17;6418:4;6411:5;6407:16;6453:3;6444:6;6439:3;6435:16;6432:25;6429:2;;;6470:1;6467;6460:12;6429:2;6480:41;6514:6;6509:3;6504;6480:41;;;6152:375;;;;;;;;6535:202;6638:20;;6663:69;6638:20;6663:69;;6744:206;6858:13;;6876:69;6858:13;6876:69;;8079:162;8162:20;;8187:49;8162:20;8187:49;;8248:176;8338:20;;8363:56;8338:20;8363:56;;8608:154;8687:20;;8712:45;8687:20;8712:45;;8769:158;8859:13;;8877:45;8859:13;8877:45;;8966:1528;;9080:6;9068:9;9063:3;9059:19;9055:32;9052:2;;;9100:1;9097;9090:12;9052:2;9118:22;9133:6;9118:22;;;9109:31;-1:-1;9196:1;9228:65;9289:3;9269:9;9228:65;;;9203:91;;-1:-1;9360:2;9393:49;9438:3;9414:22;;;9393:49;;;9386:4;9379:5;9375:16;9368:75;9315:139;9506:2;9539:75;9610:3;9601:6;9590:9;9586:22;9539:75;;;9532:4;9525:5;9521:16;9514:101;9464:162;9687:3;9721:49;9766:3;9757:6;9746:9;9742:22;9721:49;;;9714:4;9707:5;9703:16;9696:75;9636:146;9845:3;9879:49;9924:3;9915:6;9904:9;9900:22;9879:49;;;9872:4;9865:5;9861:16;9854:75;9792:148;9998:3;10032:49;10077:3;10068:6;10057:9;10053:22;10032:49;;;10025:4;10018:5;10014:16;10007:75;9950:143;10153:3;10187:49;10232:3;10223:6;10212:9;10208:22;10187:49;;;10180:4;10173:5;10169:16;10162:75;10103:145;10326:3;10315:9;10311:19;10298:33;10351:18;10343:6;10340:30;10337:2;;;10383:1;10380;10373:12;10337:2;10418:54;10468:3;10459:6;10448:9;10444:22;10418:54;;;10411:4;10404:5;10400:16;10393:80;10258:226;9046:1448;;;;;10532:804;;10647:4;10635:9;10630:3;10626:19;10622:30;10619:2;;;10665:1;10662;10655:12;10619:2;10683:20;10698:4;10683:20;;;10674:29;-1:-1;10753:1;10785:46;10827:3;10807:9;10785:46;;;10760:72;;-1:-1;10901:2;10934:72;11002:3;10978:22;;;10934:72;;;10927:4;10920:5;10916:16;10909:98;10853:165;11067:2;11100:69;11165:3;11156:6;11145:9;11141:22;11100:69;;;11093:4;11086:5;11082:16;11075:95;11028:153;11232:2;11265:49;11310:3;11301:6;11290:9;11286:22;11265:49;;;11258:4;11251:5;11247:16;11240:75;11191:135;10613:723;;;;;11369:340;;11488:4;11476:9;11471:3;11467:19;11463:30;11460:2;;;11506:1;11503;11496:12;11460:2;11524:20;11539:4;11524:20;;;11515:29;-1:-1;11595:1;11627:60;11683:3;11663:9;11627:60;;;11602:86;;-1:-1;11613:5;11454:255;-1:-1;;11454:255;11742:322;;11854:4;11842:9;11837:3;11833:19;11829:30;11826:2;;;11872:1;11869;11862:12;11826:2;11890:20;11905:4;11890:20;;;11881:29;-1:-1;11961:1;11993:49;12038:3;12018:9;11993:49;;12476:659;;12596:4;12584:9;12579:3;12575:19;12571:30;12568:2;;;12614:1;12611;12604:12;12568:2;12632:20;12647:4;12632:20;;;12623:29;-1:-1;12704:1;12736:60;12792:3;12772:9;12736:60;;;12711:86;;-1:-1;12860:2;12893:60;12949:3;12925:22;;;12893:60;;;12886:4;12879:5;12875:16;12868:86;12818:147;13021:2;13054:59;13109:3;13100:6;13089:9;13085:22;13054:59;;;13047:4;13040:5;13036:16;13029:85;12975:150;12562:573;;;;;13170:619;;13283:4;13271:9;13266:3;13262:19;13258:30;13255:2;;;13301:1;13298;13291:12;13255:2;13319:20;13334:4;13319:20;;;13310:29;-1:-1;13391:1;13423:49;13468:3;13448:9;13423:49;;;13398:75;;-1:-1;13536:2;13569:49;13614:3;13590:22;;;13569:49;;;13562:4;13555:5;13551:16;13544:75;13494:136;13686:2;13719:48;13763:3;13754:6;13743:9;13739:22;13719:48;;14520:464;;14628:4;14616:9;14611:3;14607:19;14603:30;14600:2;;;14646:1;14643;14636:12;14600:2;14664:20;14679:4;14664:20;;;14655:29;-1:-1;14735:1;14767:49;14812:3;14792:9;14767:49;;;14742:75;;-1:-1;14880:2;14913:49;14958:3;14934:22;;;14913:49;;;14906:4;14899:5;14895:16;14888:75;14838:136;14594:390;;;;;15520:2182;;15645:6;15633:9;15628:3;15624:19;15620:32;15617:2;;;15665:1;15662;15655:12;15617:2;15683:22;15698:6;15683:22;;;15674:31;-1:-1;15756:1;15788:60;15844:3;15824:9;15788:60;;;15763:86;;-1:-1;15915:2;15948:57;16001:3;15977:22;;;15948:57;;;15941:4;15934:5;15930:16;15923:83;15870:147;16071:2;16104:83;16183:3;16174:6;16163:9;16159:22;16104:83;;;16097:4;16090:5;16086:16;16079:109;16027:172;16250:3;16284:80;16360:3;16351:6;16340:9;16336:22;16284:80;;;16277:4;16270:5;16266:16;16259:106;16209:167;16433:3;16467:82;16545:3;16536:6;16525:9;16521:22;16467:82;;;16460:4;16453:5;16449:16;16442:108;16386:175;16621:3;16655:85;16736:3;16727:6;16716:9;16712:22;16655:85;;;16648:4;16641:5;16637:16;16630:111;16571:181;16811:3;16845:79;16920:3;16911:6;16900:9;16896:22;16845:79;;;16838:4;16831:5;16827:16;16820:105;16762:174;17006:3;17040:79;17115:3;17106:6;17095:9;17091:22;17040:79;;;17033:4;17026:5;17022:16;17015:105;16946:185;17189:3;17225:78;17299:3;17290:6;17279:9;17275:22;17225:78;;;17216:6;17209:5;17205:18;17198:106;17141:174;17373:3;17409:78;17483:3;17474:6;17463:9;17459:22;17409:78;;;17400:6;17393:5;17389:18;17382:106;17325:174;17565:3;17601:79;17676:3;17667:6;17656:9;17652:22;17601:79;;;17592:6;17585:5;17581:18;17574:107;17509:183;15611:2091;;;;;17740:472;;17855:4;17843:9;17838:3;17834:19;17830:30;17827:2;;;17873:1;17870;17863:12;17827:2;17891:20;17906:4;17891:20;;;17882:29;-1:-1;17965:1;17997:49;18042:3;18022:9;17997:49;;;17972:75;;-1:-1;18111:2;18144:46;18186:3;18162:22;;;18144:46;;18242:491;;18360:4;18348:9;18343:3;18339:19;18335:30;18332:2;;;18378:1;18375;18368:12;18332:2;18396:20;18411:4;18396:20;;;18387:29;-1:-1;18466:1;18498:57;18551:3;18531:9;18498:57;;;18473:83;;-1:-1;18618:2;18651:60;18707:3;18683:22;;;18651:60;;18763:462;;18874:4;18862:9;18857:3;18853:19;18849:30;18846:2;;;18892:1;18889;18882:12;18846:2;18910:20;18925:4;18910:20;;;18901:29;-1:-1;18980:1;19012:46;19054:3;19034:9;19012:46;;;18987:72;;-1:-1;19121:2;19154:49;19199:3;19175:22;;;19154:49;;20547:1374;;20676:4;20664:9;20659:3;20655:19;20651:30;20648:2;;;20694:1;20691;20684:12;20648:2;20712:20;20727:4;20712:20;;;20703:29;-1:-1;20792:1;20824:59;20879:3;20859:9;20824:59;;;20799:85;;-1:-1;20961:2;20994:59;21049:3;21025:22;;;20994:59;;;20987:4;20980:5;20976:16;20969:85;20905:160;21126:2;21159:59;21214:3;21205:6;21194:9;21190:22;21159:59;;;21152:4;21145:5;21141:16;21134:85;21075:155;21292:2;21325:59;21380:3;21371:6;21360:9;21356:22;21325:59;;;21318:4;21311:5;21307:16;21300:85;21240:156;21469:3;21503:59;21558:3;21549:6;21538:9;21534:22;21503:59;;;21496:4;21489:5;21485:16;21478:85;21406:168;21635:3;21669:59;21724:3;21715:6;21704:9;21700:22;21669:59;;;21662:4;21655:5;21651:16;21644:85;21584:156;21805:3;21839:60;21895:3;21886:6;21875:9;21871:22;21839:60;;;21832:4;21825:5;21821:16;21814:86;21750:161;20642:1279;;;;;21956:502;;22079:4;22067:9;22062:3;22058:19;22054:30;22051:2;;;22097:1;22094;22087:12;22051:2;22115:20;22130:4;22115:20;;;22106:29;-1:-1;22187:1;22219:60;22275:3;22255:9;22219:60;;24308:491;;24426:4;24414:9;24409:3;24405:19;24401:30;24398:2;;;24444:1;24441;24434:12;24398:2;24462:20;24477:4;24462:20;;;24453:29;-1:-1;24532:1;24564:57;24617:3;24597:9;24564:57;;;24539:83;;-1:-1;24684:2;24717:60;24773:3;24749:22;;;24717:60;;25331:130;25398:20;;25423:33;25398:20;25423:33;;25468:134;25546:13;;25564:33;25546:13;25564:33;;25609:130;25676:20;;25701:33;25676:20;25701:33;;25746:134;25824:13;;25842:33;25824:13;25842:33;;25887:130;25954:20;;25979:33;25954:20;25979:33;;26024:134;26102:13;;26120:33;26102:13;26120:33;;26165:128;26231:20;;26256:32;26231:20;26256:32;;26300:132;26377:13;;26395:32;26377:13;26395:32;;26439:132;26516:13;;26534:32;26516:13;26534:32;;26578:132;26655:13;;26673:32;26655:13;26673:32;;26717:241;;26821:2;26809:9;26800:7;26796:23;26792:32;26789:2;;;26837:1;26834;26827:12;26789:2;26872:1;26889:53;26934:7;26914:9;26889:53;;26965:263;;27080:2;27068:9;27059:7;27055:23;27051:32;27048:2;;;27096:1;27093;27086:12;27048:2;27131:1;27148:64;27204:7;27184:9;27148:64;;27235:366;;;27356:2;27344:9;27335:7;27331:23;27327:32;27324:2;;;27372:1;27369;27362:12;27324:2;27407:1;27424:53;27469:7;27449:9;27424:53;;;27414:63;;27386:97;27514:2;27532:53;27577:7;27568:6;27557:9;27553:22;27532:53;;;27522:63;;27493:98;27318:283;;;;;;27608:360;;;27726:2;27714:9;27705:7;27701:23;27697:32;27694:2;;;27742:1;27739;27732:12;27694:2;27777:1;27794:53;27839:7;27819:9;27794:53;;;27784:63;;27756:97;27884:2;27902:50;27944:7;27935:6;27924:9;27920:22;27902:50;;27975:438;;;28132:2;28120:9;28111:7;28107:23;28103:32;28100:2;;;28148:1;28145;28138:12;28100:2;28183:1;28200:53;28245:7;28225:9;28200:53;;;28190:63;;28162:97;28290:2;28308:89;28389:7;28380:6;28369:9;28365:22;28308:89;;28420:1473;;;;;;;;;;28773:3;28761:9;28752:7;28748:23;28744:33;28741:2;;;28790:1;28787;28780:12;28741:2;28825:1;28842:53;28887:7;28867:9;28842:53;;;28832:63;;28804:97;28932:2;28950:75;29017:7;29008:6;28997:9;28993:22;28950:75;;;28940:85;;28911:120;29062:2;29080:78;29150:7;29141:6;29130:9;29126:22;29080:78;;;29070:88;;29041:123;29195:2;29213:76;29281:7;29272:6;29261:9;29257:22;29213:76;;;29203:86;;29174:121;29326:3;29345:76;29413:7;29404:6;29393:9;29389:22;29345:76;;;29335:86;;29305:122;29458:3;29477:53;29522:7;29513:6;29502:9;29498:22;29477:53;;;29467:63;;29437:99;29567:3;29586:53;29631:7;29622:6;29611:9;29607:22;29586:53;;;29576:63;;29546:99;29676:3;29695:76;29763:7;29754:6;29743:9;29739:22;29695:76;;;29685:86;;29655:122;29808:3;29827:50;29869:7;29860:6;29849:9;29845:22;29827:50;;;29817:60;;29787:96;28735:1158;;;;;;;;;;;;29900:726;;;30115:2;30103:9;30094:7;30090:23;30086:32;30083:2;;;30131:1;30128;30121:12;30083:2;30166:31;;30217:18;30206:30;;30203:2;;;30249:1;30246;30239:12;30203:2;30269:97;30358:7;30349:6;30338:9;30334:22;30269:97;;;30259:107;;30145:227;30431:2;30420:9;30416:18;30403:32;30455:18;30447:6;30444:30;30441:2;;;30487:1;30484;30477:12;30441:2;30507:103;30602:7;30593:6;30582:9;30578:22;30507:103;;30633:429;;30788:2;30776:9;30767:7;30763:23;30759:32;30756:2;;;30804:1;30801;30794:12;30756:2;30839:31;;30890:18;30879:30;;30876:2;;;30922:1;30919;30912:12;30876:2;30942:104;31038:7;31029:6;31018:9;31014:22;30942:104;;31069:392;;31209:2;31197:9;31188:7;31184:23;31180:32;31177:2;;;31225:1;31222;31215:12;31177:2;31260:24;;31304:18;31293:30;;31290:2;;;31336:1;31333;31326:12;31290:2;31356:89;31437:7;31428:6;31417:9;31413:22;31356:89;;31468:1260;;;;;31770:3;31758:9;31749:7;31745:23;31741:33;31738:2;;;31787:1;31784;31777:12;31738:2;31822:24;;31866:18;31855:30;;31852:2;;;31898:1;31895;31888:12;31852:2;31918:89;31999:7;31990:6;31979:9;31975:22;31918:89;;;31908:99;;31801:212;32065:2;32054:9;32050:18;32044:25;32089:18;32081:6;32078:30;32075:2;;;32121:1;32118;32111:12;32075:2;32141:89;32222:7;32213:6;32202:9;32198:22;32141:89;;;32131:99;;32023:213;32288:2;32277:9;32273:18;32267:25;32312:18;32304:6;32301:30;32298:2;;;32344:1;32341;32334:12;32298:2;32364:107;32463:7;32454:6;32443:9;32439:22;32364:107;;;32354:117;;32246:231;32529:2;32518:9;32514:18;32508:25;32553:18;32545:6;32542:30;32539:2;;;32585:1;32582;32575:12;32539:2;32605:107;32704:7;32695:6;32684:9;32680:22;32605:107;;;32595:117;;32487:231;31732:996;;;;;;;;32735:257;;32847:2;32835:9;32826:7;32822:23;32818:32;32815:2;;;32863:1;32860;32853:12;32815:2;32898:1;32915:61;32968:7;32948:9;32915:61;;32999:313;;33139:2;33127:9;33118:7;33114:23;33110:32;33107:2;;;33155:1;33152;33145:12;33107:2;33190:1;33207:89;33288:7;33268:9;33207:89;;33319:335;;33470:2;33458:9;33449:7;33445:23;33441:32;33438:2;;;33486:1;33483;33476:12;33438:2;33521:1;33538:100;33630:7;33610:9;33538:100;;34913:287;;35040:2;35028:9;35019:7;35015:23;35011:32;35008:2;;;35056:1;35053;35046:12;35008:2;35091:1;35108:76;35176:7;35156:9;35108:76;;35207:287;;35334:2;35322:9;35313:7;35309:23;35305:32;35302:2;;;35350:1;35347;35340:12;35302:2;35385:1;35402:76;35470:7;35450:9;35402:76;;35501:309;;35639:2;35627:9;35618:7;35614:23;35610:32;35607:2;;;35655:1;35652;35645:12;35607:2;35690:1;35707:87;35786:7;35766:9;35707:87;;35817:491;;;35995:2;35983:9;35974:7;35970:23;35966:32;35963:2;;;36011:1;36008;36001:12;35963:2;36046:1;36063:87;36142:7;36122:9;36063:87;;;36053:97;;36025:131;36187:2;36205:87;36284:7;36275:6;36264:9;36260:22;36205:87;;36315:311;;36454:2;36442:9;36433:7;36429:23;36425:32;36422:2;;;36470:1;36467;36460:12;36422:2;36505:1;36522:88;36602:7;36582:9;36522:88;;36633:287;;36760:2;36748:9;36739:7;36735:23;36731:32;36728:2;;;36776:1;36773;36766:12;36728:2;36811:1;36828:76;36896:7;36876:9;36828:76;;36927:436;;;37083:2;37071:9;37062:7;37058:23;37054:32;37051:2;;;37099:1;37096;37089:12;37051:2;37134:1;37151:76;37219:7;37199:9;37151:76;;;37141:86;;37113:120;37264:2;37282:65;37339:7;37330:6;37319:9;37315:22;37282:65;;37370:412;;;37514:2;37502:9;37493:7;37489:23;37485:32;37482:2;;;37530:1;37527;37520:12;37482:2;37565:1;37582:76;37650:7;37630:9;37582:76;;;37572:86;;37544:120;37695:2;37713:53;37758:7;37749:6;37738:9;37734:22;37713:53;;37789:582;;;;37972:3;37960:9;37951:7;37947:23;37943:33;37940:2;;;37989:1;37986;37979:12;37940:2;38024:1;38041:76;38109:7;38089:9;38041:76;;;38031:86;;38003:120;38154:2;38172:53;38217:7;38208:6;38197:9;38193:22;38172:53;;;38162:63;;38133:98;38262:2;38280:75;38347:7;38338:6;38327:9;38323:22;38280:75;;;38270:85;;38241:120;37934:437;;;;;;38378:538;;;;38539:3;38527:9;38518:7;38514:23;38510:33;38507:2;;;38556:1;38553;38546:12;38507:2;38591:1;38608:76;38676:7;38656:9;38608:76;;;38598:86;;38570:120;38721:2;38739:53;38784:7;38775:6;38764:9;38760:22;38739:53;;;38729:63;;38700:98;38829:2;38847:53;38892:7;38883:6;38872:9;38868:22;38847:53;;38923:314;;39063:3;39051:9;39042:7;39038:23;39034:33;39031:2;;;39080:1;39077;39070:12;39031:2;39115:1;39132:89;39213:7;39193:9;39132:89;;39244:867;;;;;39506:3;39494:9;39485:7;39481:23;39477:33;39474:2;;;39523:1;39520;39513:12;39474:2;39558:1;39575:89;39656:7;39636:9;39575:89;;;39565:99;;39537:133;39701:3;39720:88;39800:7;39791:6;39780:9;39776:22;39720:88;;;39710:98;;39680:134;39845:3;39864:88;39944:7;39935:6;39924:9;39920:22;39864:88;;;39854:98;;39824:134;39989:3;40008:87;40087:7;40078:6;40067:9;40063:22;40008:87;;40118:307;;40255:2;40243:9;40234:7;40230:23;40226:32;40223:2;;;40271:1;40268;40261:12;40223:2;40306:1;40323:86;40401:7;40381:9;40323:86;;41066:322;;41210:3;41198:9;41189:7;41185:23;41181:33;41178:2;;;41227:1;41224;41217:12;41178:2;41262:1;41279:93;41364:7;41344:9;41279:93;;41395:317;;41537:2;41525:9;41516:7;41512:23;41508:32;41505:2;;;41553:1;41550;41543:12;41505:2;41588:1;41605:91;41688:7;41668:9;41605:91;;43159:307;;43296:2;43284:9;43275:7;43271:23;43267:32;43264:2;;;43312:1;43309;43302:12;43264:2;43347:1;43364:86;43442:7;43422:9;43364:86;;43473:241;;43577:2;43565:9;43556:7;43552:23;43548:32;43545:2;;;43593:1;43590;43583:12;43545:2;43628:1;43645:53;43690:7;43670:9;43645:53;;43721:263;;43836:2;43824:9;43815:7;43811:23;43807:32;43804:2;;;43852:1;43849;43842:12;43804:2;43887:1;43904:64;43960:7;43940:9;43904:64;;43991:366;;;44112:2;44100:9;44091:7;44087:23;44083:32;44080:2;;;44128:1;44125;44118:12;44080:2;44163:1;44180:53;44225:7;44205:9;44180:53;;44364:360;;;44482:2;44470:9;44461:7;44457:23;44453:32;44450:2;;;44498:1;44495;44488:12;44450:2;44533:1;44550:53;44595:7;44575:9;44550:53;;44731:416;;;44877:2;44865:9;44856:7;44852:23;44848:32;44845:2;;;44893:1;44890;44883:12;44845:2;44928:1;44945:53;44990:7;44970:9;44945:53;;45571:412;;;45715:2;45703:9;45694:7;45690:23;45686:32;45683:2;;;45731:1;45728;45721:12;45683:2;45766:1;45783:53;45828:7;45808:9;45783:53;;;45773:63;;45745:97;45873:2;45891:76;45959:7;45950:6;45939:9;45935:22;45891:76;;45990:415;;;46135:3;46123:9;46114:7;46110:23;46106:33;46103:2;;;46152:1;46149;46142:12;46103:2;46187:1;46204:53;46249:7;46229:9;46204:53;;;46194:63;;46166:97;46294:2;46312:77;46381:7;46372:6;46361:9;46357:22;46312:77;;46412:366;;;46533:2;46521:9;46512:7;46508:23;46504:32;46501:2;;;46549:1;46546;46539:12;46501:2;46584:1;46601:53;46646:7;46626:9;46601:53;;;46591:63;;46563:97;46691:2;46709:53;46754:7;46745:6;46734:9;46730:22;46709:53;;46786:173;;46873:46;46915:3;46907:6;46873:46;;;-1:-1;;46948:4;46939:14;;46866:93;46968:273;;47127:108;47231:3;47223:6;47127:108;;47250:269;;47383:96;47475:3;47467:6;47383:96;;;-1:-1;;47508:4;47499:14;;47376:143;47528:249;;47651:86;47733:3;47725:6;47651:86;;47786:249;;47909:86;47991:3;47983:6;47909:86;;48044:173;;48131:46;48173:3;48165:6;48131:46;;48225:103;48298:24;48316:5;48298:24;;;48293:3;48286:37;48280:48;;;48732:690;;48877:54;48925:5;48877:54;;;48944:86;49023:6;49018:3;48944:86;;;48937:93;;49051:56;49101:5;49051:56;;;49127:7;49155:1;49140:260;49165:6;49162:1;49159:13;49140:260;;;49232:6;49226:13;49253:63;49312:3;49297:13;49253:63;;;49246:70;;49333:60;49386:6;49333:60;;;49323:70;-1:-1;;49187:1;49180:9;49140:260;;;-1:-1;49413:3;;48856:566;-1:-1;;;;;48856:566;49497:1072;;49700:79;49773:5;49700:79;;;49792:119;49904:6;49899:3;49792:119;;;49785:126;;49934:3;49976:4;49968:6;49964:17;49959:3;49955:27;50003:81;50078:5;50003:81;;;50104:7;50132:1;50117:413;50142:6;50139:1;50136:13;50117:413;;;50204:9;50198:4;50194:20;50189:3;50182:33;50249:6;50243:13;50271:122;50388:4;50373:13;50271:122;;;50263:130;;50410:85;50488:6;50410:85;;;50518:4;50509:14;;;;;50400:95;-1:-1;;50164:1;50157:9;50117:413;;;-1:-1;50543:4;;49679:890;-1:-1;;;;;;;49679:890;50632:866;;50823:73;50890:5;50823:73;;;50909:113;51015:6;51010:3;50909:113;;;50902:120;;51043:75;51112:5;51043:75;;;51138:7;51166:1;51151:325;51176:6;51173:1;51170:13;51151:325;;;51243:6;51237:13;51264:109;51369:3;51354:13;51264:109;;;51257:116;;51390:79;51462:6;51390:79;;;51380:89;-1:-1;;51198:1;51191:9;51151:325;;51555:834;;51736:72;51802:5;51736:72;;;51821:104;51918:6;51913:3;51821:104;;;51814:111;;51946:74;52014:5;51946:74;;;52040:7;52068:1;52053:314;52078:6;52075:1;52072:13;52053:314;;;52145:6;52139:13;52166:99;52261:3;52246:13;52166:99;;;52159:106;;52282:78;52353:6;52282:78;;;52272:88;-1:-1;;52100:1;52093:9;52053:314;;52446:834;;52627:72;52693:5;52627:72;;;52712:104;52809:6;52804:3;52712:104;;;52705:111;;52837:74;52905:5;52837:74;;;52931:7;52959:1;52944:314;52969:6;52966:1;52963:13;52944:314;;;53036:6;53030:13;53057:99;53152:3;53137:13;53057:99;;;53050:106;;53173:78;53244:6;53173:78;;;53163:88;-1:-1;;52991:1;52984:9;52944:314;;53319:690;;53464:54;53512:5;53464:54;;;53531:86;53610:6;53605:3;53531:86;;;53524:93;;53638:56;53688:5;53638:56;;;53714:7;53742:1;53727:260;53752:6;53749:1;53746:13;53727:260;;;53819:6;53813:13;53840:63;53899:3;53884:13;53840:63;;;53833:70;;53920:60;53973:6;53920:60;;;53910:70;-1:-1;;53774:1;53767:9;53727:260;;54017:94;54084:21;54099:5;54084:21;;54457:148;54556:43;54575:23;54592:5;54575:23;;;54556:43;;54612:152;54713:45;54733:24;54751:5;54733:24;;54771:356;;54899:38;54931:5;54899:38;;;54949:88;55030:6;55025:3;54949:88;;;54942:95;;55042:52;55087:6;55082:3;55075:4;55068:5;55064:16;55042:52;;;55106:16;;;;;54879:248;-1:-1;;54879:248;55134:331;;55238:34;55266:5;55238:34;;;55284:68;55345:6;55340:3;55284:68;;;55277:75;;55357:52;55402:6;55397:3;55390:4;55383:5;55379:16;55357:52;;;55430:29;55452:6;55430:29;;;55421:39;;;;55218:247;-1:-1;;;55218:247;55472:198;55591:73;55658:5;55591:73;;57340:152;57435:51;57480:5;57435:51;;57499:166;57601:58;57653:5;57601:58;;57839:146;57932:47;57973:5;57932:47;;58347:375;;58507:67;58571:2;58566:3;58507:67;;;58607:34;58587:55;;58676:8;58671:2;58662:12;;58655:30;58713:2;58704:12;;58493:229;-1:-1;;58493:229;58731:332;;58891:67;58955:2;58950:3;58891:67;;;58991:34;58971:55;;59054:2;59045:12;;58877:186;-1:-1;;58877:186;59072:331;;59232:67;59296:2;59291:3;59232:67;;;59332:33;59312:54;;59394:2;59385:12;;59218:185;-1:-1;;59218:185;59472:1688;59699:23;;59472:1688;;59625:6;59616:16;;;59728:85;59620:3;59699:23;59728:85;;;59647:172;59897:4;59890:5;59886:16;59880:23;59909:71;59974:4;59969:3;59965:14;59951:12;59909:71;;;59829:157;60061:4;60054:5;60050:16;60044:23;60073:127;60194:4;60189:3;60185:14;60171:12;60073:127;;;59996:210;60290:4;60283:5;60279:16;60273:23;60302:71;60367:4;60362:3;60358:14;60344:12;60302:71;;;60216:163;60465:4;60458:5;60454:16;60448:23;60477:71;60542:4;60537:3;60533:14;60519:12;60477:71;;;60389:165;60635:4;60628:5;60624:16;60618:23;60647:73;60712:6;60707:3;60703:16;60689:12;60647:73;;;60564:162;60809:4;60802:5;60798:16;60792:23;60821:73;60886:6;60881:3;60877:16;60863:12;60821:73;;;60736:164;60973:4;60966:5;60962:16;60956:23;61027:3;61021:4;61017:14;61008:6;61003:3;60999:16;60992:40;61047:75;61117:4;61103:12;61047:75;;;61039:83;59598:1562;-1:-1;;;;;59598:1562;61226:861;61439:23;;61373:4;61364:14;;;61468:65;61368:3;61439:23;61468:65;;;61393:146;61620:4;61613:5;61609:16;61603:23;61632:92;61718:4;61713:3;61709:14;61695:12;61632:92;;;61549:181;61802:4;61795:5;61791:16;61785:23;61814:89;61897:4;61892:3;61888:14;61874:12;61814:89;;;61740:169;61983:4;61976:5;61972:16;61966:23;61995:71;62060:4;62055:3;62051:14;62037:12;61995:71;;;61919:153;61346:741;;;;62143:319;62349:23;;62282:4;62273:14;;;62378:63;62277:3;62349:23;62378:63;;63274:636;63483:23;;63415:4;63406:14;;;63512:63;63410:3;63483:23;63512:63;;;63435:146;63656:4;63649:5;63645:16;63639:23;63668:63;63725:4;63720:3;63716:14;63702:12;63668:63;;;63591:146;63816:4;63809:5;63805:16;63799:23;63828:61;63883:4;63878:3;63874:14;63860:12;63828:61;;64648:499;64862:23;;64795:4;64786:14;;;64891:71;64790:3;64862:23;64891:71;;;64815:153;65043:4;65036:5;65032:16;65026:23;65055:71;65120:4;65115:3;65111:14;65097:12;65055:71;;65748:2312;65960:23;;65891:6;65882:16;;;65989:63;65886:3;65960:23;65989:63;;;65913:145;66136:4;66129:5;66125:16;66119:23;66148:57;66199:4;66194:3;66190:14;66176:12;66148:57;;;66068:143;66288:4;66281:5;66277:16;66271:23;66300:113;66407:4;66402:3;66398:14;66384:12;66300:113;;;66221:198;66493:4;66486:5;66482:16;66476:23;66505:107;66606:4;66601:3;66597:14;66583:12;66505:107;;;66429:189;66698:4;66691:5;66687:16;66681:23;66710:85;66789:4;66784:3;66780:14;66766:12;66710:85;;;66628:173;66884:4;66877:5;66873:16;66867:23;66896:90;66978:6;66973:3;66969:16;66955:12;66896:90;;;66811:181;67074:4;67067:5;67063:16;67057:23;67086:107;67185:6;67180:3;67176:16;67162:12;67086:107;;;67002:197;67292:4;67285:5;67281:16;67275:23;67304:107;67403:6;67398:3;67394:16;67380:12;67304:107;;;67209:208;67498:6;67491:5;67487:18;67481:25;67512:105;67609:6;67604:3;67600:16;67586:12;67512:105;;;67427:196;67704:6;67697:5;67693:18;67687:25;67718:105;67815:6;67810:3;67806:16;67792:12;67718:105;;;67633:196;67918:6;67911:5;67907:18;67901:25;67932:107;68031:6;68026:3;68022:16;68008:12;67932:107;;68110:465;68313:23;;68247:4;68238:14;;;68342:57;68242:3;68313:23;68342:57;;;68267:138;68479:4;68472:5;68468:16;68462:23;68491:63;68548:4;68543:3;68539:14;68525:12;68491:63;;70441:1340;70668:23;;70592:4;70583:14;;;70697:61;70587:3;70668:23;70697:61;;;70612:152;70853:4;70846:5;70842:16;70836:23;70865:61;70920:4;70915:3;70911:14;70897:12;70865:61;;;70774:158;71016:4;71009:5;71005:16;70999:23;71028:61;71083:4;71078:3;71074:14;71060:12;71028:61;;;70942:153;71180:4;71173:5;71169:16;71163:23;71192:61;71247:4;71242:3;71238:14;71224:12;71192:61;;;71105:154;71355:4;71348:5;71344:16;71338:23;71367:61;71422:4;71417:3;71413:14;71399:12;71367:61;;;71269:165;71518:4;71511:5;71507:16;71501:23;71530:61;71585:4;71580:3;71576:14;71562:12;71530:61;;;71444:153;71685:4;71678:5;71674:16;71668:23;71697:63;71754:4;71749:3;71745:14;71731:12;71697:63;;71788:123;71888:18;;71882:29;71971:484;72186:23;;72118:4;72109:14;;;72215:63;72113:3;72186:23;72215:63;;74357:465;74560:23;;74494:4;74485:14;;;74589:57;74489:3;74560:23;74589:57;;75330:103;75403:24;75421:5;75403:24;;75440:103;75513:24;75531:5;75513:24;;75668:103;75741:24;75759:5;75741:24;;76144:100;76215:23;76232:5;76215:23;;76251:100;76322:23;76339:5;76322:23;;76358:100;76429:23;76446:5;76429:23;;76465:244;;76584:75;76655:3;76646:6;76584:75;;;-1:-1;76681:2;76672:12;;76572:137;-1:-1;76572:137;76716:553;;76932:93;77021:3;77012:6;76932:93;;;76925:100;;77036:73;77105:3;77096:6;77036:73;;;77131:1;77126:3;77122:11;77115:18;;77151:93;77240:3;77231:6;77151:93;;77276:213;77394:2;77379:18;;77408:71;77383:9;77452:6;77408:71;;77496:312;77636:2;77621:18;;77650:71;77625:9;77694:6;77650:71;;;77732:66;77794:2;77783:9;77779:18;77770:6;77732:66;;77815:361;77983:2;77997:47;;;77968:18;;78058:108;77968:18;78152:6;78058:108;;78183:1283;78657:3;78672:47;;;78642:19;;78733:108;78642:19;78827:6;78733:108;;;78725:116;;78889:9;78883:4;78879:20;78874:2;78863:9;78859:18;78852:48;78914:108;79017:4;79008:6;78914:108;;;78906:116;;79070:9;79064:4;79060:20;79055:2;79044:9;79040:18;79033:48;79095:144;79234:4;79225:6;79095:144;;;79087:152;;79287:9;79281:4;79277:20;79272:2;79261:9;79257:18;79250:48;79312:144;79451:4;79442:6;79312:144;;;79304:152;78628:838;-1:-1;;;;;;78628:838;79473:201;79585:2;79570:18;;79599:65;79574:9;79637:6;79599:65;;79681:285;79835:2;79820:18;;79849:107;79824:9;79929:6;79849:107;;80777:233;80905:2;80890:18;;80919:81;80894:9;80973:6;80919:81;;81017:301;81155:2;81169:47;;;81140:18;;81230:78;81140:18;81294:6;81230:78;;81325:407;81516:2;81530:47;;;81501:18;;81591:131;81501:18;81591:131;;81739:407;81930:2;81944:47;;;81915:18;;82005:131;81915:18;82005:131;;82153:407;82344:2;82358:47;;;82329:18;;82419:131;82329:18;82419:131;;82567:305;82731:2;82716:18;;82745:117;82720:9;82835:6;82745:117;;82879:508;83117:2;83102:18;;83131:117;83106:9;83221:6;83131:117;;;83259:118;83373:2;83362:9;83358:18;83349:6;83259:118;;83394:309;83560:2;83545:18;;83574:119;83549:9;83666:6;83574:119;;83710:314;83878:3;83863:19;;83893:121;83867:9;83987:6;83893:121;;84031:934;84425:3;84410:19;;84440:121;84414:9;84534:6;84440:121;;;84572;84688:3;84677:9;84673:19;84664:6;84572:121;;;84704;84820:3;84809:9;84805:19;84796:6;84704:121;;;84836:119;84950:3;84939:9;84935:19;84926:6;84836:119;;84972:301;85134:2;85119:18;;85148:115;85123:9;85236:6;85148:115;;85908:330;86084:3;86069:19;;86099:129;86073:9;86201:6;86099:129;;86245:271;86392:2;86377:18;;86406:100;86381:9;86479:6;86406:100;;86523:390;86698:2;86683:18;;86712:100;86687:9;86785:6;86712:100;;;86823:80;86899:2;86888:9;86884:18;86875:6;86823:80;;86920:509;87123:2;87108:18;;87137:100;87112:9;87210:6;87137:100;;;87248:80;87324:2;87313:9;87309:18;87300:6;87248:80;;;87339;87415:2;87404:9;87400:18;87391:6;87339:80;;87436:497;87633:2;87618:18;;87647:100;87622:9;87720:6;87647:100;;;87758:80;87834:2;87823:9;87819:18;87810:6;87758:80;;;87849:74;87919:2;87908:9;87904:18;87895:6;87849:74;;87940:581;88179:2;88164:18;;88193:100;88168:9;88266:6;88193:100;;;88304:80;88380:2;88369:9;88365:18;88356:6;88304:80;;;88395:116;88507:2;88496:9;88492:18;88483:6;88395:116;;88528:1707;89106:3;89091:19;;89121:100;89095:9;89194:6;89121:100;;;89232:80;89308:2;89297:9;89293:18;89284:6;89232:80;;;89323:102;89421:2;89410:9;89406:18;89397:6;89323:102;;;89436:105;89537:2;89526:9;89522:18;89513:6;89436:105;;;89552:127;89674:3;89663:9;89659:19;89650:6;89552:127;;;89690;89812:3;89801:9;89797:19;89788:6;89690:127;;;89828:81;89904:3;89893:9;89889:19;89880:6;89828:81;;;89920;89996:3;89985:9;89981:19;89972:6;89920:81;;;90012:127;90134:3;90123:9;90119:19;90110:6;90012:127;;;90150:75;90220:3;90209:9;90205:19;90196:6;90150:75;;;89077:1158;;;;;;;;;;;;;;90242:981;90633:2;90618:18;;90647:100;90622:9;90720:6;90647:100;;;90795:9;90789:4;90785:20;90780:2;90769:9;90765:18;90758:48;90820:154;90969:4;90960:6;90820:154;;;90812:162;;91022:9;91016:4;91012:20;91007:2;90996:9;90992:18;90985:48;91047:166;91208:4;91199:6;91047:166;;91230:462;91441:2;91426:18;;91455:100;91430:9;91528:6;91455:100;;;91566:116;91678:2;91667:9;91663:18;91654:6;91566:116;;92146:482;92367:2;92352:18;;92381:100;92356:9;92454:6;92381:100;;92635:482;92856:2;92841:18;;92870:100;92845:9;92943:6;92870:100;;;92981:126;93103:2;93092:9;93088:18;93079:6;92981:126;;93124:602;93373:3;93358:19;;93388:100;93362:9;93461:6;93388:100;;;93499:126;93621:2;93610:9;93606:18;93597:6;93499:126;;;93636:80;93712:2;93701:9;93697:18;93688:6;93636:80;;93733:810;94054:3;94039:19;;94069:100;94043:9;94142:6;94069:100;;;94180:126;94302:2;94291:9;94287:18;94278:6;94180:126;;;94317:80;94393:2;94382:9;94378:18;94369:6;94317:80;;;94408:125;94528:3;94517:9;94513:19;94504:6;94408:125;;94550:722;94827:3;94812:19;;94842:100;94816:9;94915:6;94842:100;;;94953:126;95075:2;95064:9;95060:18;95051:6;94953:126;;;95090:80;95166:2;95155:9;95151:18;95142:6;95090:80;;;95181:81;95257:3;95246:9;95242:19;95233:6;95181:81;;95772:390;95947:2;95932:18;;95961:100;95936:9;96034:6;95961:100;;;96072:80;96148:2;96137:9;96133:18;96124:6;96072:80;;96169:509;96372:2;96357:18;;96386:100;96361:9;96459:6;96386:100;;;96497:80;96573:2;96562:9;96558:18;96549:6;96497:80;;96685:497;96882:2;96867:18;;96896:100;96871:9;96969:6;96896:100;;;97007:80;97083:2;97072:9;97068:18;97059:6;97007:80;;97189:559;97417:2;97402:18;;97431:100;97406:9;97504:6;97431:100;;;97542:80;97618:2;97607:9;97603:18;97594:6;97542:80;;98315:601;98564:2;98549:18;;98578:100;98553:9;98651:6;98578:100;;;98689:80;98765:2;98754:9;98750:18;98741:6;98689:80;;;98780:126;98902:2;98891:9;98887:18;98878:6;98780:126;;98923:509;99126:2;99111:18;;99140:100;99115:9;99213:6;99140:100;;;99251:80;99327:2;99316:9;99312:18;99303:6;99251:80;;;99342;99418:2;99407:9;99403:18;99394:6;99342:80;;99439:321;99611:2;99596:18;;99625:125;99600:9;99723:6;99625:125;;100934:301;101096:2;101081:18;;101110:115;101085:9;101198:6;101110:115;;101242:213;101360:2;101345:18;;101374:71;101349:9;101418:6;101374:71;;101462:256;101524:2;101518:9;101550:17;;;101625:18;101610:34;;101646:22;;;101607:62;101604:2;;;101682:1;101679;101672:12;101604:2;101698;101691:22;101502:216;;-1:-1;101502:216;101725:304;;101884:18;101876:6;101873:30;101870:2;;;101916:1;101913;101906:12;101870:2;-1:-1;101951:4;101939:17;;;102004:15;;101807:222;104008:317;;104147:18;104139:6;104136:30;104133:2;;;104179:1;104176;104169:12;104133:2;-1:-1;104310:4;104246;104223:17;;;;-1:-1;;104219:33;104300:15;;104070:255;104332:151;104456:4;104447:14;;104404:79;105360:137;105463:12;;105434:63;107456:178;107574:19;;;107623:4;107614:14;;107567:67;109167:91;;109229:24;109247:5;109229:24;;109265:85;109331:13;109324:21;;109307:43;109357:144;109429:66;109418:78;;109401:100;109508:72;109570:5;109553:27;109587:127;;109685:24;109703:5;109685:24;;110087:138;110165:5;110171:49;110165:5;110171:49;;110232:152;110317:5;110323:56;110317:5;110323:56;;110544:130;110618:5;110624:45;110618:5;110624:45;;110681:109;110754:30;110743:42;;110726:64;110797:113;110870:34;110859:46;;110842:68;110917:121;110990:42;110979:54;;110962:76;111124:88;111196:10;111185:22;;111168:44;111219:96;111291:18;111280:30;;111263:52;111322:104;111394:26;111383:38;;111366:60;112729:138;;112822:40;112856:5;112822:40;;112874:152;;112974:47;113015:5;112974:47;;113186:130;;113275:36;113305:5;113275:36;;113324:145;113405:6;113400:3;113395;113382:30;-1:-1;113461:1;113443:16;;113436:27;113375:94;113478:268;113543:1;113550:101;113564:6;113561:1;113558:13;113550:101;;;113631:11;;;113625:18;113612:11;;;113605:39;113586:2;113579:10;113550:101;;;113666:6;113663:1;113660:13;113657:2;;;-1:-1;;113731:1;113713:16;;113706:27;113527:219;113915:97;114003:2;113983:14;-1:-1;;113979:28;;113963:49;114020:107;114105:1;114098:5;114095:12;114085:2;;114111:9;114134:114;114226:1;114219:5;114216:12;114206:2;;114232:9;114373:103;114454:1;114447:5;114444:12;114434:2;;114460:9;114483:117;114552:24;114570:5;114552:24;;;114545:5;114542:35;114532:2;;114591:1;114588;114581:12;114607:111;114673:21;114688:5;114673:21;;114725:189;114830:60;114884:5;114830:60;;115437:110;115522:1;115515:5;115512:12;115502:2;;115538:1;115535;115528:12;115554:117;115646:1;115639:5;115636:12;115626:2;;115662:1;115659;115652:12;115799:106;115880:1;115873:5;115870:12;115860:2;;115896:1;115893;115886:12;115912:117;115981:24;115999:5;115981:24;;116036:117;116105:24;116123:5;116105:24;;116160:117;116229:24;116247:5;116229:24;;116284:115;116352:23;116369:5;116352:23;;116406:115;116474:23;116491:5;116474:23;;116528:115;116596:23;116613:5;116596:23;",
  "source": "/*\n\n    Copyright 2019 dYdX Trading Inc.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { DolomiteMargin } from \"../protocol/DolomiteMargin.sol\";\n\nimport { GettersImpl } from \"../protocol/impl/GettersImpl.sol\";\n\nimport { IOracleSentinel } from \"../protocol/interfaces/IOracleSentinel.sol\";\n\nimport { Account } from \"../protocol/lib/Account.sol\";\nimport { Decimal } from \"../protocol/lib/Decimal.sol\";\nimport { Interest } from \"../protocol/lib/Interest.sol\";\nimport { Monetary } from \"../protocol/lib/Monetary.sol\";\nimport { Storage } from \"../protocol/lib/Storage.sol\";\nimport { Types } from \"../protocol/lib/Types.sol\";\n\nimport { TestOperationImpl } from \"./TestOperationImpl.sol\";\n\n\ncontract TestDolomiteMargin is DolomiteMargin {\n\n    // ============ Constructor ============\n\n    constructor (\n        Storage.RiskLimits memory riskLimits,\n        Decimal.D256 memory marginRatio,\n        Decimal.D256 memory liquidationSpread,\n        Decimal.D256 memory earningsRate,\n        Monetary.Value memory minBorrowedValue,\n        uint256 accountMaxNumberOfMarketsWithBalances,\n        IOracleSentinel oracleSentinel,\n        uint256 callbackGasLimit\n    )\n        public\n        DolomiteMargin(\n            riskLimits,\n            marginRatio,\n            liquidationSpread,\n            earningsRate,\n            minBorrowedValue,\n            accountMaxNumberOfMarketsWithBalances,\n            oracleSentinel,\n            callbackGasLimit\n        )\n    {}\n\n    // ============ Testing Functions ============\n\n    function setAccountBalance(\n        Account.Info memory account,\n        uint256 market,\n        Types.Par memory newPar\n    )\n        public\n    {\n        GettersImpl._requireValidMarket(g_state, market);\n        TestOperationImpl.setPar(g_state, account, market, newPar);\n    }\n\n    function setAccountStatus(\n        Account.Info memory account,\n        Account.Status status\n    )\n        public\n    {\n        g_state.accounts[account.owner][account.number].status = status;\n    }\n\n    function setMarketIndex(\n        uint256 market,\n        Interest.Index memory index\n    )\n        public\n    {\n        Interest.Index memory oldIndex = g_state.markets[market].index;\n\n        if (index.borrow == 0) {\n            index.borrow = oldIndex.borrow;\n        }\n        if (index.supply == 0) {\n            index.supply = oldIndex.supply;\n        }\n\n        g_state.markets[market].index = index;\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
    "exportedSymbols": {
      "TestDolomiteMargin": [
        33481
      ]
    },
    "id": 33482,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 33327,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:118"
      },
      {
        "id": 33328,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:118"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
        "file": "../protocol/DolomiteMargin.sol",
        "id": 33330,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 17220,
        "src": "662:64:118",
        "symbolAliases": [
          {
            "foreign": 33329,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/GettersImpl.sol",
        "file": "../protocol/impl/GettersImpl.sol",
        "id": 33332,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 21108,
        "src": "728:63:118",
        "symbolAliases": [
          {
            "foreign": 33331,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol",
        "file": "../protocol/interfaces/IOracleSentinel.sol",
        "id": 33334,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 24818,
        "src": "793:77:118",
        "symbolAliases": [
          {
            "foreign": 33333,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../protocol/lib/Account.sol",
        "id": 33336,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 24886,
        "src": "872:54:118",
        "symbolAliases": [
          {
            "foreign": 33335,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../protocol/lib/Decimal.sol",
        "id": 33338,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 26024,
        "src": "927:54:118",
        "symbolAliases": [
          {
            "foreign": 33337,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../protocol/lib/Interest.sol",
        "id": 33340,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 27751,
        "src": "982:56:118",
        "symbolAliases": [
          {
            "foreign": 33339,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../protocol/lib/Monetary.sol",
        "id": 33342,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 27761,
        "src": "1039:56:118",
        "symbolAliases": [
          {
            "foreign": 33341,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../protocol/lib/Storage.sol",
        "id": 33344,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 30712,
        "src": "1096:54:118",
        "symbolAliases": [
          {
            "foreign": 33343,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../protocol/lib/Types.sol",
        "id": 33346,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 31362,
        "src": "1151:50:118",
        "symbolAliases": [
          {
            "foreign": 33345,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol",
        "file": "./TestOperationImpl.sol",
        "id": 33348,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 35782,
        "src": "1203:60:118",
        "symbolAliases": [
          {
            "foreign": 33347,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 33349,
              "name": "DolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 17219,
              "src": "1297:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DolomiteMargin_$17219",
                "typeString": "contract DolomiteMargin"
              }
            },
            "id": 33350,
            "nodeType": "InheritanceSpecifier",
            "src": "1297:14:118"
          }
        ],
        "contractDependencies": [
          17105,
          17219,
          18062,
          18070,
          18108,
          18184,
          24693,
          37109,
          37483,
          38092
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 33481,
        "linearizedBaseContracts": [
          33481,
          17219,
          18184,
          18108,
          18062,
          17105,
          38092,
          37483,
          37109,
          18070,
          24693
        ],
        "name": "TestDolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 33379,
              "nodeType": "Block",
              "src": "2034:2:118",
              "statements": []
            },
            "documentation": null,
            "id": 33380,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 33369,
                    "name": "riskLimits",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33352,
                    "src": "1788:10:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                      "typeString": "struct Storage.RiskLimits memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33370,
                    "name": "marginRatio",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33354,
                    "src": "1812:11:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33371,
                    "name": "liquidationSpread",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33356,
                    "src": "1837:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33372,
                    "name": "earningsRate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33358,
                    "src": "1868:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33373,
                    "name": "minBorrowedValue",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33360,
                    "src": "1894:16:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                      "typeString": "struct Monetary.Value memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33374,
                    "name": "accountMaxNumberOfMarketsWithBalances",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33362,
                    "src": "1924:37:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33375,
                    "name": "oracleSentinel",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33364,
                    "src": "1975:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33376,
                    "name": "callbackGasLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33366,
                    "src": "2003:16:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 33377,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 33368,
                  "name": "DolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 17219,
                  "src": "1760:14:118",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_DolomiteMargin_$17219_$",
                    "typeString": "type(contract DolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1760:269:118"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33352,
                  "name": "riskLimits",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1387:36:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                    "typeString": "struct Storage.RiskLimits"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33351,
                    "name": "Storage.RiskLimits",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28725,
                    "src": "1387:18:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage_ptr",
                      "typeString": "struct Storage.RiskLimits"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33354,
                  "name": "marginRatio",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1433:31:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33353,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1433:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33356,
                  "name": "liquidationSpread",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1474:37:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33355,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1474:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33358,
                  "name": "earningsRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1521:32:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33357,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1521:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33360,
                  "name": "minBorrowedValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1563:38:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                    "typeString": "struct Monetary.Value"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33359,
                    "name": "Monetary.Value",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27759,
                    "src": "1563:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_storage_ptr",
                      "typeString": "struct Monetary.Value"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33362,
                  "name": "accountMaxNumberOfMarketsWithBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1611:45:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1611:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33364,
                  "name": "oracleSentinel",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1666:30:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                    "typeString": "contract IOracleSentinel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33363,
                    "name": "IOracleSentinel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24817,
                    "src": "1666:15:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33366,
                  "name": "callbackGasLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1706:24:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1377:359:118"
            },
            "returnParameters": {
              "id": 33378,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2034:0:118"
            },
            "scope": 33481,
            "src": "1365:671:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33405,
              "nodeType": "Block",
              "src": "2240:133:118",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33392,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2282:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33393,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33384,
                        "src": "2291:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 33389,
                        "name": "GettersImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21107,
                        "src": "2250:11:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_GettersImpl_$21107_$",
                          "typeString": "type(library GettersImpl)"
                        }
                      },
                      "id": 33391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_requireValidMarket",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21000,
                      "src": "2250:31:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view"
                      }
                    },
                    "id": 33394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2250:48:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33395,
                  "nodeType": "ExpressionStatement",
                  "src": "2250:48:118"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33399,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2333:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33400,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33382,
                        "src": "2342:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33401,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33384,
                        "src": "2351:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33402,
                        "name": "newPar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33386,
                        "src": "2359:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 33396,
                        "name": "TestOperationImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35781,
                        "src": "2308:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TestOperationImpl_$35781_$",
                          "typeString": "type(library TestOperationImpl)"
                        }
                      },
                      "id": 33398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 35780,
                      "src": "2308:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                      }
                    },
                    "id": 33403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2308:58:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33404,
                  "nodeType": "ExpressionStatement",
                  "src": "2308:58:118"
                }
              ]
            },
            "documentation": null,
            "id": 33406,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAccountBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33382,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2130:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33381,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2130:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33384,
                  "name": "market",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2167:14:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2167:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33386,
                  "name": "newPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2191:23:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                    "typeString": "struct Types.Par"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33385,
                    "name": "Types.Par",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 30890,
                    "src": "2191:9:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                      "typeString": "struct Types.Par"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2120:100:118"
            },
            "returnParameters": {
              "id": 33388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2240:0:118"
            },
            "scope": 33481,
            "src": "2094:279:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33426,
              "nodeType": "Block",
              "src": "2498:80:118",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33413,
                              "name": "g_state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18069,
                              "src": "2508:7:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage",
                                "typeString": "struct Storage.State storage ref"
                              }
                            },
                            "id": 33419,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "accounts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28741,
                            "src": "2508:16:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Storage_$24862_storage_$_$",
                              "typeString": "mapping(address => mapping(uint256 => struct Account.Storage storage ref))"
                            }
                          },
                          "id": 33420,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33415,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33408,
                              "src": "2525:7:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 33416,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "2525:13:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2508:31:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Storage_$24862_storage_$",
                            "typeString": "mapping(uint256 => struct Account.Storage storage ref)"
                          }
                        },
                        "id": 33421,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 33417,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33408,
                            "src": "2540:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                              "typeString": "struct Account.Info memory"
                            }
                          },
                          "id": 33418,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24850,
                          "src": "2540:14:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2508:47:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$24862_storage",
                          "typeString": "struct Account.Storage storage ref"
                        }
                      },
                      "id": 33422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24853,
                      "src": "2508:54:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 33423,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33410,
                      "src": "2565:6:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "2508:63:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    }
                  },
                  "id": 33425,
                  "nodeType": "ExpressionStatement",
                  "src": "2508:63:118"
                }
              ]
            },
            "documentation": null,
            "id": 33427,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAccountStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33408,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 33427,
                  "src": "2414:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33407,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2414:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33410,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 33427,
                  "src": "2451:21:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$24846",
                    "typeString": "enum Account.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33409,
                    "name": "Account.Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24846,
                    "src": "2451:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2404:74:118"
            },
            "returnParameters": {
              "id": 33412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:118"
            },
            "scope": 33481,
            "src": "2379:199:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33479,
              "nodeType": "Block",
              "src": "2694:302:118",
              "statements": [
                {
                  "assignments": [
                    33437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33437,
                      "name": "oldIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 33479,
                      "src": "2704:30:118",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33436,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "2704:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33443,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 33438,
                          "name": "g_state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18069,
                          "src": "2737:7:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage",
                            "typeString": "struct Storage.State storage ref"
                          }
                        },
                        "id": 33439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "markets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28731,
                        "src": "2737:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Market_$28689_storage_$",
                          "typeString": "mapping(uint256 => struct Storage.Market storage ref)"
                        }
                      },
                      "id": 33441,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 33440,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33429,
                        "src": "2753:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2737:23:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Market_$28689_storage",
                        "typeString": "struct Storage.Market storage ref"
                      }
                    },
                    "id": 33442,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28674,
                    "src": "2737:29:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage",
                      "typeString": "struct Interest.Index storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2704:62:118"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    },
                    "id": 33447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33444,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33431,
                        "src": "2781:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      "id": 33445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "borrow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27466,
                      "src": "2781:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33446,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2797:1:118",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2781:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33456,
                  "nodeType": "IfStatement",
                  "src": "2777:78:118",
                  "trueBody": {
                    "id": 33455,
                    "nodeType": "Block",
                    "src": "2800:55:118",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33448,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33431,
                              "src": "2814:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33450,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "borrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27466,
                            "src": "2814:12:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33451,
                              "name": "oldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33437,
                              "src": "2829:8:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33452,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "borrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27466,
                            "src": "2829:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "2814:30:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 33454,
                        "nodeType": "ExpressionStatement",
                        "src": "2814:30:118"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    },
                    "id": 33460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33457,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33431,
                        "src": "2868:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      "id": 33458,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27468,
                      "src": "2868:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2884:1:118",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2868:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33469,
                  "nodeType": "IfStatement",
                  "src": "2864:78:118",
                  "trueBody": {
                    "id": 33468,
                    "nodeType": "Block",
                    "src": "2887:55:118",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33461,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33431,
                              "src": "2901:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33463,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "supply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27468,
                            "src": "2901:12:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33464,
                              "name": "oldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33437,
                              "src": "2916:8:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33465,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27468,
                            "src": "2916:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "2901:30:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 33467,
                        "nodeType": "ExpressionStatement",
                        "src": "2901:30:118"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 33470,
                            "name": "g_state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18069,
                            "src": "2952:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$28760_storage",
                              "typeString": "struct Storage.State storage ref"
                            }
                          },
                          "id": 33473,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "markets",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28731,
                          "src": "2952:15:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Market_$28689_storage_$",
                            "typeString": "mapping(uint256 => struct Storage.Market storage ref)"
                          }
                        },
                        "id": 33474,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 33472,
                          "name": "market",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33429,
                          "src": "2968:6:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2952:23:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Market_$28689_storage",
                          "typeString": "struct Storage.Market storage ref"
                        }
                      },
                      "id": 33475,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28674,
                      "src": "2952:29:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_storage",
                        "typeString": "struct Interest.Index storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 33476,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33431,
                      "src": "2984:5:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index memory"
                      }
                    },
                    "src": "2952:37:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage",
                      "typeString": "struct Interest.Index storage ref"
                    }
                  },
                  "id": 33478,
                  "nodeType": "ExpressionStatement",
                  "src": "2952:37:118"
                }
              ]
            },
            "documentation": null,
            "id": 33480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setMarketIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33429,
                  "name": "market",
                  "nodeType": "VariableDeclaration",
                  "scope": 33480,
                  "src": "2617:14:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33428,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33431,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 33480,
                  "src": "2641:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33430,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "2641:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2607:67:118"
            },
            "returnParameters": {
              "id": 33433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2694:0:118"
            },
            "scope": 33481,
            "src": "2584:412:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 33482,
        "src": "1266:1732:118"
      }
    ],
    "src": "603:2396:118"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestDolomiteMargin.sol",
    "exportedSymbols": {
      "TestDolomiteMargin": [
        33481
      ]
    },
    "id": 33482,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 33327,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "603:23:118"
      },
      {
        "id": 33328,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "627:33:118"
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/DolomiteMargin.sol",
        "file": "../protocol/DolomiteMargin.sol",
        "id": 33330,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 17220,
        "src": "662:64:118",
        "symbolAliases": [
          {
            "foreign": 33329,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/GettersImpl.sol",
        "file": "../protocol/impl/GettersImpl.sol",
        "id": 33332,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 21108,
        "src": "728:63:118",
        "symbolAliases": [
          {
            "foreign": 33331,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol",
        "file": "../protocol/interfaces/IOracleSentinel.sol",
        "id": 33334,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 24818,
        "src": "793:77:118",
        "symbolAliases": [
          {
            "foreign": 33333,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../protocol/lib/Account.sol",
        "id": 33336,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 24886,
        "src": "872:54:118",
        "symbolAliases": [
          {
            "foreign": 33335,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../protocol/lib/Decimal.sol",
        "id": 33338,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 26024,
        "src": "927:54:118",
        "symbolAliases": [
          {
            "foreign": 33337,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../protocol/lib/Interest.sol",
        "id": 33340,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 27751,
        "src": "982:56:118",
        "symbolAliases": [
          {
            "foreign": 33339,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../protocol/lib/Monetary.sol",
        "id": 33342,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 27761,
        "src": "1039:56:118",
        "symbolAliases": [
          {
            "foreign": 33341,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../protocol/lib/Storage.sol",
        "id": 33344,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 30712,
        "src": "1096:54:118",
        "symbolAliases": [
          {
            "foreign": 33343,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../protocol/lib/Types.sol",
        "id": 33346,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 31362,
        "src": "1151:50:118",
        "symbolAliases": [
          {
            "foreign": 33345,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/testing/TestOperationImpl.sol",
        "file": "./TestOperationImpl.sol",
        "id": 33348,
        "nodeType": "ImportDirective",
        "scope": 33482,
        "sourceUnit": 35782,
        "src": "1203:60:118",
        "symbolAliases": [
          {
            "foreign": 33347,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 33349,
              "name": "DolomiteMargin",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 17219,
              "src": "1297:14:118",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_DolomiteMargin_$17219",
                "typeString": "contract DolomiteMargin"
              }
            },
            "id": 33350,
            "nodeType": "InheritanceSpecifier",
            "src": "1297:14:118"
          }
        ],
        "contractDependencies": [
          17105,
          17219,
          18062,
          18070,
          18108,
          18184,
          24693,
          37109,
          37483,
          38092
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 33481,
        "linearizedBaseContracts": [
          33481,
          17219,
          18184,
          18108,
          18062,
          17105,
          38092,
          37483,
          37109,
          18070,
          24693
        ],
        "name": "TestDolomiteMargin",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 33379,
              "nodeType": "Block",
              "src": "2034:2:118",
              "statements": []
            },
            "documentation": null,
            "id": 33380,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 33369,
                    "name": "riskLimits",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33352,
                    "src": "1788:10:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                      "typeString": "struct Storage.RiskLimits memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33370,
                    "name": "marginRatio",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33354,
                    "src": "1812:11:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33371,
                    "name": "liquidationSpread",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33356,
                    "src": "1837:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33372,
                    "name": "earningsRate",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33358,
                    "src": "1868:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33373,
                    "name": "minBorrowedValue",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33360,
                    "src": "1894:16:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                      "typeString": "struct Monetary.Value memory"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33374,
                    "name": "accountMaxNumberOfMarketsWithBalances",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33362,
                    "src": "1924:37:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33375,
                    "name": "oracleSentinel",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33364,
                    "src": "1975:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "id": 33376,
                    "name": "callbackGasLimit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 33366,
                    "src": "2003:16:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 33377,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 33368,
                  "name": "DolomiteMargin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 17219,
                  "src": "1760:14:118",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_DolomiteMargin_$17219_$",
                    "typeString": "type(contract DolomiteMargin)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1760:269:118"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33352,
                  "name": "riskLimits",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1387:36:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RiskLimits_$28725_memory_ptr",
                    "typeString": "struct Storage.RiskLimits"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33351,
                    "name": "Storage.RiskLimits",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28725,
                    "src": "1387:18:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RiskLimits_$28725_storage_ptr",
                      "typeString": "struct Storage.RiskLimits"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33354,
                  "name": "marginRatio",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1433:31:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33353,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1433:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33356,
                  "name": "liquidationSpread",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1474:37:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33355,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1474:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33358,
                  "name": "earningsRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1521:32:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                    "typeString": "struct Decimal.D256"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33357,
                    "name": "Decimal.D256",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25950,
                    "src": "1521:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                      "typeString": "struct Decimal.D256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33360,
                  "name": "minBorrowedValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1563:38:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Value_$27759_memory_ptr",
                    "typeString": "struct Monetary.Value"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33359,
                    "name": "Monetary.Value",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27759,
                    "src": "1563:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Value_$27759_storage_ptr",
                      "typeString": "struct Monetary.Value"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33362,
                  "name": "accountMaxNumberOfMarketsWithBalances",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1611:45:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1611:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33364,
                  "name": "oracleSentinel",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1666:30:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                    "typeString": "contract IOracleSentinel"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33363,
                    "name": "IOracleSentinel",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24817,
                    "src": "1666:15:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                      "typeString": "contract IOracleSentinel"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33366,
                  "name": "callbackGasLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 33380,
                  "src": "1706:24:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1706:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1377:359:118"
            },
            "returnParameters": {
              "id": 33378,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2034:0:118"
            },
            "scope": 33481,
            "src": "1365:671:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33405,
              "nodeType": "Block",
              "src": "2240:133:118",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33392,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2282:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33393,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33384,
                        "src": "2291:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 33389,
                        "name": "GettersImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21107,
                        "src": "2250:11:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_GettersImpl_$21107_$",
                          "typeString": "type(library GettersImpl)"
                        }
                      },
                      "id": 33391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_requireValidMarket",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 21000,
                      "src": "2250:31:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view"
                      }
                    },
                    "id": 33394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2250:48:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33395,
                  "nodeType": "ExpressionStatement",
                  "src": "2250:48:118"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 33399,
                        "name": "g_state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18069,
                        "src": "2333:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33400,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33382,
                        "src": "2342:7:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33401,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33384,
                        "src": "2351:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 33402,
                        "name": "newPar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33386,
                        "src": "2359:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage",
                          "typeString": "struct Storage.State storage ref"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                          "typeString": "struct Types.Par memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 33396,
                        "name": "TestOperationImpl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 35781,
                        "src": "2308:17:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_TestOperationImpl_$35781_$",
                          "typeString": "type(library TestOperationImpl)"
                        }
                      },
                      "id": 33398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPar",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 35780,
                      "src": "2308:24:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                      }
                    },
                    "id": 33403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2308:58:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 33404,
                  "nodeType": "ExpressionStatement",
                  "src": "2308:58:118"
                }
              ]
            },
            "documentation": null,
            "id": 33406,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAccountBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33387,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33382,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2130:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33381,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2130:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33384,
                  "name": "market",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2167:14:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33383,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2167:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33386,
                  "name": "newPar",
                  "nodeType": "VariableDeclaration",
                  "scope": 33406,
                  "src": "2191:23:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                    "typeString": "struct Types.Par"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33385,
                    "name": "Types.Par",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 30890,
                    "src": "2191:9:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                      "typeString": "struct Types.Par"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2120:100:118"
            },
            "returnParameters": {
              "id": 33388,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2240:0:118"
            },
            "scope": 33481,
            "src": "2094:279:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33426,
              "nodeType": "Block",
              "src": "2498:80:118",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33413,
                              "name": "g_state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18069,
                              "src": "2508:7:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage",
                                "typeString": "struct Storage.State storage ref"
                              }
                            },
                            "id": 33419,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "accounts",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28741,
                            "src": "2508:16:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_Storage_$24862_storage_$_$",
                              "typeString": "mapping(address => mapping(uint256 => struct Account.Storage storage ref))"
                            }
                          },
                          "id": 33420,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33415,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33408,
                              "src": "2525:7:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            "id": 33416,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24848,
                            "src": "2525:13:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2508:31:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Storage_$24862_storage_$",
                            "typeString": "mapping(uint256 => struct Account.Storage storage ref)"
                          }
                        },
                        "id": 33421,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 33417,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 33408,
                            "src": "2540:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                              "typeString": "struct Account.Info memory"
                            }
                          },
                          "id": 33418,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "number",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24850,
                          "src": "2540:14:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2508:47:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Storage_$24862_storage",
                          "typeString": "struct Account.Storage storage ref"
                        }
                      },
                      "id": 33422,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24853,
                      "src": "2508:54:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 33423,
                      "name": "status",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33410,
                      "src": "2565:6:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "2508:63:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    }
                  },
                  "id": 33425,
                  "nodeType": "ExpressionStatement",
                  "src": "2508:63:118"
                }
              ]
            },
            "documentation": null,
            "id": 33427,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAccountStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33408,
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 33427,
                  "src": "2414:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33407,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "2414:12:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33410,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 33427,
                  "src": "2451:21:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$24846",
                    "typeString": "enum Account.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33409,
                    "name": "Account.Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24846,
                    "src": "2451:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2404:74:118"
            },
            "returnParameters": {
              "id": 33412,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2498:0:118"
            },
            "scope": 33481,
            "src": "2379:199:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 33479,
              "nodeType": "Block",
              "src": "2694:302:118",
              "statements": [
                {
                  "assignments": [
                    33437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 33437,
                      "name": "oldIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 33479,
                      "src": "2704:30:118",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 33436,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "2704:14:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 33443,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 33438,
                          "name": "g_state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18069,
                          "src": "2737:7:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage",
                            "typeString": "struct Storage.State storage ref"
                          }
                        },
                        "id": 33439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "markets",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28731,
                        "src": "2737:15:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Market_$28689_storage_$",
                          "typeString": "mapping(uint256 => struct Storage.Market storage ref)"
                        }
                      },
                      "id": 33441,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 33440,
                        "name": "market",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33429,
                        "src": "2753:6:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2737:23:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Market_$28689_storage",
                        "typeString": "struct Storage.Market storage ref"
                      }
                    },
                    "id": 33442,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28674,
                    "src": "2737:29:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage",
                      "typeString": "struct Interest.Index storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2704:62:118"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    },
                    "id": 33447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33444,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33431,
                        "src": "2781:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      "id": 33445,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "borrow",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27466,
                      "src": "2781:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33446,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2797:1:118",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2781:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33456,
                  "nodeType": "IfStatement",
                  "src": "2777:78:118",
                  "trueBody": {
                    "id": 33455,
                    "nodeType": "Block",
                    "src": "2800:55:118",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33453,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33448,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33431,
                              "src": "2814:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33450,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "borrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27466,
                            "src": "2814:12:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33451,
                              "name": "oldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33437,
                              "src": "2829:8:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33452,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "borrow",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27466,
                            "src": "2829:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "2814:30:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 33454,
                        "nodeType": "ExpressionStatement",
                        "src": "2814:30:118"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    },
                    "id": 33460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 33457,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 33431,
                        "src": "2868:5:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      "id": 33458,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "supply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27468,
                      "src": "2868:12:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 33459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2884:1:118",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2868:17:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 33469,
                  "nodeType": "IfStatement",
                  "src": "2864:78:118",
                  "trueBody": {
                    "id": 33468,
                    "nodeType": "Block",
                    "src": "2887:55:118",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 33466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33461,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33431,
                              "src": "2901:5:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33463,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "supply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27468,
                            "src": "2901:12:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 33464,
                              "name": "oldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 33437,
                              "src": "2916:8:118",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            "id": 33465,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supply",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27468,
                            "src": "2916:15:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "2901:30:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 33467,
                        "nodeType": "ExpressionStatement",
                        "src": "2901:30:118"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 33477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 33470,
                            "name": "g_state",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18069,
                            "src": "2952:7:118",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_State_$28760_storage",
                              "typeString": "struct Storage.State storage ref"
                            }
                          },
                          "id": 33473,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "markets",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 28731,
                          "src": "2952:15:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Market_$28689_storage_$",
                            "typeString": "mapping(uint256 => struct Storage.Market storage ref)"
                          }
                        },
                        "id": 33474,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 33472,
                          "name": "market",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 33429,
                          "src": "2968:6:118",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2952:23:118",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Market_$28689_storage",
                          "typeString": "struct Storage.Market storage ref"
                        }
                      },
                      "id": 33475,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "index",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28674,
                      "src": "2952:29:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_storage",
                        "typeString": "struct Interest.Index storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 33476,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 33431,
                      "src": "2984:5:118",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index memory"
                      }
                    },
                    "src": "2952:37:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage",
                      "typeString": "struct Interest.Index storage ref"
                    }
                  },
                  "id": 33478,
                  "nodeType": "ExpressionStatement",
                  "src": "2952:37:118"
                }
              ]
            },
            "documentation": null,
            "id": 33480,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setMarketIndex",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 33429,
                  "name": "market",
                  "nodeType": "VariableDeclaration",
                  "scope": 33480,
                  "src": "2617:14:118",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 33428,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2617:7:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33431,
                  "name": "index",
                  "nodeType": "VariableDeclaration",
                  "scope": 33480,
                  "src": "2641:27:118",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 33430,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "2641:14:118",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2607:67:118"
            },
            "returnParameters": {
              "id": 33433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2694:0:118"
            },
            "scope": 33481,
            "src": "2584:412:118",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 33482,
        "src": "1266:1732:118"
      }
    ],
    "src": "603:2396:118"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:29.062Z",
  "devdoc": {
    "methods": {
      "isOwner()": {
        "details": "Returns true if the caller is the current owner."
      },
      "operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])": {
        "params": {
          "accounts": "A list of all accounts that will be used in this operation. Cannot contain                  duplicates. In each action, the relevant account will be referred-to by its                  index in the list.",
          "actions": "An ordered list of all actions that will be taken in this operation. The                  actions will be processed in order."
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "setOperators((address,bool)[])": {
        "params": {
          "args": "A list of OperatorArgs which have an address and a boolean. The boolean value              denotes whether to approve (true) or revoke approval (false) for that address."
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "userdoc": {
    "methods": {
      "operate((address,uint256)[],(uint8,uint256,(bool,uint8,uint8,uint256),uint256,uint256,address,uint256,bytes)[])": {
        "notice": "The main entry-point to DolomiteMargin that allows users and contracts to manage accounts. Take one or more actions on one or more accounts. The msg.sender must be the owner or operator of all accounts except for those being liquidated, vaporized, or traded with. One call to operate() is considered a singular \"operation\". Account collateralization is ensured only after the completion of the entire operation."
      },
      "setOperators((address,bool)[])": {
        "notice": "Approves/disapproves any number of operators. An operator is an external address that has the same permissions to manipulate an account as the owner of the account. Operators are simply addresses and therefore may either be externally-owned Ethereum accounts OR smart contracts.     * Operators are also able to act as AutoTrader contracts on behalf of the account owner if the operator is a smart contract and implements the IAutoTrader interface."
      }
    }
  }
}