{
  "_format": "hh-sol-artifact-1",
  "contractName": "ProtocolSettings",
  "sourceName": "contracts/modules/ProtocolSettings.sol",
  "abi": [
    {
      "inputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "prevModuleContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newModuleContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "module",
          "type": "bytes32"
        }
      ],
      "name": "ProtocolModuleContractReplaced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetAffiliateFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetAffiliateTradingTokenFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetBorrowingFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldController",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newController",
          "type": "address"
        }
      ],
      "name": "SetFeesController",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetLendingFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetLiquidationIncentivePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "loanPool",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlying",
          "type": "address"
        }
      ],
      "name": "SetLoanPool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newAddress",
          "type": "address"
        }
      ],
      "name": "SetLockedSOVAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetMaxSwapSize",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMinReferrals",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMinReferrals",
          "type": "uint256"
        }
      ],
      "name": "SetMinReferralsToPayoutAffiliates",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldValue",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newValue",
          "type": "address"
        }
      ],
      "name": "SetPriceFeedContract",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldProtocol",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newProtocol",
          "type": "address"
        }
      ],
      "name": "SetProtocolAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldProtocolToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newProtocolToken",
          "type": "address"
        }
      ],
      "name": "SetProtocolTokenAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldRebatePercent",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRebatePercent",
          "type": "uint256"
        }
      ],
      "name": "SetRebatePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetRolloverBaseReward",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldTokenAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newTokenAddress",
          "type": "address"
        }
      ],
      "name": "SetSOVTokenAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldSovrynSwapContractRegistryAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newSovrynSwapContractRegistryAddress",
          "type": "address"
        }
      ],
      "name": "SetSovrynSwapContractRegistryAddress",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sourceToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "destToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldSpecialRebatesPercent",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newSpecialRebatesPercent",
          "type": "uint256"
        }
      ],
      "name": "SetSpecialRebates",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isActive",
          "type": "bool"
        }
      ],
      "name": "SetSupportedTokens",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetSwapExternalFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldValue",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newValue",
          "type": "address"
        }
      ],
      "name": "SetSwapsImplContract",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "SetTradingFeePercent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldBasisPoint",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBasisPoint",
          "type": "uint256"
        }
      ],
      "name": "SetTradingRebateRewardsBasisPoint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldWethToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newWethToken",
          "type": "address"
        }
      ],
      "name": "SetWrbtcToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "oldFlag",
          "type": "bool"
        },
        {
          "indexed": true,
          "internalType": "bool",
          "name": "newFlag",
          "type": "bool"
        }
      ],
      "name": "TogglePaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawBorrowingFees",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lendingAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tradingAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowingAmount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawFees",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawLendingFees",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawTradingFees",
      "type": "event"
    },
    {
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "affiliateFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "affiliateRewardsHeld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "affiliateTradingTokenFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "affiliatesReferrerBalances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "affiliatesUserReferrer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "borrowerNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "borrowerOrders",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lockedAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minLoanTerm",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxLoanTerm",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "createdTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expirationTimestamp",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowingFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "borrowingFeeTokensHeld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "borrowingFeeTokensPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "delegatedManagers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "depositProtocolToken",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "feeRebatePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "feesController",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getFeeRebatePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "start",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "count",
          "type": "uint256"
        }
      ],
      "name": "getLoanPoolsList",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getLockedSOVAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getProtocolAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSovTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "sourceTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "destTokenAddress",
          "type": "address"
        }
      ],
      "name": "getSpecialRebates",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "specialRebatesPercent",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getSwapExternalFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getTradingRebateRewardsBasisPoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "loanPool",
          "type": "address"
        }
      ],
      "name": "isLoanPool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isProtocolPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lenderInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "principalTotal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedPerDay",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "owedTotal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "paidTotal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "updatedTimestamp",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "lenderOrders",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "lockedAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "interestRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minLoanTerm",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxLoanTerm",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "createdTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expirationTimestamp",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lendingFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lendingFeeTokensHeld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lendingFeeTokensPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "liquidationIncentivePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "loanInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "owedPerDay",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "depositTotal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "updatedTimestamp",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "loanParams",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "loanToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "collateralToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minInitialMargin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maintenanceMargin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maxLoanTerm",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "loanPoolToUnderlying",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "loans",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "loanParamsId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingTradesId",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "principal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "collateral",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "endTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startMargin",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "startRate",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "lender",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lockedSOVAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "name": "logicTargets",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxDisagreement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "maxSwapSize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minReferralsToPayout",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pause",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "priceFeeds",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "protocolAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "protocolTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "protocolTokenHeld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "protocolTokenPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rolloverBaseReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rolloverFlexFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setAffiliateFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setAffiliateTradingTokenFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setBorrowingFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newController",
          "type": "address"
        }
      ],
      "name": "setFeesController",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setLendingFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setLiquidationIncentivePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "pools",
          "type": "address[]"
        },
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        }
      ],
      "name": "setLoanPool",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newLockedSOVAddress",
          "type": "address"
        }
      ],
      "name": "setLockedSOVAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMaxDisagreement",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setMaxSwapSize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newMinReferrals",
          "type": "uint256"
        }
      ],
      "name": "setMinReferralsToPayoutAffiliates",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newContract",
          "type": "address"
        }
      ],
      "name": "setPriceFeedContract",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_protocolTokenAddress",
          "type": "address"
        }
      ],
      "name": "setProtocolTokenAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "rebatePercent",
          "type": "uint256"
        }
      ],
      "name": "setRebatePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "baseRewardValue",
          "type": "uint256"
        }
      ],
      "name": "setRolloverBaseReward",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newSovTokenAddress",
          "type": "address"
        }
      ],
      "name": "setSOVTokenAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setSourceBuffer",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newProtocolAddress",
          "type": "address"
        }
      ],
      "name": "setSovrynProtocolAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "registryAddress",
          "type": "address"
        }
      ],
      "name": "setSovrynSwapContractRegistryAddress",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "sourceToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "destToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "specialRebatesPercent",
          "type": "uint256"
        }
      ],
      "name": "setSpecialRebates",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address[]",
          "name": "addrs",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "toggles",
          "type": "bool[]"
        }
      ],
      "name": "setSupportedTokens",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setSwapExternalFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newContract",
          "type": "address"
        }
      ],
      "name": "setSwapsImplContract",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newValue",
          "type": "uint256"
        }
      ],
      "name": "setTradingFeePercent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newBasisPoint",
          "type": "uint256"
        }
      ],
      "name": "setTradingRebateRewardsBasisPoint",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "wrbtcTokenAddress",
          "type": "address"
        }
      ],
      "name": "setWrbtcToken",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "sourceBuffer",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "sovTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "sovrynSwapContractRegistryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "specialRebates",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "supportedTokens",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "swapsImpl",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "paused",
          "type": "bool"
        }
      ],
      "name": "togglePaused",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "tradingFeePercent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tradingFeeTokensHeld",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tradingFeeTokensPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "underlyingToLoanPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userNotFirstTradeFlag",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawBorrowingFees",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "withdrawFees",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawLendingFees",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawProtocolToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawTradingFees",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "wrbtcToken",
      "outputs": [
        {
          "internalType": "contract IWrbtcERC20",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526001600055678ac7230489e80000601555670214e8348c4f000060185567013fbe85edc90000601b55674563918244f40000602055674563918244f40000602155674563918244f400006027556127106028556802b5e3af16b1880000602955650f478e084000602b5567016345785d8a0000602c556802b5e3af16b1880000602f5560036035556801158e460913d00000603955348015620000a657600080fd5b506000620000bc6001600160e01b036200011016565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000114565b3390565b6144a480620001246000396000f3fe608060405234801561001057600080fd5b50600436106105305760003560e01c80638dc48ba5116102af578063cb6eacd111610172578063e8997dbd116100d9578063f2fde38b11610092578063f2fde38b14610b6d578063f44942ec14610b80578063f589a3e714610b88578063f6ddc8b314610b90578063f706b1f214610b98578063f851a44014610ba057610530565b8063e8997dbd14610b1c578063e8f6276414610b2f578063ea0e393014610b37578063edab119f14610b4a578063f0e085f514610b52578063f255527814610b5a57610530565b8063d485045e1161012b578063d485045e14610ac0578063d9eaaa6414610ad3578063da541e0914610ae6578063dac8856114610af9578063e3ff937014610b01578063e419648014610b1457610530565b8063cb6eacd114610a50578063cd5d808d14610a77578063d21f8e2414610a8a578063d238db2214610a9d578063d288208c14610ab0578063d473c2da14610ab857610530565b8063ae0a853011610216578063b9cffa3e116101cf578063b9cffa3e146109dc578063ba4861e9146109e4578063bdee453c146109ec578063c4a90815146109ff578063c4d66de814610a2a578063c7c333f014610a3d57610530565b8063ae0a853014610973578063afe840091461097b578063b1558b7214610990578063b1ac89ca146109a3578063b30643d9146109b6578063b7e15241146109c957610530565b80639c53874f116102685780639c53874f1461090c578063a1eb56831461091f578063a2ab1ba114610932578063a32bb68314610945578063a6e7cc2814610958578063acc043481461096b57610530565b80638dc48ba5146108a25780638f32d59b146108b55780639254e6bf146108bd57806392d894f8146108d0578063959083d3146108e357806396881857146108eb57610530565b80634203e395116103f75780636e6637301161035e57806378d849ed1161031757806378d849ed1461085c5780637a8faeb8146108645780637fb202e51461086c5780638456cb591461087f57806384eaa9e0146108875780638da5cb5b1461089a57610530565b80636e663730146108005780636fbae33b146108135780637420ca3e14610826578063742e67981461082e57806374326e8f14610836578063746264041461084957610530565b8063569fc1fb116103b0578063569fc1fb14610779578063574442cc1461079b57806359d0d9ec146107a357806359e49e0f146107b657806362fff3f6146107c957806368c4ac26146107ed57610530565b80634203e39514610733578063462096f3146107465780634699f8461461074e5780634bcfe726146107565780634dd053a51461075e5780634f28cac21461077157610530565b80632a3240271161049b578063355a395f11610454578063355a395f146106bf5780633c56ae1b146106d25780633f1ae8b9146106e55780633fca506e146106ed578063402946b9146107005780634115a2b61461072057610530565b80632a324027146106635780632d77d0d01461066b5780632f4707641461067e57806332e4706f146106865780633432423c146106995780633452d2d4146106ac57610530565b806317f8b788116104ed57806317f8b788146105e45780631a81c191146105f75780631b7bde741461060a578063218b39c61461062a57806324cc57491461063d57806329f9986d1461065057610530565b8063065d810f146105515780630676c1b71461057f57806307024c25146105945780630c615ee91461059c578063115dd4b1146105b157806317548b79146105d1575b60405162461bcd60e51b815260040161054890614250565b60405180910390fd5b61056461055f366004613868565b610ba8565b60405161057696959493929190614353565b60405180910390f35b610587610be8565b6040516105769190613f71565b610587610bf7565b6105af6105aa366004613944565b610c06565b005b6105c46105bf3660046137c3565b610cbe565b6040516105769190614009565b6105876105df366004613981565b610cde565b6105af6105f2366004613944565b610cf9565b6105af6106053660046137c3565b610da5565b61061d6106183660046137e1565b610e41565b60405161057691906142d0565b6105876106383660046137c3565b610e5e565b6105c461064b3660046137c3565b610e79565b6105af61065e366004613944565b610e8e565b61061d610f3a565b6105af6106793660046137c3565b610f40565b61061d611002565b6105c461069436600461381b565b611008565b6105646106a7366004613868565b611164565b61061d6106ba3660046137c3565b6111a4565b6105af6106cd366004613944565b6111b6565b6105af6106e0366004613944565b611239565b61061d6112b7565b61061d6106fb3660046137c3565b6112bd565b61071361070e36600461399f565b6112cf565b6040516105769190613ff8565b6105c461072e366004613962565b6112ec565b61061d6107413660046137c3565b61130c565b61061d61131e565b61061d611324565b61058761132a565b6105af61076c3660046137c3565b611339565b61061d6113f9565b61078c610787366004613944565b6113ff565b604051610576939291906142ec565b61061d611420565b61061d6107b13660046137e1565b611426565b6105af6107c4366004613898565b611451565b6107dc6107d73660046137e1565b611901565b604051610576959493929190614307565b6105c46107fb3660046137c3565b61193b565b61058761080e3660046137c3565b611950565b6105af6108213660046137c3565b61196b565b610587611a2b565b61061d611a3a565b6105c461084436600461381b565b611a40565b6105af6108573660046137c3565b611b86565b610587611c22565b61061d611c31565b6105af61087a366004613944565b611c37565b6105c4611c83565b6105af610895366004613898565b611c8c565b610587611df5565b6105876108b03660046137c3565b611e04565b6105c4611e1f565b6105af6108cb3660046137c3565b611e45565b61061d6108de3660046137c3565b611ee0565b61061d611ef2565b6108fe6108f9366004613868565b611ef8565b604051610576929190613fc2565b6105af61091a366004613944565b611f58565b6105af61092d366004613944565b612004565b6105af610940366004613944565b6120a9565b6105af610953366004613944565b612155565b6105af610966366004613944565b612201565b61061d61224d565b61061d612253565b610983612259565b6040516105769190614141565b6105af61099e366004613944565b612268565b6105c46109b136600461381b565b61230b565b61061d6109c43660046137c3565b612451565b61061d6109d73660046137c3565b612463565b610587612475565b610587612484565b61061d6109fa3660046137c3565b612493565b610a12610a0d366004613944565b6124a5565b6040516105769c9b9a9998979695949392919061408e565b6105af610a383660046137c3565b612517565b6105af610a4b366004613944565b6128a5565b610a63610a5e366004613944565b612928565b604051610576989796959493929190614017565b61061d610a853660046137e1565b61297a565b6105af610a98366004613944565b612997565b6105af610aab366004613944565b612a43565b610587612aef565b61061d612afe565b61061d610ace3660046137c3565b612b04565b6105af610ae13660046137c3565b612b16565b6105af610af4366004613908565b612bd5565b6105c4612c65565b6105af610b0f3660046137c3565b612c6e565b61061d612d2e565b6105af610b2a3660046137c3565b612d34565b610587612dcf565b6105af610b4536600461381b565b612dde565b61061d612ec3565b61061d612ec9565b61061d610b683660046137e1565b612ecf565b6105af610b7b3660046137c3565b61311d565b61058761314a565b61061d613159565b61061d61315f565b610587613165565b610587613174565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b610c0e611e1f565b610c2a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610c4d5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610c765760405162461bcd60e51b815260040161054890614200565b601880549082905560405133907f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf5290610cb290849086906142de565b60405180910390a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b610d01611e1f565b610d1d5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610d405760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610d695760405162461bcd60e51b815260040161054890614200565b601b80549082905560405133907f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e490610cb290849086906142de565b610dad611e1f565b610dc95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610dec5760405162461bcd60e51b815260040161054890614160565b600380546001600160a01b038381166001600160a01b031983161790925560405191169033907f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba890610cb29084908690613f7f565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b610e96611e1f565b610eb25760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610ed55760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610efe5760405162461bcd60e51b815260040161054890614200565b603e80549082905560405133907f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b90610cb290849086906142de565b60185481565b610f48611e1f565b610f645760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610f875760405162461bcd60e51b815260040161054890614160565b610f9081613183565b610fac5760405162461bcd60e51b815260040161054890614210565b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff161561102e5760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b031633146110585760405162461bcd60e51b815260040161054890614240565b6001600160a01b0384166000908152601c602052604090205482908082111561107f578091505b8161108f5760009250505061115d565b61109f818363ffffffff6131bf16565b6001600160a01b0387166000908152601c6020908152604080832093909355601d905220546110d4908363ffffffff61320116565b6001600160a01b0387166000818152601d602052604090209190915561110190868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf8560405161114e91906142d0565b60405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6111be611e1f565b6111da5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156111fd5760405162461bcd60e51b815260040161054890614160565b602980549082905560405133907fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc390610cb290849086906142de565b611241611e1f565b61125d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156112805760405162461bcd60e51b815260040161054890614160565b601e54611293908263ffffffff61320116565b601e55602e546112b4906001600160a01b031633308463ffffffff61328416565b50565b602f5490565b602a6020526000908152604090205481565b60606112e36024848463ffffffff6132ae16565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611341611e1f565b61135d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156113805760405162461bcd60e51b815260040161054890614160565b61138981613183565b6113a55760405162461bcd60e51b815260040161054890614180565b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611459611e1f565b6114755760405162461bcd60e51b815260040161054890614240565b603d5460ff16156114985760405162461bcd60e51b815260040161054890614160565b8281146114b75760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa578282828181106114ce57fe5b90506020020160206114e391908101906137c3565b6001600160a01b03168585838181106114f857fe5b905060200201602061150d91908101906137c3565b6001600160a01b031614156115345760405162461bcd60e51b815260040161054890614270565b600085858381811061154257fe5b905060200201602061155791908101906137c3565b6001600160a01b0316141561157e5760405162461bcd60e51b8152600401610548906142c0565b600083838381811061158c57fe5b90506020020160206115a191908101906137c3565b6001600160a01b03161415806115f8575060006022818787858181106115c357fe5b90506020020160206115d891908101906137c3565b6001600160a01b0390811682526020820192909252604001600020541614155b6116145760405162461bcd60e51b815260040161054890614220565b600083838381811061162257fe5b905060200201602061163791908101906137c3565b6001600160a01b03161415611746576000602360006022600089898781811061165c57fe5b905060200201602061167191908101906137c3565b6001600160a01b0390811682526020808301939093526040918201600090812054821685529284019490945291909101812080546001600160a01b031916939092169290921790556022818787858181106116c857fe5b90506020020160206116dd91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561174085858381811061171d57fe5b905060200201602061173291908101906137c3565b60249063ffffffff61338416565b50611868565b82828281811061175257fe5b905060200201602061176791908101906137c3565b6022600087878581811061177757fe5b905060200201602061178c91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790558484828181106117c957fe5b90506020020160206117de91908101906137c3565b602360008585858181106117ee57fe5b905060200201602061180391908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561186685858381811061184357fe5b905060200201602061185891908101906137c3565b60249063ffffffff61339116565b505b82828281811061187457fe5b905060200201602061188991908101906137c3565b6001600160a01b031685858381811061189e57fe5b90506020020160206118b391908101906137c3565b6001600160a01b0316336001600160a01b03167f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8960405160405180910390a46001016114ba565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b611973611e1f565b61198f5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156119b25760405162461bcd60e51b815260040161054890614160565b6119bb81613183565b6119d75760405162461bcd60e51b8152600401610548906141d0565b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff1615611a665760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314611a905760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260196020526040902054829080821115611ab7578091505b81611ac75760009250505061115d565b611ad7818363ffffffff6131bf16565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054611b0c908363ffffffff61320116565b6001600160a01b0387166000818152601a6020526040902091909155611b3990868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda8560405161114e91906142d0565b611b8e611e1f565b611baa5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611bcd5760405162461bcd60e51b815260040161054890614160565b600280546001600160a01b038381166001600160a01b031983161790925560405191169033907f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce890610cb29084908690613f7f565b6002546001600160a01b031681565b601e5481565b611c3f611e1f565b611c5b5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611c7e5760405162461bcd60e51b815260040161054890614160565b602755565b603d5460ff1681565b611c94611e1f565b611cb05760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611cd35760405162461bcd60e51b815260040161054890614160565b828114611cf25760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa57828282818110611d0957fe5b9050602002016020611d1e9190810190613908565b60266000878785818110611d2e57fe5b9050602002016020611d4391908101906137c3565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848482818110611d7757fe5b9050602002016020611d8c91908101906137c3565b6001600160a01b0316337f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110611dc357fe5b9050602002016020611dd89190810190613908565b604051611de59190614009565b60405180910390a3600101611cf5565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611e3661339e565b6001600160a01b031614905090565b611e4d611e1f565b611e695760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611e8c5760405162461bcd60e51b815260040161054890614160565b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080611f03611e1f565b611f1f5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f425760405162461bcd60e51b815260040161054890614160565b611f4c84846133a2565b915091505b9250929050565b611f60611e1f565b611f7c5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f9f5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115611fc85760405162461bcd60e51b8152600401610548906141b0565b602f80549082905560405133907fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f942201390610cb290849086906142de565b61200c611e1f565b6120285760405162461bcd60e51b815260040161054890614240565b603d5460ff161561204b5760405162461bcd60e51b815260040161054890614160565b61270f81111561206d5760405162461bcd60e51b815260040161054890614200565b603f80549082905560405133907fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf690610cb290849086906142de565b6120b1611e1f565b6120cd5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156120f05760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121195760405162461bcd60e51b815260040161054890614200565b602180549082905560405133907fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee5390610cb290849086906142de565b61215d611e1f565b6121795760405162461bcd60e51b815260040161054890614240565b603d5460ff161561219c5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121c55760405162461bcd60e51b815260040161054890614200565b603980549082905560405133907f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d90610cb290849086906142de565b612209611e1f565b6122255760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122485760405162461bcd60e51b815260040161054890614160565b602855565b602f5481565b60205481565b602d546001600160a01b031681565b612270611e1f565b61228c5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122af5760405162461bcd60e51b815260040161054890614160565b600081116122cf5760405162461bcd60e51b815260040161054890614170565b602b80549082905560405133907f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f090610cb290849086906142de565b603d5460009060ff16156123315760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b0316331461235b5760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260166020526040902054829080821115612382578091505b816123925760009250505061115d565b6123a2818363ffffffff6131bf16565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546123d7908363ffffffff61320116565b6001600160a01b03871660008181526017602052604090209190915561240490868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c608560405161114e91906142d0565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b61251f611e1f565b61253b5760405162461bcd60e51b815260040161054890614240565b631d18990160e21b600081905260056020527fe1ae43de9a4a3eb1abb1a58087a8aff0717a77c07be9f83ced74911b33b030e3546001600160a01b031690612583908361341f565b612594631a81c19160e01b8361341f565b6125a56359e49e0f60e01b8361341f565b6125b6630427554f60e51b8361341f565b6125c763691c6d9160e11b8361341f565b6125d8630c615ee960e01b8361341f565b6125e96302ff16f160e31b8361341f565b6125fa6329f9986d60e01b8361341f565b61260b633487e38960e21b8361341f565b61261c63a32bb68360e01b8361341f565b61262d63a2ab1ba160e01b8361341f565b61263e637fb202e560e01b8361341f565b61264f6314dcf98560e31b8361341f565b61266063355a395f60e01b8361341f565b61267163e8997dbd60e01b8361341f565b612682631e4aaa4f60e31b8361341f565b6126936358d644e560e11b8361341f565b6126a46374326e8f60e01b8361341f565b6126b56332e4706f60e01b8361341f565b6126c6639688185760e01b8361341f565b6126d7633c56ae1b60e01b8361341f565b6126e863402946b960e01b8361341f565b6126f963115dd4b160e01b8361341f565b61270a6302d77d0d60e41b8361341f565b61271b63367aaa9960e21b8361341f565b61272c630e3ff93760e41b8361341f565b61273d6358aac5b960e11b8361341f565b61274e639c53874f60e01b8361341f565b61275f630ea0e39360e41b8361341f565b612770639254e6bf60e01b8361341f565b612781636fbae33b60e01b8361341f565b612792634dd053a560e01b8361341f565b6127a3630c7c333f60e41b8361341f565b6127b4631674367b60e21b8361341f565b6127c56307024c2560e01b8361341f565b6127d66325e7f39360e11b8361341f565b6127e7633d1250bb60e21b8361341f565b6127f8633f1ae8b960e01b8361341f565b61280963da541e0960e01b8361341f565b61281a63dac8856160e01b8361341f565b61282b63462096f360e01b8361341f565b61283c63a1eb568360e01b8361341f565b61284d6301c832c960e71b8361341f565b6f50726f746f636f6c53657474696e677360801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6128ad611e1f565b6128c95760405162461bcd60e51b815260040161054890614240565b603d5460ff16156128ec5760405162461bcd60e51b815260040161054890614160565b603580549082905560405133907f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da08490610cb290849086906142de565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b61299f611e1f565b6129bb5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156129de5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612a075760405162461bcd60e51b815260040161054890614200565b602080549082905560405133907f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f590610cb290849086906142de565b612a4b611e1f565b612a675760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612a8a5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612ab35760405162461bcd60e51b815260040161054890614200565b601580549082905560405133907fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c49290610cb290849086906142de565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b612b1e611e1f565b612b3a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612b5d5760405162461bcd60e51b815260040161054890614160565b612b6681613183565b612b825760405162461bcd60e51b8152600401610548906141f0565b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b612bdd611e1f565b612bf95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615158115151415612c225760405162461bcd60e51b8152600401610548906142a0565b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b612c76611e1f565b612c925760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612cb55760405162461bcd60e51b815260040161054890614160565b612cbe81613183565b612cda5760405162461bcd60e51b815260040161054890614290565b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b612d3c611e1f565b612d585760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612d7b5760405162461bcd60e51b815260040161054890614160565b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b612de6611e1f565b612e025760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612e255760405162461bcd60e51b815260040161054890614160565b683635c9adc5dea00000811115612e4e5760405162461bcd60e51b815260040161054890614260565b6001600160a01b038381166000818152603c60209081526040808320948716808452949091529081902080549085905590519092919033907fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc321390612eb590869088906142de565b60405180910390a450505050565b601b5481565b60285481565b603d5460009060ff1615612ef55760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161054890614240565b6001600160a01b0383166000908152601660205260409020548015612f8e576001600160a01b03841660009081526016602090815260408083208390556017909152902054612f74908263ffffffff61320116565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b0384166000908152601960205260409020548015612ffd576001600160a01b0385166000908152601960209081526040808320839055601a909152902054612fe3908263ffffffff61320116565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c6020526040902054801561306c576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054613052908263ffffffff61320116565b6001600160a01b0387166000908152601d60205260409020555b600061308e82613082868663ffffffff61320116565b9063ffffffff61320116565b9050806130a05793506112e692505050565b6130ba6001600160a01b038816878363ffffffff61322616565b856001600160a01b0316876001600160a01b0316336001600160a01b03167fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb1786183087878760405161310b939291906142ec565b60405180910390a49695505050505050565b613125611e1f565b6131415760405162461bcd60e51b815260040161054890614240565b6112b481613499565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906131b757508115155b949350505050565b60006112e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061351b565b6000828201838110156112e35760405162461bcd60e51b8152600401610548906141a0565b60405161327f90849063a9059cbb60e01b906132489086908690602401613fdd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613547565b505050565b6040516132a89085906323b872dd60e01b9061324890879087908790602401613f9a565b50505050565b6060828201838110156132d35760405162461bcd60e51b815260040161054890614230565b600185015481116132e457806132ea565b60018501545b90508015806132f95750808410155b15613304575061115d565b838103604051908082528060200260200182016040528015613330578160200160208202803883390190505b50915060005b84820381101561337b57856001018582018154811061335157fe5b906000526020600020015483828151811061336857fe5b6020908102919091010152600101613336565b50509392505050565b6000816131b7848261362c565b6000816131b784826136f5565b3390565b601e5460009081908390808211156133b8578091505b816133d6575050602e546001600160a01b0316915060009050611f51565b6133e6818363ffffffff6131bf16565b601e55602e54613406906001600160a01b0316878463ffffffff61322616565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561347a57613474600d6001600160e01b0319841663ffffffff6136f516565b50613495565b61327f600d6001600160e01b0319841663ffffffff61362c16565b5050565b6001600160a01b0381166134bf5760405162461bcd60e51b815260040161054890614190565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561353f5760405162461bcd60e51b8152600401610548919061414f565b505050900390565b613559826001600160a01b0316613183565b6135755760405162461bcd60e51b8152600401610548906142b0565b60006060836001600160a01b0316836040516135919190613f65565b6000604051808303816000865af19150503d80600081146135ce576040519150601f19603f3d011682016040523d82523d6000602084013e6135d3565b606091505b5091509150816135f55760405162461bcd60e51b8152600401610548906141c0565b8051156132a857808060200190516136109190810190613926565b6132a85760405162461bcd60e51b815260040161054890614280565b60006136388383613735565b156136ed57600082815260208490526040902054600184015460001991820191018082146136b057600085600101828154811061367157fe5b906000526020600020015490508086600101848154811061368e57fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806136cc57fe5b600190038181906000526020600020016000905590556001925050506112e6565b5060006112e6565b60006137018383613735565b6136ed57506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e6565b60009081526020919091526040902054151590565b80356112e681614432565b60008083601f84011261376757600080fd5b50813567ffffffffffffffff81111561377f57600080fd5b602083019150836020820283011115611f5157600080fd5b80356112e681614446565b80516112e681614446565b80356112e68161444f565b80356112e681614458565b6000602082840312156137d557600080fd5b60006131b7848461374a565b600080604083850312156137f457600080fd5b6000613800858561374a565b92505060206138118582860161374a565b9150509250929050565b60008060006060848603121561383057600080fd5b600061383c868661374a565b935050602061384d8682870161374a565b925050604061385e868287016137ad565b9150509250925092565b6000806040838503121561387b57600080fd5b6000613887858561374a565b9250506020613811858286016137ad565b600080600080604085870312156138ae57600080fd5b843567ffffffffffffffff8111156138c557600080fd5b6138d187828801613755565b9450945050602085013567ffffffffffffffff8111156138f057600080fd5b6138fc87828801613755565b95989497509550505050565b60006020828403121561391a57600080fd5b60006131b78484613797565b60006020828403121561393857600080fd5b60006131b784846137a2565b60006020828403121561395657600080fd5b60006131b784846137ad565b6000806040838503121561397557600080fd5b600061380085856137ad565b60006020828403121561399357600080fd5b60006131b784846137b8565b600080604083850312156139b257600080fd5b600061388785856137ad565b60006139ca8383613a43565b505060200190565b6139db816143c5565b82525050565b60006139ec826143b3565b6139f681856143b7565b9350613a01836143ad565b8060005b83811015613a2f578151613a1988826139be565b9750613a24836143ad565b925050600101613a05565b509495945050505050565b6139db816143d0565b6139db816143d5565b6000613a57826143b3565b613a6181856143c0565b9350613a718185602086016143fc565b9290920192915050565b6139db816143f1565b6000613a8f826143b3565b613a9981856143b7565b9350613aa98185602086016143fc565b613ab281614428565b9093019392505050565b6000613ac96006836143b7565b6514185d5cd95960d21b815260200192915050565b6000613aeb6013836143b7565b724261736520726577617264206973207a65726f60681b815260200192915050565b6000613b1a6020836143b7565b7f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613b536026836143b7565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000613b9b601b836143b7565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613bd46016836143b7565b7508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b815260200192915050565b6000613c066020836143b7565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613c3f6021836143b7565b7f6e6577536f76546f6b656e41646472657373206e6f74206120636f6e747261638152601d60fa1b602082015260400192915050565b6000613c82600e836143b7565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000613cac6020836143b7565b7f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613ce5600e836143b7565b6d0ecc2d8eaca40e8dede40d0d2ced60931b815260200192915050565b6000613d0f601e836143b7565b7f726567697374727941646472657373206e6f74206120636f6e74726163740000815260200192915050565b6000613d48600f836143b7565b6e706f6f6c206e6f742065786973747360881b815260200192915050565b6000613d736011836143b7565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000613da0600c836143b7565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000613dc86014836143b7565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b6000613df8601e836143b7565b7f5370656369616c206665652072656261746520697320746f6f20686967680000815260200192915050565b6000613e31600d836143b7565b6c1c1bdbdb080f4f48185cdcd95d609a1b815260200192915050565b6000613e5a602a836143b7565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613ea66024836143b7565b7f5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e748152631c9858dd60e21b602082015260400192915050565b6000613eec600c836143b7565b6b43616e277420746f67676c6560a01b815260200192915050565b6000613f14601f836143b7565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000613f4d6009836143b7565b680706f6f6c203d3d20360bc1b815260200192915050565b600061115d8284613a4c565b602081016112e682846139d2565b60408101613f8d82856139d2565b61115d60208301846139d2565b60608101613fa882866139d2565b613fb560208301856139d2565b6131b76040830184613a43565b60408101613fd082856139d2565b61115d6020830184613a3a565b60408101613feb82856139d2565b61115d6020830184613a43565b602080825281016112e381846139e1565b602081016112e68284613a3a565b6101008101614026828b613a43565b614033602083018a613a3a565b61404060408301896139d2565b61404d60608301886139d2565b61405a60808301876139d2565b61406760a0830186613a43565b61407460c0830185613a43565b61408160e0830184613a43565b9998505050505050505050565b610180810161409d828f613a43565b6140aa602083018e613a43565b6140b7604083018d613a43565b6140c4606083018c613a3a565b6140d1608083018b613a43565b6140de60a083018a613a43565b6140eb60c0830189613a43565b6140f860e0830188613a43565b614106610100830187613a43565b614114610120830186613a43565b6141226101408301856139d2565b6141306101608301846139d2565b9d9c50505050505050505050505050565b602081016112e68284613a7b565b602080825281016112e38184613a84565b602080825281016112e681613abc565b602080825281016112e681613ade565b602080825281016112e681613b0d565b602080825281016112e681613b46565b602080825281016112e681613b8e565b602080825281016112e681613bc7565b602080825281016112e681613bf9565b602080825281016112e681613c32565b602080825281016112e681613c75565b602080825281016112e681613c9f565b602080825281016112e681613cd8565b602080825281016112e681613d02565b602080825281016112e681613d3b565b602080825281016112e681613d66565b602080825281016112e681613d93565b602080825281016112e681613dbb565b602080825281016112e681613deb565b602080825281016112e681613e24565b602080825281016112e681613e4d565b602080825281016112e681613e99565b602080825281016112e681613edf565b602080825281016112e681613f07565b602080825281016112e681613f40565b602081016112e68284613a43565b60408101613feb8285613a43565b606081016142fa8286613a43565b613fb56020830185613a43565b60a081016143158288613a43565b6143226020830187613a43565b61432f6040830186613a43565b61433c6060830185613a43565b6143496080830184613a43565b9695505050505050565b60c081016143618289613a43565b61436e6020830188613a43565b61437b6040830187613a43565b6143886060830186613a43565b6143956080830185613a43565b6143a260a0830184613a43565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006112e6826143e5565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006112e6826143c5565b60005b838110156144175781810151838201526020016143ff565b838111156132a85750506000910152565b601f01601f191690565b61443b816143c5565b81146112b457600080fd5b61443b816143d0565b61443b816143d5565b61443b816143d856fea365627a7a72315820f4d4c23f5e3817de22e785e86303b09912a3ff0f304c0938df405e5850c3292b6c6578706572696d656e74616cf564736f6c63430005110040",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106105305760003560e01c80638dc48ba5116102af578063cb6eacd111610172578063e8997dbd116100d9578063f2fde38b11610092578063f2fde38b14610b6d578063f44942ec14610b80578063f589a3e714610b88578063f6ddc8b314610b90578063f706b1f214610b98578063f851a44014610ba057610530565b8063e8997dbd14610b1c578063e8f6276414610b2f578063ea0e393014610b37578063edab119f14610b4a578063f0e085f514610b52578063f255527814610b5a57610530565b8063d485045e1161012b578063d485045e14610ac0578063d9eaaa6414610ad3578063da541e0914610ae6578063dac8856114610af9578063e3ff937014610b01578063e419648014610b1457610530565b8063cb6eacd114610a50578063cd5d808d14610a77578063d21f8e2414610a8a578063d238db2214610a9d578063d288208c14610ab0578063d473c2da14610ab857610530565b8063ae0a853011610216578063b9cffa3e116101cf578063b9cffa3e146109dc578063ba4861e9146109e4578063bdee453c146109ec578063c4a90815146109ff578063c4d66de814610a2a578063c7c333f014610a3d57610530565b8063ae0a853014610973578063afe840091461097b578063b1558b7214610990578063b1ac89ca146109a3578063b30643d9146109b6578063b7e15241146109c957610530565b80639c53874f116102685780639c53874f1461090c578063a1eb56831461091f578063a2ab1ba114610932578063a32bb68314610945578063a6e7cc2814610958578063acc043481461096b57610530565b80638dc48ba5146108a25780638f32d59b146108b55780639254e6bf146108bd57806392d894f8146108d0578063959083d3146108e357806396881857146108eb57610530565b80634203e395116103f75780636e6637301161035e57806378d849ed1161031757806378d849ed1461085c5780637a8faeb8146108645780637fb202e51461086c5780638456cb591461087f57806384eaa9e0146108875780638da5cb5b1461089a57610530565b80636e663730146108005780636fbae33b146108135780637420ca3e14610826578063742e67981461082e57806374326e8f14610836578063746264041461084957610530565b8063569fc1fb116103b0578063569fc1fb14610779578063574442cc1461079b57806359d0d9ec146107a357806359e49e0f146107b657806362fff3f6146107c957806368c4ac26146107ed57610530565b80634203e39514610733578063462096f3146107465780634699f8461461074e5780634bcfe726146107565780634dd053a51461075e5780634f28cac21461077157610530565b80632a3240271161049b578063355a395f11610454578063355a395f146106bf5780633c56ae1b146106d25780633f1ae8b9146106e55780633fca506e146106ed578063402946b9146107005780634115a2b61461072057610530565b80632a324027146106635780632d77d0d01461066b5780632f4707641461067e57806332e4706f146106865780633432423c146106995780633452d2d4146106ac57610530565b806317f8b788116104ed57806317f8b788146105e45780631a81c191146105f75780631b7bde741461060a578063218b39c61461062a57806324cc57491461063d57806329f9986d1461065057610530565b8063065d810f146105515780630676c1b71461057f57806307024c25146105945780630c615ee91461059c578063115dd4b1146105b157806317548b79146105d1575b60405162461bcd60e51b815260040161054890614250565b60405180910390fd5b61056461055f366004613868565b610ba8565b60405161057696959493929190614353565b60405180910390f35b610587610be8565b6040516105769190613f71565b610587610bf7565b6105af6105aa366004613944565b610c06565b005b6105c46105bf3660046137c3565b610cbe565b6040516105769190614009565b6105876105df366004613981565b610cde565b6105af6105f2366004613944565b610cf9565b6105af6106053660046137c3565b610da5565b61061d6106183660046137e1565b610e41565b60405161057691906142d0565b6105876106383660046137c3565b610e5e565b6105c461064b3660046137c3565b610e79565b6105af61065e366004613944565b610e8e565b61061d610f3a565b6105af6106793660046137c3565b610f40565b61061d611002565b6105c461069436600461381b565b611008565b6105646106a7366004613868565b611164565b61061d6106ba3660046137c3565b6111a4565b6105af6106cd366004613944565b6111b6565b6105af6106e0366004613944565b611239565b61061d6112b7565b61061d6106fb3660046137c3565b6112bd565b61071361070e36600461399f565b6112cf565b6040516105769190613ff8565b6105c461072e366004613962565b6112ec565b61061d6107413660046137c3565b61130c565b61061d61131e565b61061d611324565b61058761132a565b6105af61076c3660046137c3565b611339565b61061d6113f9565b61078c610787366004613944565b6113ff565b604051610576939291906142ec565b61061d611420565b61061d6107b13660046137e1565b611426565b6105af6107c4366004613898565b611451565b6107dc6107d73660046137e1565b611901565b604051610576959493929190614307565b6105c46107fb3660046137c3565b61193b565b61058761080e3660046137c3565b611950565b6105af6108213660046137c3565b61196b565b610587611a2b565b61061d611a3a565b6105c461084436600461381b565b611a40565b6105af6108573660046137c3565b611b86565b610587611c22565b61061d611c31565b6105af61087a366004613944565b611c37565b6105c4611c83565b6105af610895366004613898565b611c8c565b610587611df5565b6105876108b03660046137c3565b611e04565b6105c4611e1f565b6105af6108cb3660046137c3565b611e45565b61061d6108de3660046137c3565b611ee0565b61061d611ef2565b6108fe6108f9366004613868565b611ef8565b604051610576929190613fc2565b6105af61091a366004613944565b611f58565b6105af61092d366004613944565b612004565b6105af610940366004613944565b6120a9565b6105af610953366004613944565b612155565b6105af610966366004613944565b612201565b61061d61224d565b61061d612253565b610983612259565b6040516105769190614141565b6105af61099e366004613944565b612268565b6105c46109b136600461381b565b61230b565b61061d6109c43660046137c3565b612451565b61061d6109d73660046137c3565b612463565b610587612475565b610587612484565b61061d6109fa3660046137c3565b612493565b610a12610a0d366004613944565b6124a5565b6040516105769c9b9a9998979695949392919061408e565b6105af610a383660046137c3565b612517565b6105af610a4b366004613944565b6128a5565b610a63610a5e366004613944565b612928565b604051610576989796959493929190614017565b61061d610a853660046137e1565b61297a565b6105af610a98366004613944565b612997565b6105af610aab366004613944565b612a43565b610587612aef565b61061d612afe565b61061d610ace3660046137c3565b612b04565b6105af610ae13660046137c3565b612b16565b6105af610af4366004613908565b612bd5565b6105c4612c65565b6105af610b0f3660046137c3565b612c6e565b61061d612d2e565b6105af610b2a3660046137c3565b612d34565b610587612dcf565b6105af610b4536600461381b565b612dde565b61061d612ec3565b61061d612ec9565b61061d610b683660046137e1565b612ecf565b6105af610b7b3660046137c3565b61311d565b61058761314a565b61061d613159565b61061d61315f565b610587613165565b610587613174565b6009602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b6031546001600160a01b031681565b6031546001600160a01b031690565b610c0e611e1f565b610c2a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610c4d5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610c765760405162461bcd60e51b815260040161054890614200565b601880549082905560405133907f0628070e9ccbc70e8be34a2fa969f8d314ec049f17bfcb4c2020df4bccd2bf5290610cb290849086906142de565b60405180910390a25050565b6001600160a01b0390811660009081526022602052604090205416151590565b6005602052600090815260409020546001600160a01b031681565b610d01611e1f565b610d1d5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610d405760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610d695760405162461bcd60e51b815260040161054890614200565b601b80549082905560405133907f5c61c9c51cb2781bc120817a851f7f27c134d5d191bc5a2b0ea971ba638425e490610cb290849086906142de565b610dad611e1f565b610dc95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610dec5760405162461bcd60e51b815260040161054890614160565b600380546001600160a01b038381166001600160a01b031983161790925560405191169033907f480cc6e59585343a9e9d6fe591dad0f80ce93bb2399ca672910f380671b46ba890610cb29084908690613f7f565b603b60209081526000928352604080842090915290825290205481565b6023602052600090815260409020546001600160a01b031681565b60326020526000908152604090205460ff1681565b610e96611e1f565b610eb25760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610ed55760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115610efe5760405162461bcd60e51b815260040161054890614200565b603e80549082905560405133907f02bd69d9975fcf3b39b6ab502d77983a0cfce893e47073f502d094c6a94da33b90610cb290849086906142de565b60185481565b610f48611e1f565b610f645760405162461bcd60e51b815260040161054890614240565b603d5460ff1615610f875760405162461bcd60e51b815260040161054890614160565b610f9081613183565b610fac5760405162461bcd60e51b815260040161054890614210565b600480546001600160a01b038381166001600160a01b031983161792839055604051918116921690829033907f54c538f1d732806e1bfc25ec56236dac39e6070dd856c0e7efb2bc274709467d90600090a45050565b601f5481565b603d5460009060ff161561102e5760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b031633146110585760405162461bcd60e51b815260040161054890614240565b6001600160a01b0384166000908152601c602052604090205482908082111561107f578091505b8161108f5760009250505061115d565b61109f818363ffffffff6131bf16565b6001600160a01b0387166000908152601c6020908152604080832093909355601d905220546110d4908363ffffffff61320116565b6001600160a01b0387166000818152601d602052604090209190915561110190868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f2bfaa669aeee298bc85fe2b7dddc312fc28b78622f086063b9a410d7ba9939cf8560405161114e91906142d0565b60405180910390a46001925050505b9392505050565b6008602090815260009283526040808420909152908252902080546001820154600283015460038401546004850154600590950154939492939192909186565b601a6020526000908152604090205481565b6111be611e1f565b6111da5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156111fd5760405162461bcd60e51b815260040161054890614160565b602980549082905560405133907fa645d7b227c34f1f218d53bc3b3ccb9a43eaf2231b33925194f1de755aa3acc390610cb290849086906142de565b611241611e1f565b61125d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156112805760405162461bcd60e51b815260040161054890614160565b601e54611293908263ffffffff61320116565b601e55602e546112b4906001600160a01b031633308463ffffffff61328416565b50565b602f5490565b602a6020526000908152604090205481565b60606112e36024848463ffffffff6132ae16565b90505b92915050565b600a60209081526000928352604080842090915290825290205460ff1681565b60166020526000908152604090205481565b603e5490565b60155481565b6037546001600160a01b031690565b611341611e1f565b61135d5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156113805760405162461bcd60e51b815260040161054890614160565b61138981613183565b6113a55760405162461bcd60e51b815260040161054890614180565b603880546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fea3cad8b6739a7a73616cb585fe48a8e8f61d1fd7f9822ccd7580a805357aa7090600090a45050565b60295481565b600c6020526000908152604090208054600182015460029092015490919083565b602b5481565b6001600160a01b039182166000908152603c6020908152604080832093909416825291909152205490565b611459611e1f565b6114755760405162461bcd60e51b815260040161054890614240565b603d5460ff16156114985760405162461bcd60e51b815260040161054890614160565b8281146114b75760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa578282828181106114ce57fe5b90506020020160206114e391908101906137c3565b6001600160a01b03168585838181106114f857fe5b905060200201602061150d91908101906137c3565b6001600160a01b031614156115345760405162461bcd60e51b815260040161054890614270565b600085858381811061154257fe5b905060200201602061155791908101906137c3565b6001600160a01b0316141561157e5760405162461bcd60e51b8152600401610548906142c0565b600083838381811061158c57fe5b90506020020160206115a191908101906137c3565b6001600160a01b03161415806115f8575060006022818787858181106115c357fe5b90506020020160206115d891908101906137c3565b6001600160a01b0390811682526020820192909252604001600020541614155b6116145760405162461bcd60e51b815260040161054890614220565b600083838381811061162257fe5b905060200201602061163791908101906137c3565b6001600160a01b03161415611746576000602360006022600089898781811061165c57fe5b905060200201602061167191908101906137c3565b6001600160a01b0390811682526020808301939093526040918201600090812054821685529284019490945291909101812080546001600160a01b031916939092169290921790556022818787858181106116c857fe5b90506020020160206116dd91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561174085858381811061171d57fe5b905060200201602061173291908101906137c3565b60249063ffffffff61338416565b50611868565b82828281811061175257fe5b905060200201602061176791908101906137c3565b6022600087878581811061177757fe5b905060200201602061178c91908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790558484828181106117c957fe5b90506020020160206117de91908101906137c3565b602360008585858181106117ee57fe5b905060200201602061180391908101906137c3565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b0319169290911691909117905561186685858381811061184357fe5b905060200201602061185891908101906137c3565b60249063ffffffff61339116565b505b82828281811061187457fe5b905060200201602061188991908101906137c3565b6001600160a01b031685858381811061189e57fe5b90506020020160206118b391908101906137c3565b6001600160a01b0316336001600160a01b03167f919223d371e0ad76f1f32dcbe0750166810bff9a9e4b2735bfcd01c5686c8d8960405160405180910390a46001016114ba565b5050505050565b600b602090815260009283526040808420909152908252902080546001820154600283015460038401546004909401549293919290919085565b60266020526000908152604090205460ff1681565b6033602052600090815260409020546001600160a01b031681565b611973611e1f565b61198f5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156119b25760405162461bcd60e51b815260040161054890614160565b6119bb81613183565b6119d75760405162461bcd60e51b8152600401610548906141d0565b603780546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f6105cbfb5494a79f89745763767914b7b60b00defac5e94c7eb28cc5e44c479f90600090a45050565b6003546001600160a01b031681565b60355481565b603d5460009060ff1615611a665760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314611a905760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260196020526040902054829080821115611ab7578091505b81611ac75760009250505061115d565b611ad7818363ffffffff6131bf16565b6001600160a01b038716600090815260196020908152604080832093909355601a90522054611b0c908363ffffffff61320116565b6001600160a01b0387166000818152601a6020526040902091909155611b3990868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167f951f1856a4d1d8c0081f50a1aee9fdc008f729d0f22849618016e353179b8dda8560405161114e91906142d0565b611b8e611e1f565b611baa5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611bcd5760405162461bcd60e51b815260040161054890614160565b600280546001600160a01b038381166001600160a01b031983161790925560405191169033907f05621ab0b721f217895f5337ac1283251172d175ef3dc8c9a0287155f6024ce890610cb29084908690613f7f565b6002546001600160a01b031681565b601e5481565b611c3f611e1f565b611c5b5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611c7e5760405162461bcd60e51b815260040161054890614160565b602755565b603d5460ff1681565b611c94611e1f565b611cb05760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611cd35760405162461bcd60e51b815260040161054890614160565b828114611cf25760405162461bcd60e51b8152600401610548906141e0565b60005b838110156118fa57828282818110611d0957fe5b9050602002016020611d1e9190810190613908565b60266000878785818110611d2e57fe5b9050602002016020611d4391908101906137c3565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055848482818110611d7757fe5b9050602002016020611d8c91908101906137c3565b6001600160a01b0316337f24cecc90c7d4bc8c6765b75eedcc61d4e1cc4e4d49cd0756c6dfb5f6cc259b50858585818110611dc357fe5b9050602002016020611dd89190810190613908565b604051611de59190614009565b60405180910390a3600101611cf5565b6001546001600160a01b031690565b6022602052600090815260409020546001600160a01b031681565b6001546000906001600160a01b0316611e3661339e565b6001600160a01b031614905090565b611e4d611e1f565b611e695760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611e8c5760405162461bcd60e51b815260040161054890614160565b603180546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fe48b1893efaee62da0749dd98dbf0ea62ee472b37f7205114aca36cc9de1122890600090a45050565b60176020526000908152604090205481565b602c5481565b600080611f03611e1f565b611f1f5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f425760405162461bcd60e51b815260040161054890614160565b611f4c84846133a2565b915091505b9250929050565b611f60611e1f565b611f7c5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615611f9f5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115611fc85760405162461bcd60e51b8152600401610548906141b0565b602f80549082905560405133907fb12d68e20e5279e25ff10edfc0f82deaa858ea2ac9874cf58518f4e5f942201390610cb290849086906142de565b61200c611e1f565b6120285760405162461bcd60e51b815260040161054890614240565b603d5460ff161561204b5760405162461bcd60e51b815260040161054890614160565b61270f81111561206d5760405162461bcd60e51b815260040161054890614200565b603f80549082905560405133907fc6d322dc6668f20ff04ac11b217aae8e8704e6388bd1dececeab1059db806bf690610cb290849086906142de565b6120b1611e1f565b6120cd5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156120f05760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121195760405162461bcd60e51b815260040161054890614200565b602180549082905560405133907fa06d9b7b1c979150dcbf5b050626cc7d06c764a12ebf76ec8d16b8d3d7c9ee5390610cb290849086906142de565b61215d611e1f565b6121795760405162461bcd60e51b815260040161054890614240565b603d5460ff161561219c5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d631000008111156121c55760405162461bcd60e51b815260040161054890614200565b603980549082905560405133907f61d3e840cf1074298f10fa77edb788b4e5e554d7d135c93ac5f38f2ce0f6b52d90610cb290849086906142de565b612209611e1f565b6122255760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122485760405162461bcd60e51b815260040161054890614160565b602855565b602f5481565b60205481565b602d546001600160a01b031681565b612270611e1f565b61228c5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156122af5760405162461bcd60e51b815260040161054890614160565b600081116122cf5760405162461bcd60e51b815260040161054890614170565b602b80549082905560405133907f13cb748cec5c5021a23ec7994522a0911f24f10fdabc909281fbe95914b782f090610cb290849086906142de565b603d5460009060ff16156123315760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b0316331461235b5760405162461bcd60e51b815260040161054890614240565b6001600160a01b038416600090815260166020526040902054829080821115612382578091505b816123925760009250505061115d565b6123a2818363ffffffff6131bf16565b6001600160a01b0387166000908152601660209081526040808320939093556017905220546123d7908363ffffffff61320116565b6001600160a01b03871660008181526017602052604090209190915561240490868463ffffffff61322616565b846001600160a01b0316866001600160a01b0316336001600160a01b03167fabc20bdd02de91df32a6e4a11684e26e0a34dc5a895a314ae51a919bc9f62c608560405161114e91906142d0565b601d6020526000908152604090205481565b601c6020526000908152604090205481565b6037546001600160a01b031681565b6004546001600160a01b031681565b60366020526000908152604090205481565b600660208190526000918252604090912080546001820154600283015460038401546004850154600586015496860154600787015460088801546009890154600a8a0154600b909a0154989a9799969860ff909616979496949593949293919290916001600160a01b0391821691168c565b61251f611e1f565b61253b5760405162461bcd60e51b815260040161054890614240565b631d18990160e21b600081905260056020527fe1ae43de9a4a3eb1abb1a58087a8aff0717a77c07be9f83ced74911b33b030e3546001600160a01b031690612583908361341f565b612594631a81c19160e01b8361341f565b6125a56359e49e0f60e01b8361341f565b6125b6630427554f60e51b8361341f565b6125c763691c6d9160e11b8361341f565b6125d8630c615ee960e01b8361341f565b6125e96302ff16f160e31b8361341f565b6125fa6329f9986d60e01b8361341f565b61260b633487e38960e21b8361341f565b61261c63a32bb68360e01b8361341f565b61262d63a2ab1ba160e01b8361341f565b61263e637fb202e560e01b8361341f565b61264f6314dcf98560e31b8361341f565b61266063355a395f60e01b8361341f565b61267163e8997dbd60e01b8361341f565b612682631e4aaa4f60e31b8361341f565b6126936358d644e560e11b8361341f565b6126a46374326e8f60e01b8361341f565b6126b56332e4706f60e01b8361341f565b6126c6639688185760e01b8361341f565b6126d7633c56ae1b60e01b8361341f565b6126e863402946b960e01b8361341f565b6126f963115dd4b160e01b8361341f565b61270a6302d77d0d60e41b8361341f565b61271b63367aaa9960e21b8361341f565b61272c630e3ff93760e41b8361341f565b61273d6358aac5b960e11b8361341f565b61274e639c53874f60e01b8361341f565b61275f630ea0e39360e41b8361341f565b612770639254e6bf60e01b8361341f565b612781636fbae33b60e01b8361341f565b612792634dd053a560e01b8361341f565b6127a3630c7c333f60e41b8361341f565b6127b4631674367b60e21b8361341f565b6127c56307024c2560e01b8361341f565b6127d66325e7f39360e11b8361341f565b6127e7633d1250bb60e21b8361341f565b6127f8633f1ae8b960e01b8361341f565b61280963da541e0960e01b8361341f565b61281a63dac8856160e01b8361341f565b61282b63462096f360e01b8361341f565b61283c63a1eb568360e01b8361341f565b61284d6301c832c960e71b8361341f565b6f50726f746f636f6c53657474696e677360801b826001600160a01b0316826001600160a01b03167f1420e3a2094d671bc2eb897941fa3d94ffa37f0cb6d530651946250a2151cb7f60405160405180910390a45050565b6128ad611e1f565b6128c95760405162461bcd60e51b815260040161054890614240565b603d5460ff16156128ec5760405162461bcd60e51b815260040161054890614160565b603580549082905560405133907f5b3b73dcee2d869937089aa5282989415bc607389ab2d4164ae83e7a9e1da08490610cb290849086906142de565b6007602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949560ff8516956101009095046001600160a01b03908116959481169493169288565b603c60209081526000928352604080842090915290825290205481565b61299f611e1f565b6129bb5760405162461bcd60e51b815260040161054890614240565b603d5460ff16156129de5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612a075760405162461bcd60e51b815260040161054890614200565b602080549082905560405133907f7f47cc725826cba6f43b2c0a013328b47d5f16aa9d27d6f0196a37a35c8e53f590610cb290849086906142de565b612a4b611e1f565b612a675760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612a8a5760405162461bcd60e51b815260040161054890614160565b68056bc75e2d63100000811115612ab35760405162461bcd60e51b815260040161054890614200565b601580549082905560405133907fa6c5bd6650afa784494efd877ecd8b7505efbbbaed74b7dd29f1472d6cd0c49290610cb290849086906142de565b6038546001600160a01b031681565b60275481565b60196020526000908152604090205481565b612b1e611e1f565b612b3a5760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612b5d5760405162461bcd60e51b815260040161054890614160565b612b6681613183565b612b825760405162461bcd60e51b8152600401610548906141f0565b602d80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907ec53b30140bc38db3a9070249d614e03304ada9e458b2d2f01d23feed00985a90600090a45050565b612bdd611e1f565b612bf95760405162461bcd60e51b815260040161054890614240565b603d5460ff1615158115151415612c225760405162461bcd60e51b8152600401610548906142a0565b603d805460ff19168215801591821790925560405190919033907f575725fa4843b62a71608b620f6d2a15792407ae40e019230a0500109782f66090600090a450565b603d5460ff1690565b612c76611e1f565b612c925760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612cb55760405162461bcd60e51b815260040161054890614160565b612cbe81613183565b612cda5760405162461bcd60e51b815260040161054890614290565b602e80546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907fffdeb9a96d6e1f867bcbb8a64815e576b65141995ab197cf02f7bb34fc186b7590600090a45050565b603f5490565b612d3c611e1f565b612d585760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612d7b5760405162461bcd60e51b815260040161054890614160565b601480546001600160a01b038381166001600160a01b03198316811790935560405191169190829033907f83e92cb95ec836f94e25e0a7b31c39f750833a8ce24eaa227a7050aafea08a8490600090a45050565b6014546001600160a01b031681565b612de6611e1f565b612e025760405162461bcd60e51b815260040161054890614240565b603d5460ff1615612e255760405162461bcd60e51b815260040161054890614160565b683635c9adc5dea00000811115612e4e5760405162461bcd60e51b815260040161054890614260565b6001600160a01b038381166000818152603c60209081526040808320948716808452949091529081902080549085905590519092919033907fd2d3c121d3439420f50efd36f0a01ebdac87111ec00360641c32aea3c6fc321390612eb590869088906142de565b60405180910390a450505050565b601b5481565b60285481565b603d5460009060ff1615612ef55760405162461bcd60e51b815260040161054890614160565b6014546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161054890614240565b6001600160a01b0383166000908152601660205260409020548015612f8e576001600160a01b03841660009081526016602090815260408083208390556017909152902054612f74908263ffffffff61320116565b6001600160a01b0385166000908152601760205260409020555b6001600160a01b0384166000908152601960205260409020548015612ffd576001600160a01b0385166000908152601960209081526040808320839055601a909152902054612fe3908263ffffffff61320116565b6001600160a01b0386166000908152601a60205260409020555b6001600160a01b0385166000908152601c6020526040902054801561306c576001600160a01b0386166000908152601c60209081526040808320839055601d909152902054613052908263ffffffff61320116565b6001600160a01b0387166000908152601d60205260409020555b600061308e82613082868663ffffffff61320116565b9063ffffffff61320116565b9050806130a05793506112e692505050565b6130ba6001600160a01b038816878363ffffffff61322616565b856001600160a01b0316876001600160a01b0316336001600160a01b03167fa0f881f497620074a74d99fb0378eab58be58cac19de6d38c57bcfeb1786183087878760405161310b939291906142ec565b60405180910390a49695505050505050565b613125611e1f565b6131415760405162461bcd60e51b815260040161054890614240565b6112b481613499565b6038546001600160a01b031690565b60395481565b60215481565b602e546001600160a01b031681565b6030546001600160a01b031681565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906131b757508115155b949350505050565b60006112e383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061351b565b6000828201838110156112e35760405162461bcd60e51b8152600401610548906141a0565b60405161327f90849063a9059cbb60e01b906132489086908690602401613fdd565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613547565b505050565b6040516132a89085906323b872dd60e01b9061324890879087908790602401613f9a565b50505050565b6060828201838110156132d35760405162461bcd60e51b815260040161054890614230565b600185015481116132e457806132ea565b60018501545b90508015806132f95750808410155b15613304575061115d565b838103604051908082528060200260200182016040528015613330578160200160208202803883390190505b50915060005b84820381101561337b57856001018582018154811061335157fe5b906000526020600020015483828151811061336857fe5b6020908102919091010152600101613336565b50509392505050565b6000816131b7848261362c565b6000816131b784826136f5565b3390565b601e5460009081908390808211156133b8578091505b816133d6575050602e546001600160a01b0316915060009050611f51565b6133e6818363ffffffff6131bf16565b601e55602e54613406906001600160a01b0316878463ffffffff61322616565b5050602e546001600160a01b0316946001945092505050565b6001600160e01b03198216600090815260056020526040902080546001600160a01b0319166001600160a01b0383169081179091551561347a57613474600d6001600160e01b0319841663ffffffff6136f516565b50613495565b61327f600d6001600160e01b0319841663ffffffff61362c16565b5050565b6001600160a01b0381166134bf5760405162461bcd60e51b815260040161054890614190565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561353f5760405162461bcd60e51b8152600401610548919061414f565b505050900390565b613559826001600160a01b0316613183565b6135755760405162461bcd60e51b8152600401610548906142b0565b60006060836001600160a01b0316836040516135919190613f65565b6000604051808303816000865af19150503d80600081146135ce576040519150601f19603f3d011682016040523d82523d6000602084013e6135d3565b606091505b5091509150816135f55760405162461bcd60e51b8152600401610548906141c0565b8051156132a857808060200190516136109190810190613926565b6132a85760405162461bcd60e51b815260040161054890614280565b60006136388383613735565b156136ed57600082815260208490526040902054600184015460001991820191018082146136b057600085600101828154811061367157fe5b906000526020600020015490508086600101848154811061368e57fe5b6000918252602080832090910192909255918252869052604090206001830190555b600084815260208690526040812055600185018054806136cc57fe5b600190038181906000526020600020016000905590556001925050506112e6565b5060006112e6565b60006137018383613735565b6136ed57506001808301805480830180835560009283526020808420909201859055848352908590526040909120556112e6565b60009081526020919091526040902054151590565b80356112e681614432565b60008083601f84011261376757600080fd5b50813567ffffffffffffffff81111561377f57600080fd5b602083019150836020820283011115611f5157600080fd5b80356112e681614446565b80516112e681614446565b80356112e68161444f565b80356112e681614458565b6000602082840312156137d557600080fd5b60006131b7848461374a565b600080604083850312156137f457600080fd5b6000613800858561374a565b92505060206138118582860161374a565b9150509250929050565b60008060006060848603121561383057600080fd5b600061383c868661374a565b935050602061384d8682870161374a565b925050604061385e868287016137ad565b9150509250925092565b6000806040838503121561387b57600080fd5b6000613887858561374a565b9250506020613811858286016137ad565b600080600080604085870312156138ae57600080fd5b843567ffffffffffffffff8111156138c557600080fd5b6138d187828801613755565b9450945050602085013567ffffffffffffffff8111156138f057600080fd5b6138fc87828801613755565b95989497509550505050565b60006020828403121561391a57600080fd5b60006131b78484613797565b60006020828403121561393857600080fd5b60006131b784846137a2565b60006020828403121561395657600080fd5b60006131b784846137ad565b6000806040838503121561397557600080fd5b600061380085856137ad565b60006020828403121561399357600080fd5b60006131b784846137b8565b600080604083850312156139b257600080fd5b600061388785856137ad565b60006139ca8383613a43565b505060200190565b6139db816143c5565b82525050565b60006139ec826143b3565b6139f681856143b7565b9350613a01836143ad565b8060005b83811015613a2f578151613a1988826139be565b9750613a24836143ad565b925050600101613a05565b509495945050505050565b6139db816143d0565b6139db816143d5565b6000613a57826143b3565b613a6181856143c0565b9350613a718185602086016143fc565b9290920192915050565b6139db816143f1565b6000613a8f826143b3565b613a9981856143b7565b9350613aa98185602086016143fc565b613ab281614428565b9093019392505050565b6000613ac96006836143b7565b6514185d5cd95960d21b815260200192915050565b6000613aeb6013836143b7565b724261736520726577617264206973207a65726f60681b815260200192915050565b6000613b1a6020836143b7565b7f6e65774c6f636b534f5641646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613b536026836143b7565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000613b9b601b836143b7565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613bd46016836143b7565b7508ccaca40e4cac4c2e8ca40d2e640e8dede40d0d2ced60531b815260200192915050565b6000613c066020836143b7565b7f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815260200192915050565b6000613c3f6021836143b7565b7f6e6577536f76546f6b656e41646472657373206e6f74206120636f6e747261638152601d60fa1b602082015260400192915050565b6000613c82600e836143b7565b6d0c6deeadce840dad2e6dac2e8c6d60931b815260200192915050565b6000613cac6020836143b7565b7f7772627463546f6b656e41646472657373206e6f74206120636f6e7472616374815260200192915050565b6000613ce5600e836143b7565b6d0ecc2d8eaca40e8dede40d0d2ced60931b815260200192915050565b6000613d0f601e836143b7565b7f726567697374727941646472657373206e6f74206120636f6e74726163740000815260200192915050565b6000613d48600f836143b7565b6e706f6f6c206e6f742065786973747360881b815260200192915050565b6000613d736011836143b7565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b6000613da0600c836143b7565b6b1d5b985d5d1a1bdc9a5e995960a21b815260200192915050565b6000613dc86014836143b7565b7319985b1b189858dac81b9bdd08185b1b1bddd95960621b815260200192915050565b6000613df8601e836143b7565b7f5370656369616c206665652072656261746520697320746f6f20686967680000815260200192915050565b6000613e31600d836143b7565b6c1c1bdbdb080f4f48185cdcd95d609a1b815260200192915050565b6000613e5a602a836143b7565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b602082015260400192915050565b6000613ea66024836143b7565b7f5f70726f746f636f6c546f6b656e41646472657373206e6f74206120636f6e748152631c9858dd60e21b602082015260400192915050565b6000613eec600c836143b7565b6b43616e277420746f67676c6560a01b815260200192915050565b6000613f14601f836143b7565b7f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400815260200192915050565b6000613f4d6009836143b7565b680706f6f6c203d3d20360bc1b815260200192915050565b600061115d8284613a4c565b602081016112e682846139d2565b60408101613f8d82856139d2565b61115d60208301846139d2565b60608101613fa882866139d2565b613fb560208301856139d2565b6131b76040830184613a43565b60408101613fd082856139d2565b61115d6020830184613a3a565b60408101613feb82856139d2565b61115d6020830184613a43565b602080825281016112e381846139e1565b602081016112e68284613a3a565b6101008101614026828b613a43565b614033602083018a613a3a565b61404060408301896139d2565b61404d60608301886139d2565b61405a60808301876139d2565b61406760a0830186613a43565b61407460c0830185613a43565b61408160e0830184613a43565b9998505050505050505050565b610180810161409d828f613a43565b6140aa602083018e613a43565b6140b7604083018d613a43565b6140c4606083018c613a3a565b6140d1608083018b613a43565b6140de60a083018a613a43565b6140eb60c0830189613a43565b6140f860e0830188613a43565b614106610100830187613a43565b614114610120830186613a43565b6141226101408301856139d2565b6141306101608301846139d2565b9d9c50505050505050505050505050565b602081016112e68284613a7b565b602080825281016112e38184613a84565b602080825281016112e681613abc565b602080825281016112e681613ade565b602080825281016112e681613b0d565b602080825281016112e681613b46565b602080825281016112e681613b8e565b602080825281016112e681613bc7565b602080825281016112e681613bf9565b602080825281016112e681613c32565b602080825281016112e681613c75565b602080825281016112e681613c9f565b602080825281016112e681613cd8565b602080825281016112e681613d02565b602080825281016112e681613d3b565b602080825281016112e681613d66565b602080825281016112e681613d93565b602080825281016112e681613dbb565b602080825281016112e681613deb565b602080825281016112e681613e24565b602080825281016112e681613e4d565b602080825281016112e681613e99565b602080825281016112e681613edf565b602080825281016112e681613f07565b602080825281016112e681613f40565b602081016112e68284613a43565b60408101613feb8285613a43565b606081016142fa8286613a43565b613fb56020830185613a43565b60a081016143158288613a43565b6143226020830187613a43565b61432f6040830186613a43565b61433c6060830185613a43565b6143496080830184613a43565b9695505050505050565b60c081016143618289613a43565b61436e6020830188613a43565b61437b6040830187613a43565b6143886060830186613a43565b6143956080830185613a43565b6143a260a0830184613a43565b979650505050505050565b60200190565b5190565b90815260200190565b919050565b60006112e6826143e5565b151590565b90565b6001600160e01b03191690565b6001600160a01b031690565b60006112e6826143c5565b60005b838110156144175781810151838201526020016143ff565b838111156132a85750506000910152565b601f01601f191690565b61443b816143c5565b81146112b457600080fd5b61443b816143d0565b61443b816143d5565b61443b816143d856fea365627a7a72315820f4d4c23f5e3817de22e785e86303b09912a3ff0f304c0938df405e5850c3292b6c6578706572696d656e74616cf564736f6c63430005110040",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
