{
  "_format": "hh-sol-artifact-1",
  "contractName": "JoeVault",
  "sourceName": "contracts/__deprecated__/Vaults/JoeVault.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "AdminFeePaid",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "CallerFeePaid",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "preCompound",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "postCompound",
          "type": "uint256"
        }
      ],
      "name": "Reinvested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "rewardToken",
          "type": "address"
        }
      ],
      "name": "RewardTokenSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "fromToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "toToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "protocolSwapAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nodeType",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "int128",
              "name": "_misc",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_in",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_out",
              "type": "int128"
            }
          ],
          "indexed": false,
          "internalType": "struct JoeRouter.Node[]",
          "name": "path",
          "type": "tuple[]"
        }
      ],
      "name": "RouteSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "startingTokenAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "endingTokenAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "minSwapAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "actualOut",
          "type": "uint256"
        }
      ],
      "name": "Swap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "BOpsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "FIRST_DONATION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_FIRST_MINT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_SWAP",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WAVAX",
      "outputs": [
        {
          "internalType": "contract IWAVAX",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "aaveLendingPool",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "adminFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "callerFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "compound",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "receiptTokens",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_borrower",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "depositFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "receiptTokens",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "depositWithPermit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "receiptTokens",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "deprecateRewardToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "emergencyRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amtToReturn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeRecipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_ind",
          "type": "uint256"
        }
      ],
      "name": "getRewardToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_underlying",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_adminFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_callerFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxReinvestStale",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_WAVAX",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastReinvestTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxReinvestStale",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "numRewardTokens",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "pushRewardToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "receiptPerUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amtToReturn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "redeemFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amtToReturn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "_v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "redeemForWithPermit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "rewardTokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "routes",
      "outputs": [
        {
          "internalType": "address",
          "name": "protocolSwapAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nodeType",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "tokenIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenOut",
          "type": "address"
        },
        {
          "internalType": "int128",
          "name": "_misc",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "_in",
          "type": "int128"
        },
        {
          "internalType": "int128",
          "name": "_out",
          "type": "int128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_aaveLendingPool",
          "type": "address"
        }
      ],
      "name": "setAAVE",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_who",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "setApprovals",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_BOpsAddress",
          "type": "address"
        }
      ],
      "name": "setBOps",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_adminFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_callerFee",
          "type": "uint256"
        }
      ],
      "name": "setFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_feeRecipient",
          "type": "address"
        }
      ],
      "name": "setFeeRecipient",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_traderJoeRouter",
          "type": "address"
        }
      ],
      "name": "setJoeRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_fromToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_toToken",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "protocolSwapAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nodeType",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "int128",
              "name": "_misc",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_in",
              "type": "int128"
            },
            {
              "internalType": "int128",
              "name": "_out",
              "type": "int128"
            }
          ],
          "internalType": "struct JoeRouter.Node[]",
          "name": "_path",
          "type": "tuple[]"
        }
      ],
      "name": "setRoute",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxReinvestStale",
          "type": "uint256"
        }
      ],
      "name": "setStale",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalHoldings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "traderJoeRouter",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlying",
      "outputs": [
        {
          "internalType": "contract ERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlyingDecimal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "underlyingPerReceipt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amt",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "withdrawFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506159da80620000216000396000f3fe6080604052600436106103605760003560e01c8063715018a6116101c4578063c5c70035116100f6578063e0794ec51161009a578063e9ec2e991161006c578063e9ec2e9914610a61578063f2fde38b14610a76578063f69e204614610a96578063f74877b514610aab57005b8063e0794ec5146109ec578063e32d5cf814610a01578063e74b981b14610a21578063e9d337b814610a4157005b8063d505accf116100d3578063d505accf1461097e578063db006a75146104b6578063dd62ed3e1461099e578063dfa2b901146109d657005b8063c5c7003514610931578063cb8dd1d714610949578063cc6e81121461095e57005b80638da5cb5b11610168578063a9059cbb1161013a578063a9059cbb146108b8578063b3533793146108d8578063b3db428b146108f1578063b6b55f251461091157005b80638da5cb5b1461084f57806395d89b411461086d578063a0be06f914610882578063a57f8cb71461089857005b80637b5dbbdd116101a15780637b5dbbdd146107d15780637bb7bed1146107ec5780637ecebe001461080c57806385a393bb1461083957005b8063715018a61461077c57806373aeea361461079157806373b295c2146107b157005b80633d61b2861161029d578063504a75de11610241578063600c557d11610213578063600c557d146106a2578063647f34301461070f5780636f307dc31461072f57806370a082311461074f57005b8063504a75de14610622578063515bc3231461064257806352f7c988146106625780635c0bfa881461068257005b80634a7e5cbb1161027a5780634a7e5cbb146105ad5780634c0f83c7146105c25780634cdf0392146105e25780634fb15b3f1461060257005b80633d61b2861461054d578063469048401461056d57806347e7ef241461058d57005b80631e9a6950116103045780632faff427116102e15780632faff427146104d6578063313ce567146104f657806334d441d0146105225780633644e5151461053857005b80631e9a69501461047657806323b872dd146104965780632e1a7d4d146104b657005b8063134b6edb1161033d578063134b6edb146103e457806318160ddd1461041c57806319b333e5146104405780631e0b80531461045657005b8063026b49a71461036957806306fdde0314610389578063095ea7b3146103b457005b3661036757005b005b34801561037557600080fd5b50610367610384366004614c3e565b610acb565b34801561039557600080fd5b5061039e610af5565b6040516103ab9190614ca1565b60405180910390f35b3480156103c057600080fd5b506103d46103cf366004614cb4565b610b83565b60405190151581526020016103ab565b3480156103f057600080fd5b506104046103ff366004614ce0565b610bf0565b6040516001600160a01b0390911681526020016103ab565b34801561042857600080fd5b5061043260035481565b6040519081526020016103ab565b34801561044c57600080fd5b5061043260d85481565b34801561046257600080fd5b50610367610471366004614ce0565b610c20565b34801561048257600080fd5b50610432610491366004614cb4565b610cc4565b3480156104a257600080fd5b506103d46104b1366004614cf9565b610d88565b3480156104c257600080fd5b506104326104d1366004614ce0565b610e7c565b3480156104e257600080fd5b50606e54610404906001600160a01b031681565b34801561050257600080fd5b506002546105109060ff1681565b60405160ff90911681526020016103ab565b34801561052e57600080fd5b5061043260dc5481565b34801561054457600080fd5b50610432610e88565b34801561055957600080fd5b50610432610568366004614ce0565b610ea7565b34801561057957600080fd5b5060da54610404906001600160a01b031681565b34801561059957600080fd5b506104326105a8366004614cb4565b610f48565b3480156105b957600080fd5b5060d754610432565b3480156105ce57600080fd5b506103676105dd366004614c3e565b6110df565b3480156105ee57600080fd5b506103676105fd366004614ddd565b611109565b34801561060e57600080fd5b5061043261061d366004614e85565b6112f1565b34801561062e57600080fd5b5061043261063d366004614ed6565b611306565b34801561064e57600080fd5b5061043261065d366004614f50565b61132f565b34801561066e57600080fd5b5061036761067d366004614fa3565b6113e5565b34801561068e57600080fd5b5061043261069d366004614e85565b611413565b3480156106ae57600080fd5b506106c26106bd366004614cf9565b61154e565b604080516001600160a01b039889168152602081019790975294871694860194909452919094166060840152600f93840b6080840152830b60a083015290910b60c082015260e0016103ab565b34801561071b57600080fd5b5061036761072a366004614c3e565b6115de565b34801561073b57600080fd5b5060d654610404906001600160a01b031681565b34801561075b57600080fd5b5061043261076a366004614c3e565b60046020526000908152604090205481565b34801561078857600080fd5b50610367611608565b34801561079d57600080fd5b506103676107ac366004614fc5565b61161c565b3480156107bd57600080fd5b5060de54610404906001600160a01b031681565b3480156107dd57600080fd5b50610432662386f26fc1000081565b3480156107f857600080fd5b50610404610807366004614ce0565b61171d565b34801561081857600080fd5b50610432610827366004614c3e565b60086020526000908152604090205481565b34801561084557600080fd5b5061043260d95481565b34801561085b57600080fd5b50603c546001600160a01b0316610404565b34801561087957600080fd5b5061039e611747565b34801561088e57600080fd5b5061043260db5481565b3480156108a457600080fd5b506103676108b3366004614c3e565b611754565b3480156108c457600080fd5b506103d46108d3366004614cb4565b611804565b3480156108e457600080fd5b5061043264e8d4a5100081565b3480156108fd57600080fd5b5061043261090c366004614cf9565b61187c565b34801561091d57600080fd5b5061043261092c366004614ce0565b611a5c565b34801561093d57600080fd5b506104326305f5e10081565b34801561095557600080fd5b50610432611a68565b34801561096a57600080fd5b5060dd54610404906001600160a01b031681565b34801561098a57600080fd5b5061036761099936600461505a565b611b0d565b3480156109aa57600080fd5b506104326109b93660046150cb565b600560209081526000928352604080842090915290825290205481565b3480156109e257600080fd5b5061043260d55481565b3480156109f857600080fd5b50610432611d7b565b348015610a0d57600080fd5b50610367610a1c366004614cf9565b611e21565b348015610a2d57600080fd5b50610367610a3c366004614c3e565b611ebb565b348015610a4d57600080fd5b50606f54610404906001600160a01b031681565b348015610a6d57600080fd5b50610432611ee5565b348015610a8257600080fd5b50610367610a91366004614c3e565b611f52565b348015610aa257600080fd5b50610367611fe2565b348015610ab757600080fd5b50610367610ac6366004614ce0565b611ffc565b610ad3612009565b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b60008054610b0290615104565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2e90615104565b8015610b7b5780601f10610b5057610100808354040283529160200191610b7b565b820191906000526020600020905b815481529060010190602001808311610b5e57829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bde9086815260200190565b60405180910390a35060015b92915050565b600060d78281548110610c0557610c05615138565b6000918252602090912001546001600160a01b031692915050565b610c28612009565b60d7548110610c7e5760405162461bcd60e51b815260206004820152600d60248201527f4f7574206f6620626f756e64730000000000000000000000000000000000000060448201526064015b60405180910390fd5b600060d78281548110610c9357610c93615138565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050565b6000610cce612063565b60d95460d854610cde9190615164565b421115610ced57610ced6120bc565b670de0b6b3a764000082610cff611a68565b610d099190615177565b610d13919061518e565b9050610d1f3383612603565b60d654610d36906001600160a01b0316848361267f565b604080518281526020810184905233916001600160a01b0386169183917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4610bea600160a355565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610de457610dbf83826151b0565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604081208054859290610e0c9084906151b0565b90915550506001600160a01b03808516600081815260046020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e679087815260200190565b60405180910390a360019150505b9392505050565b6000610bea3383610cc4565b60006006544614610ea057610e9b61273a565b905090565b5060075490565b6000610eb1612063565b670de0b6b3a764000082610ec3611a68565b610ecd9190615177565b610ed7919061518e565b9050610ee33383612603565b60d654610efa906001600160a01b0316338361267f565b60408051828152602081018490523391829182917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4610f43600160a355565b919050565b6000610f52612063565b60008211610f8d5760405162461bcd60e51b81526020600482015260086024820152673020746f6b656e7360c01b6044820152606401610c75565b60d95460d854610f9d9190615164565b421115610fac57610fac6120bc565b81670de0b6b3a764000081610fbf611d7b565b610fc99190615177565b610fd3919061518e565b915060035460000361101c5764e8d4a51000821015610ff157600080fd5b60da5461100b906001600160a01b03166305f5e1006127d4565b6110196305f5e100836151b0565b91505b8160000361106c5760405162461bcd60e51b815260206004820152600a60248201527f30207265636569766564000000000000000000000000000000000000000000006044820152606401610c75565b60d654611084906001600160a01b0316333086612838565b61108e84836127d4565b60408051848152602081018490526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a350610bea600160a355565b6110e7612009565b606f80546001600160a01b0319166001600160a01b0392909216919091179055565b600954610100900460ff16158080156111295750600954600160ff909116105b806111435750303b158015611143575060095460ff166001145b6111b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c75565b6009805460ff1916600117905580156111d8576009805461ff0019166101001790555b6111e0612902565b6111e8612975565b6111f4878760126129e8565b60d680546001600160a01b0319166001600160a01b038a169081179091556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561124d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127191906151c3565b60ff1660d55561128185856113e5565b60d983905560de80546001600160a01b0319166001600160a01b03841617905580156112e7576009805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60006112fe848484611413565b949350505050565b600061131788338888888888611b0d565b611322898989611413565b9998505050505050505050565b60d6546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526000916001600160a01b03169063d505accf9060e401600060405180830381600087803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b505050506113da87611a5c565b979650505050505050565b6113ed612009565b612710821080156113ff575061271081105b61140857600080fd5b60db9190915560dc55565b600061141d612063565b60d95460d85461142d9190615164565b42111561143c5761143c6120bc565b6001600160a01b0383166000908152600560209081526040808320338452909152902054600019811480159061147b5750336001600160a01b03851614155b156114af5761148a85826151b0565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b670de0b6b3a7640000856114c1611a68565b6114cb9190615177565b6114d5919061518e565b91506114e18486612603565b60d6546114f8906001600160a01b0316848461267f565b60408051838152602081018790526001600160a01b03808716929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a450610e75600160a355565b6070602052826000526040600020602052816000526040600020818154811061157657600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169850929650908316945090911691600f81810b92700100000000000000000000000000000000909204810b91900b87565b6115e6612009565b60dd80546001600160a01b0319166001600160a01b0392909216919091179055565b611610612009565b61161a6000612a25565b565b611624612009565b6001600160a01b038085166000908152607060209081526040808320938716835292905290812061165491614ba9565b60005b818110156116d9576001600160a01b03808616600090815260706020908152604080832093881683529290522083838381811061169657611696615138565b83546001810185556000948552602090942060e0909102929092019260060290910190506116c482826151fc565b505080806116d190615347565b915050611657565b507f01aa5c4f582e572c83ccd23ac58ee02c7e51aceb9d47d02987f31536b352992f8484848460405161170f949392919061536b565b60405180910390a150505050565b60d7818154811061172d57600080fd5b6000918252602090912001546001600160a01b0316905081565b60018054610b0290615104565b61175c612009565b6001600160a01b0381166117b25760405162461bcd60e51b815260206004820152600960248201527f30206164647265737300000000000000000000000000000000000000000000006044820152606401610c75565b60d780546001810182556000919091527f8a012a6de2943a5aa4d77acf5e695d4456760a3f1f30a5d6dc2079599187a0710180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600460205260408120805483919083906118259084906151b0565b90915550506001600160a01b038316600081815260046020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bde9086815260200190565b6000611886612063565b60dd546001600160a01b031633146118e05760405162461bcd60e51b815260206004820152600960248201527f424f7073206f6e6c7900000000000000000000000000000000000000000000006044820152606401610c75565b6000821161191b5760405162461bcd60e51b81526020600482015260086024820152673020746f6b656e7360c01b6044820152606401610c75565b60d95460d85461192b9190615164565b42111561193a5761193a6120bc565b81670de0b6b3a76400008161194d611d7b565b6119579190615177565b611961919061518e565b9150816000036119d95760405162461bcd60e51b815260206004820152603760248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c2c20796f7520776960448201527f6c6c206765742030207265636569707420746f6b656e730000000000000000006064820152608401610c75565b60d6546119f1906001600160a01b0316863086612838565b6119fb84836127d4565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611a49929190918252602082015260400190565b60405180910390a350610e75600160a355565b6000610bea3383610f48565b6000600354600003611a825760d554610e9b90600a615542565b60035460d6546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af1919061554e565b611b0390670de0b6b3a7640000615177565b610e9b919061518e565b42841015611b5d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c75565b60006001611b69610e88565b6001600160a01b038a811660008181526008602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611c90573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611cc65750876001600160a01b0316816001600160a01b0316145b611d125760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c75565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000600354600003611da05760d554611d959060246151b0565b610e9b90600a615542565b60d6546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c919061554e565b600354611b0390670de0b6b3a7640000615177565b611e29612009565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af1158015611e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb59190615567565b50505050565b611ec3612009565b60da80546001600160a01b0319166001600160a01b0392909216919091179055565b60d6546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b919061554e565b611f5a612009565b6001600160a01b038116611fd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c75565b611fdf81612a25565b50565b611fea612063565b611ff26120bc565b61161a600160a355565b612004612009565b60d955565b603c546001600160a01b0316331461161a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c75565b600260a354036120b55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c75565b600260a355565b60d6544260d8556001600160a01b031660006120d6611ee5565b905060005b60d7548110156123b15760006001600160a01b031660d7828154811061210357612103615138565b6000918252602090912001546001600160a01b03161461239f57826001600160a01b031660d7828154811061213a5761213a615138565b6000918252602090912001546001600160a01b03161461239f5760016001600160a01b031660d7828154811061217257612172615138565b6000918252602090912001546001600160a01b0316036122285747662386f26fc100008111156122225760de60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ec57600080fd5b505af1158015612200573d6000803e3d6000fd5b505060de5461222093506001600160a01b03169150869050836000612a77565b505b5061239f565b600060d7828154811061223d5761223d615138565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b2919061554e565b9050662386f26fc1000060d783815481106122cf576122cf615138565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561231d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234191906151c3565b61234c906012615589565b61235790600a6155a2565b6123619083615177565b111561239d5761239b60d7838154811061237d5761237d615138565b60009182526020822001546001600160a01b03169086908490612a77565b505b505b806123a981615347565b9150506120db565b5060006123bc611ee5565b905060006123ca83836151b0565b905080156125fe5760d6546040516370a0823160e01b815230600482015260009184916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561241f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612443919061554e565b61244d9084615177565b612457919061518e565b9050600061271060db548361246c9190615177565b612476919061518e565b9050600061271060dc548461248b9190615177565b612495919061518e565b60d65460da549192506124b5916001600160a01b0391821691168461267f565b60d6546124cc906001600160a01b0316338361267f565b60408051338152602081018890529081018690527f7595de4054dcab05a338b0855bb2e6155c81172fc76a0cdc037724df4d7e1c4f9060600160405180910390a160da54604080516001600160a01b039092168252602082018490527f4160cbc62d82681031bd44dffd104f752175f93f9b3c78a5a8f0867c667ee918910160405180910390a160408051338152602081018390527f97c227f091684bc53502ee6cf0e3bd656721fdbe9f1b9fddf678b8979efb5a26910160405180910390a160d6546040516370a0823160e01b81523060048201526125fa916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdf919061554e565b5050505b611eb5565b6001600160a01b0382166000908152600460205260408120805483929061262b9084906151b0565b90915550506003805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60006040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152826024820152602060006044836000895af191505080601f3d11600160005114161516156126e65750823b153d17155b80611eb55760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c75565b600160a355565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161276c91906155b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600360008282546127e69190615164565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612673565b60006040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af191505080601f3d11600160005114161516156128ae5750833b153d17155b806128fb5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610c75565b5050505050565b600954610100900460ff1661296d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a613306565b600954610100900460ff166129e05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a61337a565b60006129f48482615676565b506001612a018382615676565b506002805460ff191660ff831617905546600655612a1d61273a565b600755505050565b603c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae4919061554e565b6001600160a01b038088166000908152607060209081526040808320938a1683529281528282208054845181840281018401909552808552949550919390849084015b82821015612bc25760008481526020908190206040805160e0810182526006860290920180546001600160a01b03908116845260018083015485870152600283015482169385019390935260038201541660608401526004810154600f81810b6080860152700100000000000000000000000000000000909104810b60a0850152600590910154900b60c08301529083529092019101612b27565b50505050905060008590506000825111612c1e5760405162461bcd60e51b815260206004820152600e60248201527f4e6f20726f75746520666f756e640000000000000000000000000000000000006044820152606401610c75565b60005b82518110156131ac57828181518110612c3c57612c3c615138565b602002602001015160200151600103612cb957612cb2838281518110612c6457612c64615138565b602002602001015160000151848381518110612c8257612c82615138565b602002602001015160400151858481518110612ca057612ca0615138565b6020026020010151606001518a6133e5565b965061319a565b828181518110612ccb57612ccb615138565b602002602001015160200151600203612dbf57828181518110612cf057612cf0615138565b6020026020010151600001516001600160a01b0316838281518110612d1757612d17615138565b6020026020010151604001516001600160a01b031603612d7857612cb2838281518110612d4657612d46615138565b602002602001015160600151848381518110612d6457612d64615138565b60200260200101516000015189600161355e565b612cb2838281518110612d8d57612d8d615138565b602002602001015160400151848381518110612dab57612dab615138565b60200260200101516000015189600061355e565b828181518110612dd157612dd1615138565b602002602001015160200151600303612ea157612cb2838281518110612df957612df9615138565b602002602001015160400151848381518110612e1757612e17615138565b602002602001015160600151858481518110612e3557612e35615138565b6020026020010151600001518a878681518110612e5457612e54615138565b602002602001015160800151888781518110612e7257612e72615138565b602002602001015160a00151898881518110612e9057612e90615138565b602002602001015160c00151613b96565b828181518110612eb357612eb3615138565b602002602001015160200151600403612f0257612cb260016001600160a01b0316848381518110612ee657612ee6615138565b6020026020010151604001516001600160a01b031614886142c6565b828181518110612f1457612f14615138565b602002602001015160200151600503612f6c57612cb2838281518110612f3c57612f3c615138565b602002602001015160400151848381518110612f5a57612f5a615138565b602002602001015160000151896143c0565b828181518110612f7e57612f7e615138565b60200260200101516020015160060361307e57612cb2838281518110612fa657612fa6615138565b6020026020010151600001516001600160a01b0316848381518110612fcd57612fcd615138565b6020026020010151604001516001600160a01b03161461300a57838281518110612ff957612ff9615138565b602002602001015160400151613029565b83828151811061301c5761301c615138565b6020026020010151606001515b8885848151811061303c5761303c615138565b6020026020010151600001516001600160a01b031686858151811061306357613063615138565b6020026020010151604001516001600160a01b031614614514565b82818151811061309057613090615138565b6020026020010151602001516007036130e857612cb28382815181106130b8576130b8615138565b6020026020010151604001518483815181106130d6576130d6615138565b60200260200101516000015189614650565b8281815181106130fa576130fa615138565b60200260200101516020015160080361315257612cb283828151811061312257613122615138565b60200260200101516040015184838151811061314057613140615138565b6020026020010151600001518961485f565b60405162461bcd60e51b815260206004820152601160248201527f556e6b6e6f776e206e6f646520747970650000000000000000000000000000006044820152606401610c75565b806131a481615347565b915050612c21565b506040516370a0823160e01b815230600482015260009084906001600160a01b038a16906370a0823190602401602060405180830381865afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a919061554e565b61322491906151b0565b90508581101561329c5760405162461bcd60e51b815260206004820152603560248201527f446964206e6f74207265636569766520656e6f75676820746f6b656e7320746f60448201527f206163636f756e7420666f7220736c69707061676500000000000000000000006064820152608401610c75565b604080513381526001600160a01b038b811660208301528a1681830152606081018490526080810188905260a0810183905290517fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604139181900360c00190a198975050505050505050565b600954610100900460ff166133715760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a33612a25565b600954610100900460ff166127335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b60006133f284868461267f565b600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345a9190615754565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150866001600160a01b0316886001600160a01b031610156134ab576134a4868383614927565b92506134b9565b6134b6868284614927565b93505b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b038a169063022c0d9f906135119087908790309060248101615799565b600060405180830381600087803b15801561352b57600080fd5b505af115801561353f573d6000803e3d6000fd5b50505050836000036135515782611322565b5091979650505050505050565b600080846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c391906157d1565b90506000856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362991906157d1565b905083156138a857606e546040517fbaa2abde0000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283811660248301526044820188905260006064830181905260848301523060a48301524260c48301529091169063baa2abde9060e40160408051808303816000875af11580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e291906157ee565b5050866001600160a01b0316826001600160a01b03160361377b576040516370a0823160e01b8152306004820152613775908790839085906001600160a01b038316906370a08231906024015b602060405180830381865afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613770919061554e565b6133e5565b50613837565b866001600160a01b0316816001600160a01b0316036137ca576040516370a0823160e01b8152306004820152613775908790849084906001600160a01b038316906370a082319060240161372f565b60405162461bcd60e51b8152602060048201526024808201527f746f6b656e4f7574206973206e6f74206120746f6b656e205f696e207468652060448201527f70616972000000000000000000000000000000000000000000000000000000006064820152608401610c75565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f919061554e565b925050506112fe565b6000806000886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156138eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390f9190615754565b925092509250896001600160a01b0316856001600160a01b031603613ae95761394e898b86613770876dffffffffffffffffffffffffffff168d614a63565b50606e546040516370a0823160e01b81523060048201526001600160a01b039182169163e8e337009188918891908316906370a0823190602401602060405180830381865afa1580156139a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c9919061554e565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015613a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a31919061554e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526001600160a01b0394851660048201529390921660248401526044830152606482015260006084820181905260a48201523060c48201524260e4820152610104016060604051808303816000875af1158015613abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae19190615812565b505050613b22565b896001600160a01b0316846001600160a01b0316036137ca5761394e898b87613770866dffffffffffffffffffffffffffff168d614a63565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a919061554e565b955050505050506112fe565b60008084600f0b1215613faa5781600f0b60001903613ea257613bb884615840565b9350600084600f0b67ffffffffffffffff811115613bd857613bd8614d3a565b604051908082528060200260200182016040528015613c01578160200160208202803683370190505b509050858185600f0b81518110613c1a57613c1a615138565b60200260200101818152505084600f0b600203613cf257866001600160a01b0316630b4c7e4d604051806040016040528084600081518110613c5e57613c5e615138565b6020026020010151815260200184600181518110613c7e57613c7e615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613ca89291906158a1565b6020604051808303816000875af1158015613cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ceb919061554e565b9150613e9c565b84600f0b600303613d9457866001600160a01b0316634515cef3604051806060016040528084600081518110613d2a57613d2a615138565b6020026020010151815260200184600181518110613d4a57613d4a615138565b6020026020010151815260200184600281518110613d6a57613d6a615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613ca89291906158df565b84600f0b600403613e9c57866001600160a01b031663029b2f34604051806080016040528084600081518110613dcc57613dcc615138565b6020026020010151815260200184600181518110613dec57613dec615138565b6020026020010151815260200184600281518110613e0c57613e0c615138565b6020026020010151815260200184600381518110613e2c57613e2c615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613e5692919061591d565b6020604051808303816000875af1158015613e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e99919061554e565b91505b506113da565b82600f0b60001903613f4b576040517f1a4d01d200000000000000000000000000000000000000000000000000000000815260048101869052600f83900b6024820152600060448201526001600160a01b03871690631a4d01d2906064015b6020604051808303816000875af1158015613f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f44919061554e565b90506113da565b6040517f3df02124000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b602482015260448101869052600060648201526001600160a01b03871690633df0212490608401613f01565b600084600f0b13156113da5781600f0b6000190361421d57600084600f0b67ffffffffffffffff811115613fe057613fe0614d3a565b604051908082528060200260200182016040528015614009578160200160208202803683370190505b509050858185600f0b8151811061402257614022615138565b60200260200101818152505084600f0b6002036140b357866001600160a01b031663ee22be2360405180604001604052808460008151811061406657614066615138565b602002602001015181526020018460018151811061408657614086615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613ca893929190615938565b84600f0b60030361415857866001600160a01b0316632b6e993a6040518060600160405280846000815181106140eb576140eb615138565b602002602001015181526020018460018151811061410b5761410b615138565b602002602001015181526020018460028151811061412b5761412b615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613ca89392919061595c565b84600f0b600403613e9c57866001600160a01b031663dc3a2d8160405180608001604052808460008151811061419057614190615138565b60200260200101518152602001846001815181106141b0576141b0615138565b60200260200101518152602001846002815181106141d0576141d0615138565b60200260200101518152602001846003815181106141f0576141f0615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613e5693929190615980565b6040517fa6417ed6000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b602482015260448101869052600060648201526001600160a01b0387169063a6417ed6906084016020604051808303816000875af1158015614296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142ba919061554e565b98975050505050505050565b6000821561433b5773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561431d57600080fd5b505af1158015614331573d6000803e3d6000fd5b50505050506143ba565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905273b31f66aa3c1e785363f0875a1b74e27b85fd66c790632e1a7d4d90602401600060405180830381600087803b1580156143a157600080fd5b505af11580156143b5573d6000803e3d6000fd5b505050505b50919050565b6000826001600160a01b0316846001600160a01b03160361444f5760405163db006a7560e01b8152600481018390526001600160a01b0384169063db006a75906024016020604051808303816000875af1158015614422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614446919061554e565b50479050610e75565b826001600160a01b0316631249c58b836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03871693506370a08231925060240190505b602060405180830381865afa1580156144e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061450d919061554e565b9050610e75565b600081156145bc57606f546040517f69328dec0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052306044830152909116906369328dec906064016020604051808303816000875af115801561458e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b2919061554e565b9250829050610e75565b606f546040517fe8eda9df0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052306044830152600060648301529091169063e8eda9df90608401600060405180830381600087803b15801561463057600080fd5b505af1158015614644573d6000803e3d6000fd5b50505050829050610e75565b6000826001600160a01b0316846001600160a01b0316036147ae5760405163db006a7560e01b8152600481018390526001600160a01b0384169063db006a75906024016020604051808303816000875af11580156146b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d6919061554e565b506000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473b91906157d1565b6040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa158015614782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a6919061554e565b915050610e75565b6040517fa0712d68000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384169063a0712d68906024016020604051808303816000875af115801561480e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614832919061554e565b506040516370a0823160e01b81523060048201526001600160a01b038416906370a08231906024016144cc565b6000826001600160a01b0316846001600160a01b0316036148e1576040517f1e9a6950000000000000000000000000000000000000000000000000000000008152306004820152602481018390526001600160a01b03841690631e9a6950906044015b6020604051808303816000875af11580156144e9573d6000803e3d6000fd5b6040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384169063b6b55f25906024016148c2565b600080841161499e5760405162461bcd60e51b815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e540000000000000000000000000000000000000000006064820152608401610c75565b6000831180156149ae5750600082115b614a205760405162461bcd60e51b815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f49515549444954590000000000000000000000000000000000000000000000006064820152608401610c75565b6000614a2e6103e586615177565b90506000614a3c8483615177565b9050600082614a4d6103e888615177565b614a579190615164565b90506113da818361518e565b600080620f2ad9614a7785620f3c64615177565b614a81919061518e565b90506000614a8f8580615177565b614a9c90623cda29615177565b85614aaa86623cab64615177565b614ab49190615177565b614abe9190615164565b905081620f2ad9614ace83614af7565b614ada906101f4615177565b614ae4919061518e565b614aee91906151b0565b95945050505050565b60b581710100000000000000000000000000000000008110614b1e5760409190911b9060801c5b69010000000000000000008110614b3a5760209190911b9060401c5b650100000000008110614b525760109190911b9060201c5b63010000008110614b685760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b5080546000825560060290600052602060002090810190611fdf91905b80821115614c255780546001600160a01b031990811682556000600183018190556002830180548316905560038301805490921690915560048201556005810180546fffffffffffffffffffffffffffffffff19169055600601614bc6565b5090565b6001600160a01b0381168114611fdf57600080fd5b600060208284031215614c5057600080fd5b8135610e7581614c29565b6000815180845260005b81811015614c8157602081850181015186830182015201614c65565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e756020830184614c5b565b60008060408385031215614cc757600080fd5b8235614cd281614c29565b946020939093013593505050565b600060208284031215614cf257600080fd5b5035919050565b600080600060608486031215614d0e57600080fd5b8335614d1981614c29565b92506020840135614d2981614c29565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614d6157600080fd5b813567ffffffffffffffff80821115614d7c57614d7c614d3a565b604051601f8301601f19908116603f01168101908282118183101715614da457614da4614d3a565b81604052838152866020858801011115614dbd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600060e0888a031215614df857600080fd5b8735614e0381614c29565b9650602088013567ffffffffffffffff80821115614e2057600080fd5b614e2c8b838c01614d50565b975060408a0135915080821115614e4257600080fd5b50614e4f8a828b01614d50565b955050606088013593506080880135925060a0880135915060c0880135614e7581614c29565b8091505092959891949750929550565b600080600060608486031215614e9a57600080fd5b833592506020840135614eac81614c29565b91506040840135614ebc81614c29565b809150509250925092565b60ff81168114611fdf57600080fd5b600080600080600080600080610100898b031215614ef357600080fd5b883597506020890135614f0581614c29565b96506040890135614f1581614c29565b9550606089013594506080890135935060a0890135614f3381614ec7565b979a969950949793969295929450505060c08201359160e0013590565b60008060008060008060c08789031215614f6957600080fd5b8635955060208701359450604087013593506060870135614f8981614ec7565b9598949750929560808101359460a0909101359350915050565b60008060408385031215614fb657600080fd5b50508035926020909101359150565b60008060008060608587031215614fdb57600080fd5b8435614fe681614c29565b93506020850135614ff681614c29565b9250604085013567ffffffffffffffff8082111561501357600080fd5b818701915087601f83011261502757600080fd5b81358181111561503657600080fd5b88602060e08302850101111561504b57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a03121561507557600080fd5b873561508081614c29565b9650602088013561509081614c29565b9550604088013594506060880135935060808801356150ae81614ec7565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156150de57600080fd5b82356150e981614c29565b915060208301356150f981614c29565b809150509250929050565b600181811c9082168061511857607f821691505b6020821081036143ba57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610bea57610bea61514e565b8082028115828204841417610bea57610bea61514e565b6000826151ab57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bea57610bea61514e565b6000602082840312156151d557600080fd5b8151610e7581614ec7565b80600f0b8114611fdf57600080fd5b60008135610bea816151e0565b813561520781614c29565b81546001600160a01b0319166001600160a01b0382161782555060208201356001820155604082013561523981614c29565b6002820180546001600160a01b0319166001600160a01b03831617905550606082013561526581614c29565b6003820180546001600160a01b0319166001600160a01b03831617905550600481016080830135615295816151e0565b81546fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff82161782555060a08301356152cf816151e0565b81546fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617905561534361530e60c084016151ef565b600583016fffffffffffffffffffffffffffffffff19815416826fffffffffffffffffffffffffffffffff1681178255505050565b5050565b6000600182016153595761535961514e565b5060010190565b8035610f43816151e0565b600060608083016001600160a01b03808916855260208189168187015260408481880152838885526080945084880190508960005b8a81101561544c5781356153b381614c29565b861683528185013585840152838201356153cc81614c29565b861683850152818801356153df81614c29565b8616838901526153f0828801615360565b6153fe88850182600f0b9052565b5060a061540c818401615360565b61541a82860182600f0b9052565b505060c0615429818401615360565b61543782860182600f0b9052565b505060e09283019291909101906001016153a0565b50909c9b505050505050505050505050565b600181815b8085111561549957816000190482111561547f5761547f61514e565b8085161561548c57918102915b93841c9390800290615463565b509250929050565b6000826154b057506001610bea565b816154bd57506000610bea565b81600181146154d357600281146154dd576154f9565b6001915050610bea565b60ff8411156154ee576154ee61514e565b50506001821b610bea565b5060208310610133831016604e8410600b841016171561551c575081810a610bea565b615526838361545e565b806000190482111561553a5761553a61514e565b029392505050565b6000610e7583836154a1565b60006020828403121561556057600080fd5b5051919050565b60006020828403121561557957600080fd5b81518015158114610e7557600080fd5b60ff8281168282160390811115610bea57610bea61514e565b6000610e7560ff8416836154a1565b60008083546155bf81615104565b600182811680156155d757600181146155ec5761561b565b60ff198416875282151583028701945061561b565b8760005260208060002060005b858110156156125781548a8201529084019082016155f9565b50505082870194505b50929695505050505050565b601f82111561567157600081815260208120601f850160051c8101602086101561564e5750805b601f850160051c820191505b8181101561566d5782815560010161565a565b5050505b505050565b815167ffffffffffffffff81111561569057615690614d3a565b6156a48161569e8454615104565b84615627565b602080601f8311600181146156d957600084156156c15750858301515b600019600386901b1c1916600185901b17855561566d565b600085815260208120601f198616915b82811015615708578886015182559484019460019091019084016156e9565b50858210156157265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516dffffffffffffffffffffffffffff81168114610f4357600080fd5b60008060006060848603121561576957600080fd5b61577284615736565b925061578060208501615736565b9150604084015163ffffffff81168114614ebc57600080fd5b8481528360208201526001600160a01b03831660408201526080606082015260006157c76080830184614c5b565b9695505050505050565b6000602082840312156157e357600080fd5b8151610e7581614c29565b6000806040838503121561580157600080fd5b505080516020909101519092909150565b60008060006060848603121561582757600080fd5b8351925060208401519150604084015190509250925092565b600081600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036158755761587561514e565b60000392915050565b8060005b6002811015611eb5578151845260209384019390910190600101615882565b606081016158af828561587e565b8260408301529392505050565b8060005b6003811015611eb55781518452602093840193909101906001016158c0565b608081016158ed82856158bc565b8260608301529392505050565b8060005b6004811015611eb55781518452602093840193909101906001016158fe565b60a0810161592b82856158fa565b8260808301529392505050565b60808101615946828661587e565b8360408301528215156060830152949350505050565b60a0810161596a82866158bc565b8360608301528215156080830152949350505050565b60c0810161598e82866158fa565b83608083015282151560a083015294935050505056fea2646970667358221220a6ea69a37071f3d31608b07055dc259541e99777f6dabee6b58a98ba1cb8322164736f6c63430008130033",
  "deployedBytecode": "0x6080604052600436106103605760003560e01c8063715018a6116101c4578063c5c70035116100f6578063e0794ec51161009a578063e9ec2e991161006c578063e9ec2e9914610a61578063f2fde38b14610a76578063f69e204614610a96578063f74877b514610aab57005b8063e0794ec5146109ec578063e32d5cf814610a01578063e74b981b14610a21578063e9d337b814610a4157005b8063d505accf116100d3578063d505accf1461097e578063db006a75146104b6578063dd62ed3e1461099e578063dfa2b901146109d657005b8063c5c7003514610931578063cb8dd1d714610949578063cc6e81121461095e57005b80638da5cb5b11610168578063a9059cbb1161013a578063a9059cbb146108b8578063b3533793146108d8578063b3db428b146108f1578063b6b55f251461091157005b80638da5cb5b1461084f57806395d89b411461086d578063a0be06f914610882578063a57f8cb71461089857005b80637b5dbbdd116101a15780637b5dbbdd146107d15780637bb7bed1146107ec5780637ecebe001461080c57806385a393bb1461083957005b8063715018a61461077c57806373aeea361461079157806373b295c2146107b157005b80633d61b2861161029d578063504a75de11610241578063600c557d11610213578063600c557d146106a2578063647f34301461070f5780636f307dc31461072f57806370a082311461074f57005b8063504a75de14610622578063515bc3231461064257806352f7c988146106625780635c0bfa881461068257005b80634a7e5cbb1161027a5780634a7e5cbb146105ad5780634c0f83c7146105c25780634cdf0392146105e25780634fb15b3f1461060257005b80633d61b2861461054d578063469048401461056d57806347e7ef241461058d57005b80631e9a6950116103045780632faff427116102e15780632faff427146104d6578063313ce567146104f657806334d441d0146105225780633644e5151461053857005b80631e9a69501461047657806323b872dd146104965780632e1a7d4d146104b657005b8063134b6edb1161033d578063134b6edb146103e457806318160ddd1461041c57806319b333e5146104405780631e0b80531461045657005b8063026b49a71461036957806306fdde0314610389578063095ea7b3146103b457005b3661036757005b005b34801561037557600080fd5b50610367610384366004614c3e565b610acb565b34801561039557600080fd5b5061039e610af5565b6040516103ab9190614ca1565b60405180910390f35b3480156103c057600080fd5b506103d46103cf366004614cb4565b610b83565b60405190151581526020016103ab565b3480156103f057600080fd5b506104046103ff366004614ce0565b610bf0565b6040516001600160a01b0390911681526020016103ab565b34801561042857600080fd5b5061043260035481565b6040519081526020016103ab565b34801561044c57600080fd5b5061043260d85481565b34801561046257600080fd5b50610367610471366004614ce0565b610c20565b34801561048257600080fd5b50610432610491366004614cb4565b610cc4565b3480156104a257600080fd5b506103d46104b1366004614cf9565b610d88565b3480156104c257600080fd5b506104326104d1366004614ce0565b610e7c565b3480156104e257600080fd5b50606e54610404906001600160a01b031681565b34801561050257600080fd5b506002546105109060ff1681565b60405160ff90911681526020016103ab565b34801561052e57600080fd5b5061043260dc5481565b34801561054457600080fd5b50610432610e88565b34801561055957600080fd5b50610432610568366004614ce0565b610ea7565b34801561057957600080fd5b5060da54610404906001600160a01b031681565b34801561059957600080fd5b506104326105a8366004614cb4565b610f48565b3480156105b957600080fd5b5060d754610432565b3480156105ce57600080fd5b506103676105dd366004614c3e565b6110df565b3480156105ee57600080fd5b506103676105fd366004614ddd565b611109565b34801561060e57600080fd5b5061043261061d366004614e85565b6112f1565b34801561062e57600080fd5b5061043261063d366004614ed6565b611306565b34801561064e57600080fd5b5061043261065d366004614f50565b61132f565b34801561066e57600080fd5b5061036761067d366004614fa3565b6113e5565b34801561068e57600080fd5b5061043261069d366004614e85565b611413565b3480156106ae57600080fd5b506106c26106bd366004614cf9565b61154e565b604080516001600160a01b039889168152602081019790975294871694860194909452919094166060840152600f93840b6080840152830b60a083015290910b60c082015260e0016103ab565b34801561071b57600080fd5b5061036761072a366004614c3e565b6115de565b34801561073b57600080fd5b5060d654610404906001600160a01b031681565b34801561075b57600080fd5b5061043261076a366004614c3e565b60046020526000908152604090205481565b34801561078857600080fd5b50610367611608565b34801561079d57600080fd5b506103676107ac366004614fc5565b61161c565b3480156107bd57600080fd5b5060de54610404906001600160a01b031681565b3480156107dd57600080fd5b50610432662386f26fc1000081565b3480156107f857600080fd5b50610404610807366004614ce0565b61171d565b34801561081857600080fd5b50610432610827366004614c3e565b60086020526000908152604090205481565b34801561084557600080fd5b5061043260d95481565b34801561085b57600080fd5b50603c546001600160a01b0316610404565b34801561087957600080fd5b5061039e611747565b34801561088e57600080fd5b5061043260db5481565b3480156108a457600080fd5b506103676108b3366004614c3e565b611754565b3480156108c457600080fd5b506103d46108d3366004614cb4565b611804565b3480156108e457600080fd5b5061043264e8d4a5100081565b3480156108fd57600080fd5b5061043261090c366004614cf9565b61187c565b34801561091d57600080fd5b5061043261092c366004614ce0565b611a5c565b34801561093d57600080fd5b506104326305f5e10081565b34801561095557600080fd5b50610432611a68565b34801561096a57600080fd5b5060dd54610404906001600160a01b031681565b34801561098a57600080fd5b5061036761099936600461505a565b611b0d565b3480156109aa57600080fd5b506104326109b93660046150cb565b600560209081526000928352604080842090915290825290205481565b3480156109e257600080fd5b5061043260d55481565b3480156109f857600080fd5b50610432611d7b565b348015610a0d57600080fd5b50610367610a1c366004614cf9565b611e21565b348015610a2d57600080fd5b50610367610a3c366004614c3e565b611ebb565b348015610a4d57600080fd5b50606f54610404906001600160a01b031681565b348015610a6d57600080fd5b50610432611ee5565b348015610a8257600080fd5b50610367610a91366004614c3e565b611f52565b348015610aa257600080fd5b50610367611fe2565b348015610ab757600080fd5b50610367610ac6366004614ce0565b611ffc565b610ad3612009565b606e80546001600160a01b0319166001600160a01b0392909216919091179055565b60008054610b0290615104565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2e90615104565b8015610b7b5780601f10610b5057610100808354040283529160200191610b7b565b820191906000526020600020905b815481529060010190602001808311610b5e57829003601f168201915b505050505081565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bde9086815260200190565b60405180910390a35060015b92915050565b600060d78281548110610c0557610c05615138565b6000918252602090912001546001600160a01b031692915050565b610c28612009565b60d7548110610c7e5760405162461bcd60e51b815260206004820152600d60248201527f4f7574206f6620626f756e64730000000000000000000000000000000000000060448201526064015b60405180910390fd5b600060d78281548110610c9357610c93615138565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050565b6000610cce612063565b60d95460d854610cde9190615164565b421115610ced57610ced6120bc565b670de0b6b3a764000082610cff611a68565b610d099190615177565b610d13919061518e565b9050610d1f3383612603565b60d654610d36906001600160a01b0316848361267f565b604080518281526020810184905233916001600160a01b0386169183917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4610bea600160a355565b6001600160a01b03831660009081526005602090815260408083203384529091528120546000198114610de457610dbf83826151b0565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b6001600160a01b03851660009081526004602052604081208054859290610e0c9084906151b0565b90915550506001600160a01b03808516600081815260046020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e679087815260200190565b60405180910390a360019150505b9392505050565b6000610bea3383610cc4565b60006006544614610ea057610e9b61273a565b905090565b5060075490565b6000610eb1612063565b670de0b6b3a764000082610ec3611a68565b610ecd9190615177565b610ed7919061518e565b9050610ee33383612603565b60d654610efa906001600160a01b0316338361267f565b60408051828152602081018490523391829182917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4610f43600160a355565b919050565b6000610f52612063565b60008211610f8d5760405162461bcd60e51b81526020600482015260086024820152673020746f6b656e7360c01b6044820152606401610c75565b60d95460d854610f9d9190615164565b421115610fac57610fac6120bc565b81670de0b6b3a764000081610fbf611d7b565b610fc99190615177565b610fd3919061518e565b915060035460000361101c5764e8d4a51000821015610ff157600080fd5b60da5461100b906001600160a01b03166305f5e1006127d4565b6110196305f5e100836151b0565b91505b8160000361106c5760405162461bcd60e51b815260206004820152600a60248201527f30207265636569766564000000000000000000000000000000000000000000006044820152606401610c75565b60d654611084906001600160a01b0316333086612838565b61108e84836127d4565b60408051848152602081018490526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a350610bea600160a355565b6110e7612009565b606f80546001600160a01b0319166001600160a01b0392909216919091179055565b600954610100900460ff16158080156111295750600954600160ff909116105b806111435750303b158015611143575060095460ff166001145b6111b55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c75565b6009805460ff1916600117905580156111d8576009805461ff0019166101001790555b6111e0612902565b6111e8612975565b6111f4878760126129e8565b60d680546001600160a01b0319166001600160a01b038a169081179091556040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801561124d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127191906151c3565b60ff1660d55561128185856113e5565b60d983905560de80546001600160a01b0319166001600160a01b03841617905580156112e7576009805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b60006112fe848484611413565b949350505050565b600061131788338888888888611b0d565b611322898989611413565b9998505050505050505050565b60d6546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526000916001600160a01b03169063d505accf9060e401600060405180830381600087803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b505050506113da87611a5c565b979650505050505050565b6113ed612009565b612710821080156113ff575061271081105b61140857600080fd5b60db9190915560dc55565b600061141d612063565b60d95460d85461142d9190615164565b42111561143c5761143c6120bc565b6001600160a01b0383166000908152600560209081526040808320338452909152902054600019811480159061147b5750336001600160a01b03851614155b156114af5761148a85826151b0565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b670de0b6b3a7640000856114c1611a68565b6114cb9190615177565b6114d5919061518e565b91506114e18486612603565b60d6546114f8906001600160a01b0316848461267f565b60408051838152602081018790526001600160a01b03808716929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a450610e75600160a355565b6070602052826000526040600020602052816000526040600020818154811061157657600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160a01b039485169850929650908316945090911691600f81810b92700100000000000000000000000000000000909204810b91900b87565b6115e6612009565b60dd80546001600160a01b0319166001600160a01b0392909216919091179055565b611610612009565b61161a6000612a25565b565b611624612009565b6001600160a01b038085166000908152607060209081526040808320938716835292905290812061165491614ba9565b60005b818110156116d9576001600160a01b03808616600090815260706020908152604080832093881683529290522083838381811061169657611696615138565b83546001810185556000948552602090942060e0909102929092019260060290910190506116c482826151fc565b505080806116d190615347565b915050611657565b507f01aa5c4f582e572c83ccd23ac58ee02c7e51aceb9d47d02987f31536b352992f8484848460405161170f949392919061536b565b60405180910390a150505050565b60d7818154811061172d57600080fd5b6000918252602090912001546001600160a01b0316905081565b60018054610b0290615104565b61175c612009565b6001600160a01b0381166117b25760405162461bcd60e51b815260206004820152600960248201527f30206164647265737300000000000000000000000000000000000000000000006044820152606401610c75565b60d780546001810182556000919091527f8a012a6de2943a5aa4d77acf5e695d4456760a3f1f30a5d6dc2079599187a0710180546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152600460205260408120805483919083906118259084906151b0565b90915550506001600160a01b038316600081815260046020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bde9086815260200190565b6000611886612063565b60dd546001600160a01b031633146118e05760405162461bcd60e51b815260206004820152600960248201527f424f7073206f6e6c7900000000000000000000000000000000000000000000006044820152606401610c75565b6000821161191b5760405162461bcd60e51b81526020600482015260086024820152673020746f6b656e7360c01b6044820152606401610c75565b60d95460d85461192b9190615164565b42111561193a5761193a6120bc565b81670de0b6b3a76400008161194d611d7b565b6119579190615177565b611961919061518e565b9150816000036119d95760405162461bcd60e51b815260206004820152603760248201527f4465706f73697420616d6f756e7420746f6f20736d616c6c2c20796f7520776960448201527f6c6c206765742030207265636569707420746f6b656e730000000000000000006064820152608401610c75565b60d6546119f1906001600160a01b0316863086612838565b6119fb84836127d4565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611a49929190918252602082015260400190565b60405180910390a350610e75600160a355565b6000610bea3383610f48565b6000600354600003611a825760d554610e9b90600a615542565b60035460d6546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af1919061554e565b611b0390670de0b6b3a7640000615177565b610e9b919061518e565b42841015611b5d5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610c75565b60006001611b69610e88565b6001600160a01b038a811660008181526008602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611c90573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611cc65750876001600160a01b0316816001600160a01b0316145b611d125760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610c75565b6001600160a01b0390811660009081526005602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000600354600003611da05760d554611d959060246151b0565b610e9b90600a615542565b60d6546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c919061554e565b600354611b0390670de0b6b3a7640000615177565b611e29612009565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af1158015611e91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb59190615567565b50505050565b611ec3612009565b60da80546001600160a01b0319166001600160a01b0392909216919091179055565b60d6546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9b919061554e565b611f5a612009565b6001600160a01b038116611fd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c75565b611fdf81612a25565b50565b611fea612063565b611ff26120bc565b61161a600160a355565b612004612009565b60d955565b603c546001600160a01b0316331461161a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c75565b600260a354036120b55760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c75565b600260a355565b60d6544260d8556001600160a01b031660006120d6611ee5565b905060005b60d7548110156123b15760006001600160a01b031660d7828154811061210357612103615138565b6000918252602090912001546001600160a01b03161461239f57826001600160a01b031660d7828154811061213a5761213a615138565b6000918252602090912001546001600160a01b03161461239f5760016001600160a01b031660d7828154811061217257612172615138565b6000918252602090912001546001600160a01b0316036122285747662386f26fc100008111156122225760de60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ec57600080fd5b505af1158015612200573d6000803e3d6000fd5b505060de5461222093506001600160a01b03169150869050836000612a77565b505b5061239f565b600060d7828154811061223d5761223d615138565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b2919061554e565b9050662386f26fc1000060d783815481106122cf576122cf615138565b600091825260209182902001546040805163313ce56760e01b815290516001600160a01b039092169263313ce567926004808401938290030181865afa15801561231d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234191906151c3565b61234c906012615589565b61235790600a6155a2565b6123619083615177565b111561239d5761239b60d7838154811061237d5761237d615138565b60009182526020822001546001600160a01b03169086908490612a77565b505b505b806123a981615347565b9150506120db565b5060006123bc611ee5565b905060006123ca83836151b0565b905080156125fe5760d6546040516370a0823160e01b815230600482015260009184916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561241f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612443919061554e565b61244d9084615177565b612457919061518e565b9050600061271060db548361246c9190615177565b612476919061518e565b9050600061271060dc548461248b9190615177565b612495919061518e565b60d65460da549192506124b5916001600160a01b0391821691168461267f565b60d6546124cc906001600160a01b0316338361267f565b60408051338152602081018890529081018690527f7595de4054dcab05a338b0855bb2e6155c81172fc76a0cdc037724df4d7e1c4f9060600160405180910390a160da54604080516001600160a01b039092168252602082018490527f4160cbc62d82681031bd44dffd104f752175f93f9b3c78a5a8f0867c667ee918910160405180910390a160408051338152602081018390527f97c227f091684bc53502ee6cf0e3bd656721fdbe9f1b9fddf678b8979efb5a26910160405180910390a160d6546040516370a0823160e01b81523060048201526125fa916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdf919061554e565b5050505b611eb5565b6001600160a01b0382166000908152600460205260408120805483929061262b9084906151b0565b90915550506003805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60006040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152826024820152602060006044836000895af191505080601f3d11600160005114161516156126e65750823b153d17155b80611eb55760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c75565b600160a355565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161276c91906155b1565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600360008282546127e69190615164565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612673565b60006040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af191505080601f3d11600160005114161516156128ae5750833b153d17155b806128fb5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610c75565b5050505050565b600954610100900460ff1661296d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a613306565b600954610100900460ff166129e05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a61337a565b60006129f48482615676565b506001612a018382615676565b506002805460ff191660ff831617905546600655612a1d61273a565b600755505050565b603c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038616906370a0823190602401602060405180830381865afa158015612ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae4919061554e565b6001600160a01b038088166000908152607060209081526040808320938a1683529281528282208054845181840281018401909552808552949550919390849084015b82821015612bc25760008481526020908190206040805160e0810182526006860290920180546001600160a01b03908116845260018083015485870152600283015482169385019390935260038201541660608401526004810154600f81810b6080860152700100000000000000000000000000000000909104810b60a0850152600590910154900b60c08301529083529092019101612b27565b50505050905060008590506000825111612c1e5760405162461bcd60e51b815260206004820152600e60248201527f4e6f20726f75746520666f756e640000000000000000000000000000000000006044820152606401610c75565b60005b82518110156131ac57828181518110612c3c57612c3c615138565b602002602001015160200151600103612cb957612cb2838281518110612c6457612c64615138565b602002602001015160000151848381518110612c8257612c82615138565b602002602001015160400151858481518110612ca057612ca0615138565b6020026020010151606001518a6133e5565b965061319a565b828181518110612ccb57612ccb615138565b602002602001015160200151600203612dbf57828181518110612cf057612cf0615138565b6020026020010151600001516001600160a01b0316838281518110612d1757612d17615138565b6020026020010151604001516001600160a01b031603612d7857612cb2838281518110612d4657612d46615138565b602002602001015160600151848381518110612d6457612d64615138565b60200260200101516000015189600161355e565b612cb2838281518110612d8d57612d8d615138565b602002602001015160400151848381518110612dab57612dab615138565b60200260200101516000015189600061355e565b828181518110612dd157612dd1615138565b602002602001015160200151600303612ea157612cb2838281518110612df957612df9615138565b602002602001015160400151848381518110612e1757612e17615138565b602002602001015160600151858481518110612e3557612e35615138565b6020026020010151600001518a878681518110612e5457612e54615138565b602002602001015160800151888781518110612e7257612e72615138565b602002602001015160a00151898881518110612e9057612e90615138565b602002602001015160c00151613b96565b828181518110612eb357612eb3615138565b602002602001015160200151600403612f0257612cb260016001600160a01b0316848381518110612ee657612ee6615138565b6020026020010151604001516001600160a01b031614886142c6565b828181518110612f1457612f14615138565b602002602001015160200151600503612f6c57612cb2838281518110612f3c57612f3c615138565b602002602001015160400151848381518110612f5a57612f5a615138565b602002602001015160000151896143c0565b828181518110612f7e57612f7e615138565b60200260200101516020015160060361307e57612cb2838281518110612fa657612fa6615138565b6020026020010151600001516001600160a01b0316848381518110612fcd57612fcd615138565b6020026020010151604001516001600160a01b03161461300a57838281518110612ff957612ff9615138565b602002602001015160400151613029565b83828151811061301c5761301c615138565b6020026020010151606001515b8885848151811061303c5761303c615138565b6020026020010151600001516001600160a01b031686858151811061306357613063615138565b6020026020010151604001516001600160a01b031614614514565b82818151811061309057613090615138565b6020026020010151602001516007036130e857612cb28382815181106130b8576130b8615138565b6020026020010151604001518483815181106130d6576130d6615138565b60200260200101516000015189614650565b8281815181106130fa576130fa615138565b60200260200101516020015160080361315257612cb283828151811061312257613122615138565b60200260200101516040015184838151811061314057613140615138565b6020026020010151600001518961485f565b60405162461bcd60e51b815260206004820152601160248201527f556e6b6e6f776e206e6f646520747970650000000000000000000000000000006044820152606401610c75565b806131a481615347565b915050612c21565b506040516370a0823160e01b815230600482015260009084906001600160a01b038a16906370a0823190602401602060405180830381865afa1580156131f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061321a919061554e565b61322491906151b0565b90508581101561329c5760405162461bcd60e51b815260206004820152603560248201527f446964206e6f74207265636569766520656e6f75676820746f6b656e7320746f60448201527f206163636f756e7420666f7220736c69707061676500000000000000000000006064820152608401610c75565b604080513381526001600160a01b038b811660208301528a1681830152606081018490526080810188905260a0810183905290517fd6d34547c69c5ee3d2667625c188acf1006abb93e0ee7cf03925c67cf77604139181900360c00190a198975050505050505050565b600954610100900460ff166133715760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b61161a33612a25565b600954610100900460ff166127335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610c75565b60006133f284868461267f565b600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345a9190615754565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150866001600160a01b0316886001600160a01b031610156134ab576134a4868383614927565b92506134b9565b6134b6868284614927565b93505b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b038a169063022c0d9f906135119087908790309060248101615799565b600060405180830381600087803b15801561352b57600080fd5b505af115801561353f573d6000803e3d6000fd5b50505050836000036135515782611322565b5091979650505050505050565b600080846001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c391906157d1565b90506000856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613605573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362991906157d1565b905083156138a857606e546040517fbaa2abde0000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015283811660248301526044820188905260006064830181905260848301523060a48301524260c48301529091169063baa2abde9060e40160408051808303816000875af11580156136be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e291906157ee565b5050866001600160a01b0316826001600160a01b03160361377b576040516370a0823160e01b8152306004820152613775908790839085906001600160a01b038316906370a08231906024015b602060405180830381865afa15801561374c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613770919061554e565b6133e5565b50613837565b866001600160a01b0316816001600160a01b0316036137ca576040516370a0823160e01b8152306004820152613775908790849084906001600160a01b038316906370a082319060240161372f565b60405162461bcd60e51b8152602060048201526024808201527f746f6b656e4f7574206973206e6f74206120746f6b656e205f696e207468652060448201527f70616972000000000000000000000000000000000000000000000000000000006064820152608401610c75565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f919061554e565b925050506112fe565b6000806000886001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156138eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390f9190615754565b925092509250896001600160a01b0316856001600160a01b031603613ae95761394e898b86613770876dffffffffffffffffffffffffffff168d614a63565b50606e546040516370a0823160e01b81523060048201526001600160a01b039182169163e8e337009188918891908316906370a0823190602401602060405180830381865afa1580156139a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c9919061554e565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015613a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a31919061554e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526001600160a01b0394851660048201529390921660248401526044830152606482015260006084820181905260a48201523060c48201524260e4820152610104016060604051808303816000875af1158015613abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae19190615812565b505050613b22565b896001600160a01b0316846001600160a01b0316036137ca5761394e898b87613770866dffffffffffffffffffffffffffff168d614a63565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a919061554e565b955050505050506112fe565b60008084600f0b1215613faa5781600f0b60001903613ea257613bb884615840565b9350600084600f0b67ffffffffffffffff811115613bd857613bd8614d3a565b604051908082528060200260200182016040528015613c01578160200160208202803683370190505b509050858185600f0b81518110613c1a57613c1a615138565b60200260200101818152505084600f0b600203613cf257866001600160a01b0316630b4c7e4d604051806040016040528084600081518110613c5e57613c5e615138565b6020026020010151815260200184600181518110613c7e57613c7e615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613ca89291906158a1565b6020604051808303816000875af1158015613cc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ceb919061554e565b9150613e9c565b84600f0b600303613d9457866001600160a01b0316634515cef3604051806060016040528084600081518110613d2a57613d2a615138565b6020026020010151815260200184600181518110613d4a57613d4a615138565b6020026020010151815260200184600281518110613d6a57613d6a615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613ca89291906158df565b84600f0b600403613e9c57866001600160a01b031663029b2f34604051806080016040528084600081518110613dcc57613dcc615138565b6020026020010151815260200184600181518110613dec57613dec615138565b6020026020010151815260200184600281518110613e0c57613e0c615138565b6020026020010151815260200184600381518110613e2c57613e2c615138565b602002602001015181525060006040518363ffffffff1660e01b8152600401613e5692919061591d565b6020604051808303816000875af1158015613e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e99919061554e565b91505b506113da565b82600f0b60001903613f4b576040517f1a4d01d200000000000000000000000000000000000000000000000000000000815260048101869052600f83900b6024820152600060448201526001600160a01b03871690631a4d01d2906064015b6020604051808303816000875af1158015613f20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f44919061554e565b90506113da565b6040517f3df02124000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b602482015260448101869052600060648201526001600160a01b03871690633df0212490608401613f01565b600084600f0b13156113da5781600f0b6000190361421d57600084600f0b67ffffffffffffffff811115613fe057613fe0614d3a565b604051908082528060200260200182016040528015614009578160200160208202803683370190505b509050858185600f0b8151811061402257614022615138565b60200260200101818152505084600f0b6002036140b357866001600160a01b031663ee22be2360405180604001604052808460008151811061406657614066615138565b602002602001015181526020018460018151811061408657614086615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613ca893929190615938565b84600f0b60030361415857866001600160a01b0316632b6e993a6040518060600160405280846000815181106140eb576140eb615138565b602002602001015181526020018460018151811061410b5761410b615138565b602002602001015181526020018460028151811061412b5761412b615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613ca89392919061595c565b84600f0b600403613e9c57866001600160a01b031663dc3a2d8160405180608001604052808460008151811061419057614190615138565b60200260200101518152602001846001815181106141b0576141b0615138565b60200260200101518152602001846002815181106141d0576141d0615138565b60200260200101518152602001846003815181106141f0576141f0615138565b6020026020010151815250600060016040518463ffffffff1660e01b8152600401613e5693929190615980565b6040517fa6417ed6000000000000000000000000000000000000000000000000000000008152600f84810b600483015283900b602482015260448101869052600060648201526001600160a01b0387169063a6417ed6906084016020604051808303816000875af1158015614296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142ba919061554e565b98975050505050505050565b6000821561433b5773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561431d57600080fd5b505af1158015614331573d6000803e3d6000fd5b50505050506143ba565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905273b31f66aa3c1e785363f0875a1b74e27b85fd66c790632e1a7d4d90602401600060405180830381600087803b1580156143a157600080fd5b505af11580156143b5573d6000803e3d6000fd5b505050505b50919050565b6000826001600160a01b0316846001600160a01b03160361444f5760405163db006a7560e01b8152600481018390526001600160a01b0384169063db006a75906024016020604051808303816000875af1158015614422573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614446919061554e565b50479050610e75565b826001600160a01b0316631249c58b836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561448a57600080fd5b505af115801561449e573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03871693506370a08231925060240190505b602060405180830381865afa1580156144e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061450d919061554e565b9050610e75565b600081156145bc57606f546040517f69328dec0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052306044830152909116906369328dec906064016020604051808303816000875af115801561458e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b2919061554e565b9250829050610e75565b606f546040517fe8eda9df0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052306044830152600060648301529091169063e8eda9df90608401600060405180830381600087803b15801561463057600080fd5b505af1158015614644573d6000803e3d6000fd5b50505050829050610e75565b6000826001600160a01b0316846001600160a01b0316036147ae5760405163db006a7560e01b8152600481018390526001600160a01b0384169063db006a75906024016020604051808303816000875af11580156146b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d6919061554e565b506000836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473b91906157d1565b6040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa158015614782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a6919061554e565b915050610e75565b6040517fa0712d68000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384169063a0712d68906024016020604051808303816000875af115801561480e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614832919061554e565b506040516370a0823160e01b81523060048201526001600160a01b038416906370a08231906024016144cc565b6000826001600160a01b0316846001600160a01b0316036148e1576040517f1e9a6950000000000000000000000000000000000000000000000000000000008152306004820152602481018390526001600160a01b03841690631e9a6950906044015b6020604051808303816000875af11580156144e9573d6000803e3d6000fd5b6040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0384169063b6b55f25906024016148c2565b600080841161499e5760405162461bcd60e51b815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e540000000000000000000000000000000000000000006064820152608401610c75565b6000831180156149ae5750600082115b614a205760405162461bcd60e51b815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f49515549444954590000000000000000000000000000000000000000000000006064820152608401610c75565b6000614a2e6103e586615177565b90506000614a3c8483615177565b9050600082614a4d6103e888615177565b614a579190615164565b90506113da818361518e565b600080620f2ad9614a7785620f3c64615177565b614a81919061518e565b90506000614a8f8580615177565b614a9c90623cda29615177565b85614aaa86623cab64615177565b614ab49190615177565b614abe9190615164565b905081620f2ad9614ace83614af7565b614ada906101f4615177565b614ae4919061518e565b614aee91906151b0565b95945050505050565b60b581710100000000000000000000000000000000008110614b1e5760409190911b9060801c5b69010000000000000000008110614b3a5760209190911b9060401c5b650100000000008110614b525760109190911b9060201c5b63010000008110614b685760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b5080546000825560060290600052602060002090810190611fdf91905b80821115614c255780546001600160a01b031990811682556000600183018190556002830180548316905560038301805490921690915560048201556005810180546fffffffffffffffffffffffffffffffff19169055600601614bc6565b5090565b6001600160a01b0381168114611fdf57600080fd5b600060208284031215614c5057600080fd5b8135610e7581614c29565b6000815180845260005b81811015614c8157602081850181015186830182015201614c65565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610e756020830184614c5b565b60008060408385031215614cc757600080fd5b8235614cd281614c29565b946020939093013593505050565b600060208284031215614cf257600080fd5b5035919050565b600080600060608486031215614d0e57600080fd5b8335614d1981614c29565b92506020840135614d2981614c29565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614d6157600080fd5b813567ffffffffffffffff80821115614d7c57614d7c614d3a565b604051601f8301601f19908116603f01168101908282118183101715614da457614da4614d3a565b81604052838152866020858801011115614dbd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600080600060e0888a031215614df857600080fd5b8735614e0381614c29565b9650602088013567ffffffffffffffff80821115614e2057600080fd5b614e2c8b838c01614d50565b975060408a0135915080821115614e4257600080fd5b50614e4f8a828b01614d50565b955050606088013593506080880135925060a0880135915060c0880135614e7581614c29565b8091505092959891949750929550565b600080600060608486031215614e9a57600080fd5b833592506020840135614eac81614c29565b91506040840135614ebc81614c29565b809150509250925092565b60ff81168114611fdf57600080fd5b600080600080600080600080610100898b031215614ef357600080fd5b883597506020890135614f0581614c29565b96506040890135614f1581614c29565b9550606089013594506080890135935060a0890135614f3381614ec7565b979a969950949793969295929450505060c08201359160e0013590565b60008060008060008060c08789031215614f6957600080fd5b8635955060208701359450604087013593506060870135614f8981614ec7565b9598949750929560808101359460a0909101359350915050565b60008060408385031215614fb657600080fd5b50508035926020909101359150565b60008060008060608587031215614fdb57600080fd5b8435614fe681614c29565b93506020850135614ff681614c29565b9250604085013567ffffffffffffffff8082111561501357600080fd5b818701915087601f83011261502757600080fd5b81358181111561503657600080fd5b88602060e08302850101111561504b57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a03121561507557600080fd5b873561508081614c29565b9650602088013561509081614c29565b9550604088013594506060880135935060808801356150ae81614ec7565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156150de57600080fd5b82356150e981614c29565b915060208301356150f981614c29565b809150509250929050565b600181811c9082168061511857607f821691505b6020821081036143ba57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610bea57610bea61514e565b8082028115828204841417610bea57610bea61514e565b6000826151ab57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bea57610bea61514e565b6000602082840312156151d557600080fd5b8151610e7581614ec7565b80600f0b8114611fdf57600080fd5b60008135610bea816151e0565b813561520781614c29565b81546001600160a01b0319166001600160a01b0382161782555060208201356001820155604082013561523981614c29565b6002820180546001600160a01b0319166001600160a01b03831617905550606082013561526581614c29565b6003820180546001600160a01b0319166001600160a01b03831617905550600481016080830135615295816151e0565b81546fffffffffffffffffffffffffffffffff19166fffffffffffffffffffffffffffffffff82161782555060a08301356152cf816151e0565b81546fffffffffffffffffffffffffffffffff1660809190911b6fffffffffffffffffffffffffffffffff191617905561534361530e60c084016151ef565b600583016fffffffffffffffffffffffffffffffff19815416826fffffffffffffffffffffffffffffffff1681178255505050565b5050565b6000600182016153595761535961514e565b5060010190565b8035610f43816151e0565b600060608083016001600160a01b03808916855260208189168187015260408481880152838885526080945084880190508960005b8a81101561544c5781356153b381614c29565b861683528185013585840152838201356153cc81614c29565b861683850152818801356153df81614c29565b8616838901526153f0828801615360565b6153fe88850182600f0b9052565b5060a061540c818401615360565b61541a82860182600f0b9052565b505060c0615429818401615360565b61543782860182600f0b9052565b505060e09283019291909101906001016153a0565b50909c9b505050505050505050505050565b600181815b8085111561549957816000190482111561547f5761547f61514e565b8085161561548c57918102915b93841c9390800290615463565b509250929050565b6000826154b057506001610bea565b816154bd57506000610bea565b81600181146154d357600281146154dd576154f9565b6001915050610bea565b60ff8411156154ee576154ee61514e565b50506001821b610bea565b5060208310610133831016604e8410600b841016171561551c575081810a610bea565b615526838361545e565b806000190482111561553a5761553a61514e565b029392505050565b6000610e7583836154a1565b60006020828403121561556057600080fd5b5051919050565b60006020828403121561557957600080fd5b81518015158114610e7557600080fd5b60ff8281168282160390811115610bea57610bea61514e565b6000610e7560ff8416836154a1565b60008083546155bf81615104565b600182811680156155d757600181146155ec5761561b565b60ff198416875282151583028701945061561b565b8760005260208060002060005b858110156156125781548a8201529084019082016155f9565b50505082870194505b50929695505050505050565b601f82111561567157600081815260208120601f850160051c8101602086101561564e5750805b601f850160051c820191505b8181101561566d5782815560010161565a565b5050505b505050565b815167ffffffffffffffff81111561569057615690614d3a565b6156a48161569e8454615104565b84615627565b602080601f8311600181146156d957600084156156c15750858301515b600019600386901b1c1916600185901b17855561566d565b600085815260208120601f198616915b82811015615708578886015182559484019460019091019084016156e9565b50858210156157265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516dffffffffffffffffffffffffffff81168114610f4357600080fd5b60008060006060848603121561576957600080fd5b61577284615736565b925061578060208501615736565b9150604084015163ffffffff81168114614ebc57600080fd5b8481528360208201526001600160a01b03831660408201526080606082015260006157c76080830184614c5b565b9695505050505050565b6000602082840312156157e357600080fd5b8151610e7581614c29565b6000806040838503121561580157600080fd5b505080516020909101519092909150565b60008060006060848603121561582757600080fd5b8351925060208401519150604084015190509250925092565b600081600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036158755761587561514e565b60000392915050565b8060005b6002811015611eb5578151845260209384019390910190600101615882565b606081016158af828561587e565b8260408301529392505050565b8060005b6003811015611eb55781518452602093840193909101906001016158c0565b608081016158ed82856158bc565b8260608301529392505050565b8060005b6004811015611eb55781518452602093840193909101906001016158fe565b60a0810161592b82856158fa565b8260808301529392505050565b60808101615946828661587e565b8360408301528215156060830152949350505050565b60a0810161596a82866158bc565b8360608301528215156080830152949350505050565b60c0810161598e82866158fa565b83608083015282151560a083015294935050505056fea2646970667358221220a6ea69a37071f3d31608b07055dc259541e99777f6dabee6b58a98ba1cb8322164736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
