ETH Price: $1,591.46 (-0.59%)
 

Overview

Max Total Supply

0 https://twitter.com/mevalphaleak

Holders

0

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ApeBot

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-05-01
*/

pragma solidity =0.8.4;
pragma experimental ABIEncoderV2;
// Leak alpha for run and profit with https://twitter.com/mevalphaleak

contract DyDxFlashLoanHelper {
    function marketIdFromTokenAddress(address tokenAddress) internal pure returns (uint256 resultId) {
        assembly {
            switch tokenAddress
            case 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 {
                resultId := 0
            }
            case 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 {
                resultId := 2
            }
            case 0x6B175474E89094C44Da98b954EedeAC495271d0F {
                resultId := 3
            }
            default {
                revert(0, 0)
            }
        }
    }
    function wrapWithDyDx(address requiredToken, uint256 requiredBalance, bool requiredApprove, bytes calldata data) public {
        Types.ActionArgs[] memory operations = new Types.ActionArgs[](3);
        operations[0] = Types.ActionArgs({
            actionType: Types.ActionType.Withdraw,
            accountId: 0,
            amount: Types.AssetAmount({
                sign: false,
                denomination: Types.AssetDenomination.Wei,
                ref: Types.AssetReference.Delta,
                value: requiredBalance
            }),
            primaryMarketId: marketIdFromTokenAddress(requiredToken),
            secondaryMarketId: 0,
            otherAddress: address(this),
            otherAccountId: 0,
            data: ""
        });
        operations[1] = Types.ActionArgs({
            actionType: Types.ActionType.Call,
            accountId: 0,
            amount: Types.AssetAmount({
                sign: false,
                denomination: Types.AssetDenomination.Wei,
                ref: Types.AssetReference.Delta,
                value: 0
            }),
            primaryMarketId: 0,
            secondaryMarketId: 0,
            otherAddress: address(this),
            otherAccountId: 0,
            data: data
        });
        operations[2] = Types.ActionArgs({
            actionType: Types.ActionType.Deposit,
            accountId: 0,
            amount: Types.AssetAmount({
                sign: true,
                denomination: Types.AssetDenomination.Wei,
                ref: Types.AssetReference.Delta,
                value: requiredBalance + (requiredToken == 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 ? 1 : 2)
            }),
            primaryMarketId: marketIdFromTokenAddress(requiredToken),
            secondaryMarketId: 0,
            otherAddress: address(this),
            otherAccountId: 0,
            data: ""
        });

        Types.AccountInfo[] memory accountInfos = new Types.AccountInfo[](1);
        accountInfos[0] = Types.AccountInfo({
            owner: address(this),
            number: 1
        });
        if (requiredApprove) {
          // Approval might be already set or can be set inside of 'operations[1]'
          IERC20Token(requiredToken).approve(
            0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e,
            0xffffffffffffffffffffffffffffffff // Max uint112
          );
        }
        ISoloMargin(0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e).operate(accountInfos, operations);
    }
}

contract IAlphaLeakConstants {
    address internal constant TOKEN_WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address internal constant TOKEN_USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
    address internal constant TOKEN_DAI  = 0x6B175474E89094C44Da98b954EedeAC495271d0F;

    address internal constant PROXY_DYDX  = 0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e;
    address internal constant ORACLE_USDC = 0x986b5E1e1755e3C2440e960477f25201B0a8bbD4;
    address internal constant ORACLE_DAI  = 0x773616E4d11A78F511299002da57A0a94577F1f4;

    uint256 internal constant FLAG_TRANSFORM_ETH_TO_WETH_BEFORE_APE = 0x1;
    uint256 internal constant FLAG_TRANSFORM_WETH_TO_ETH_BEFORE_APE = 0x2;
    uint256 internal constant FLAG_TRANSFORM_ETH_TO_WETH_AFTER_APE  = 0x4;
    uint256 internal constant FLAG_TRANSFORM_WETH_TO_ETH_AFTER_APE  = 0x8;

    uint256 internal constant FLAG_FLASH_DYDY_WETH     = 0x10;
    uint256 internal constant FLAG_FLASH_DYDY_USDC     = 0x20;
    uint256 internal constant FLAG_FLASH_DYDY_DAI      = 0x40;

    uint256 internal constant FLAG_WETH_ACCOUNTING     = 0x80;
    uint256 internal constant FLAG_USDC_ACCOUNTING     = 0x100;
    uint256 internal constant FLAG_DAI_ACCOUNTING      = 0x200;


    uint256 internal constant FLAG_EXIT_WETH           = 0x400;
    uint256 internal constant FLAG_PAY_COINBASE_SHARE  = 0x800;
    uint256 internal constant FLAG_PAY_COINBASE_AMOUNT = 0x1000;


    uint256 internal constant FLAG_RETURN_WETH         = 0x2000;
    uint256 internal constant FLAG_RETURN_USDC         = 0x4000;
    uint256 internal constant FLAG_RETURN_DAI          = 0x8000;
}

contract ApeBot is DyDxFlashLoanHelper, IAlphaLeakConstants {
    string  public constant name = "https://twitter.com/mevalphaleak";

    fallback() external payable {}
    function callFunction(
        address,
        Types.AccountInfo memory,
        bytes calldata data
    ) external {
        // Added to support DyDx flash loans natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(data);
    }
    function executeOperation(
        address,
        uint256,
        uint256,
        bytes calldata _params
    ) external {
        // Added to support AAVE v1 flash loans natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(_params);
    }
    function executeOperation(
        address[] calldata,
        uint256[] calldata,
        uint256[] calldata,
        address,
        bytes calldata params
    )
        external
        returns (bool)
    {
        // Added to support AAVE v2 flash loans natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(params);
        return true;
    }

    function uniswapV2Call(
        address,
        uint,
        uint,
        bytes calldata data
    ) external {
        // Added to support uniswap v2 flash swaps natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(data);
    }
    function uniswapV3FlashCallback(
        uint256,
        uint256,
        bytes calldata data
    ) external {
        // Added to support uniswap v3 flash loans natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(data);
    }
    function uniswapV3MintCallback(
        uint256,
        uint256,
        bytes calldata data
    ) external {
        // Added to support uniswap v3 flash mints natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(data);
    }
    function uniswapV3SwapCallback(
        int256,
        int256,
        bytes calldata data
    ) external {
        // Added to support uniswap v3 flash swaps natively
        // Security checks aren't necessary since I'm an ape
        address(this).call(data);
    }

    // All funds left on this contract will be imidiately lost to snipers
    // This function is completely permision-less and allows anyone to execute any arbitrary logic
    // Overall goal is to make a contract which allows to execute all types of nested flash loans
    function ape(uint256 actionFlags, uint256[] memory data) public payable {
        // FLAGS are used to simplify some common actions, they aren't necessary
        if ((actionFlags & (FLAG_TRANSFORM_ETH_TO_WETH_BEFORE_APE | FLAG_TRANSFORM_WETH_TO_ETH_BEFORE_APE)) > 0) {
            if ((actionFlags & FLAG_TRANSFORM_ETH_TO_WETH_BEFORE_APE) > 0) {
                uint selfbalance = address(this).balance;
                if (selfbalance > 1) WETH9(TOKEN_WETH).deposit{value: selfbalance - 1}();
            } else {
                uint wethbalance = IERC20Token(TOKEN_WETH).balanceOf(address(this));
                if (wethbalance > 1) WETH9(TOKEN_WETH).withdraw(wethbalance - 1);
            }
        }

        uint callId = 0;
        for (; callId < data.length;) {
            assembly {
                let callInfo := mload(add(data, mul(add(callId, 1), 0x20)))
                let callLength := and(div(callInfo, 0x1000000000000000000000000000000000000000000000000000000), 0xffff)
                let p := mload(0x40)   // Find empty storage location using "free memory pointer"
                // Place signature at begining of empty storage, hacky logic to compute shift here
                let callSignDataShiftResult := mul(and(callInfo, 0xffffffff0000000000000000000000000000000000000000000000), 0x10000000000)
                switch callSignDataShiftResult
                case 0 {
                    callLength := mul(callLength, 0x20)
                    callSignDataShiftResult := add(data, mul(0x20, add(callId, 3)))
                    for { let i := 0 } lt(i, callLength) { i := add(i, 0x20) } {
                        mstore(add(p, i), mload(add(callSignDataShiftResult, i)))
                    }
                }
                default {
                    mstore(p, callSignDataShiftResult)
                    callLength := add(mul(callLength, 0x20), 4)
                    callSignDataShiftResult := add(data, sub(mul(0x20, add(callId, 3)), 4))
                    for { let i := 4 } lt(i, callLength) { i := add(i, 0x20) } {
                        mstore(add(p, i), mload(add(callSignDataShiftResult, i)))
                    }
                }

                mstore(0x40, add(p, add(callLength, 0x20)))
                // new free pointer position after the output values of the called function.

                let callContract := and(callInfo, 0xffffffffffffffffffffffffffffffffffffffff)
                // Re-use callSignDataShiftResult as success
                switch and(callInfo, 0xf000000000000000000000000000000000000000000000000000000000000000)
                case 0x1000000000000000000000000000000000000000000000000000000000000000 {
                    callSignDataShiftResult := delegatecall(
                                    and(div(callInfo, 0x10000000000000000000000000000000000000000), 0xffffff), // allowed gas to use
                                    callContract, // contract to execute
                                    p,    // Inputs are at location p
                                    callLength, //Inputs size
                                    p,    //Store output over input
                                    0x20) //Output is 32 bytes long
                }
                default {
                    callSignDataShiftResult := call(
                                    and(div(callInfo, 0x10000000000000000000000000000000000000000), 0xffffff), // allowed gas to use
                                    callContract, // contract to execute
                                    mload(add(data, mul(add(callId, 2), 0x20))), // wei value amount
                                    p,    // Inputs are at location p
                                    callLength, //Inputs size
                                    p,    //Store output over input
                                    0x20) //Output is 32 bytes long
                }

                callSignDataShiftResult := and(div(callInfo, 0x10000000000000000000000000000000000000000000000000000000000), 0xff)
                if gt(callSignDataShiftResult, 0) {
                    // We're copying call result as input to some futher call
                    mstore(add(data, mul(callSignDataShiftResult, 0x20)), mload(p))
                }
                callId := add(callId, add(and(div(callInfo, 0x1000000000000000000000000000000000000000000000000000000), 0xffff), 2))
                mstore(0x40, p) // Set storage pointer to empty space
            }
        }

        // FLAGS are used to simplify some common actions, they aren't necessary
        if ((actionFlags & (FLAG_TRANSFORM_ETH_TO_WETH_AFTER_APE | FLAG_TRANSFORM_WETH_TO_ETH_AFTER_APE)) > 0) {
            if ((actionFlags & FLAG_TRANSFORM_ETH_TO_WETH_AFTER_APE) > 0) {
                uint selfbalance = address(this).balance;
                if (selfbalance > 1) WETH9(TOKEN_WETH).deposit{value: selfbalance - 1}();
            } else {
                uint wethbalance = IERC20Token(TOKEN_WETH).balanceOf(address(this));
                if (wethbalance > 1) WETH9(TOKEN_WETH).withdraw(wethbalance - 1);
            }
        }
    }

    // Function signature 0x00000000
    // Should be main entry point for any simple MEV searcher
    // Though you can always use 'ape' function directly with general purpose logic
    function wfjizxua(
        uint256 actionFlags,
        uint256[] calldata actionData
    ) external payable returns(int256 ethProfitDelta) {
        int256[4] memory balanceDeltas;
        balanceDeltas[0] = int256(address(this).balance);
        if ((actionFlags & (FLAG_WETH_ACCOUNTING | FLAG_USDC_ACCOUNTING | FLAG_DAI_ACCOUNTING)) > 0) {
            // In general ACCOUNTING flags should be used only during simulation and not production to avoid wasting gas on oracle calls
            if ((actionFlags & FLAG_WETH_ACCOUNTING) > 0) {
                balanceDeltas[1] = int256(IERC20Token(TOKEN_WETH).balanceOf(address(this)));
            }
            if ((actionFlags & FLAG_USDC_ACCOUNTING) > 0) {
                balanceDeltas[2] = int256(IERC20Token(TOKEN_USDC).balanceOf(address(this)));
            }
            if ((actionFlags & FLAG_DAI_ACCOUNTING) > 0) {
                balanceDeltas[3] = int256(IERC20Token(TOKEN_DAI).balanceOf(address(this)));
            }
        }

        if ((actionFlags & (FLAG_FLASH_DYDY_WETH | FLAG_FLASH_DYDY_USDC | FLAG_FLASH_DYDY_DAI)) > 0) {
            // This simple logic only supports single token flashloans
            // For multiple tokens or multiple providers you should use general purpose logic using 'ape' function
            if ((actionFlags & FLAG_FLASH_DYDY_WETH) > 0) {
                uint256 balanceToFlash = IERC20Token(TOKEN_WETH).balanceOf(PROXY_DYDX);
                this.wrapWithDyDx(
                    TOKEN_WETH,
                    balanceToFlash - 1,
                    IERC20Token(TOKEN_WETH).allowance(address(this), PROXY_DYDX) < balanceToFlash,
                    abi.encodeWithSignature('ape(uint256,uint256[])', actionFlags, actionData)
                );
            } else if ((actionFlags & FLAG_FLASH_DYDY_USDC) > 0) {
                uint256 balanceToFlash = IERC20Token(TOKEN_USDC).balanceOf(PROXY_DYDX);
                this.wrapWithDyDx(
                    TOKEN_USDC,
                    balanceToFlash - 1,
                    IERC20Token(TOKEN_USDC).allowance(address(this), PROXY_DYDX) < balanceToFlash,
                    abi.encodeWithSignature('ape(uint256,uint256[])', actionFlags, actionData)
                );
            } else if ((actionFlags & FLAG_FLASH_DYDY_DAI) > 0) {
                uint256 balanceToFlash = IERC20Token(TOKEN_DAI).balanceOf(PROXY_DYDX);
                this.wrapWithDyDx(
                    TOKEN_DAI,
                    balanceToFlash - 1,
                    IERC20Token(TOKEN_DAI).allowance(address(this), PROXY_DYDX) < balanceToFlash,
                    abi.encodeWithSignature('ape(uint256,uint256[])', actionFlags, actionData)
                );
            }
        } else {
            this.ape(actionFlags, actionData);
        }

        if ((actionFlags & FLAG_EXIT_WETH) > 0) {
            uint wethbalance = IERC20Token(TOKEN_WETH).balanceOf(address(this));
            if (wethbalance > 1) WETH9(TOKEN_WETH).withdraw(wethbalance - 1);
        }


        ethProfitDelta = int256(address(this).balance) - balanceDeltas[0];
        if ((actionFlags & (FLAG_WETH_ACCOUNTING | FLAG_USDC_ACCOUNTING | FLAG_DAI_ACCOUNTING)) > 0) {
            if ((actionFlags & FLAG_WETH_ACCOUNTING) > 0) {
                ethProfitDelta += int256(IERC20Token(TOKEN_WETH).balanceOf(address(this))) - balanceDeltas[1];
            }
            if ((actionFlags & FLAG_USDC_ACCOUNTING) > 0) {
                ethProfitDelta += (int256(IERC20Token(TOKEN_USDC).balanceOf(address(this))) - balanceDeltas[2]) * IChainlinkAggregator(ORACLE_USDC).latestAnswer() / (1 ether);
            }
            if ((actionFlags & FLAG_DAI_ACCOUNTING) > 0) {
                ethProfitDelta += (int256(IERC20Token(TOKEN_DAI).balanceOf(address(this))) - balanceDeltas[3]) * IChainlinkAggregator(ORACLE_DAI).latestAnswer() / (1 ether);
            }
        }


        if ((actionFlags & FLAG_PAY_COINBASE_AMOUNT) > 0) {
            uint selfbalance = address(this).balance;
            uint amountToPay = actionFlags / 0x100000000000000000000000000000000;
            if (selfbalance < amountToPay) {
                // Attempting to cover the gap via WETH token
                WETH9(TOKEN_WETH).withdraw(amountToPay - selfbalance);
            }
            payable(block.coinbase).transfer(amountToPay);
        } else if ((actionFlags & FLAG_PAY_COINBASE_SHARE) > 0) {
            uint selfbalance = address(this).balance;
            uint amountToPay = (actionFlags / 0x100000000000000000000000000000000) * uint256(ethProfitDelta) / (1 ether);
            if (selfbalance < amountToPay) {
                // Attempting to cover the gap via WETH token
                WETH9(TOKEN_WETH).withdraw(amountToPay - selfbalance);
            }
            payable(block.coinbase).transfer(amountToPay);
        }

        uint selfBalance = address(this).balance;
        if (selfBalance > 1) payable(msg.sender).transfer(selfBalance - 1);
        if ((actionFlags & (FLAG_RETURN_WETH | FLAG_RETURN_USDC | FLAG_RETURN_DAI)) > 0) {
            // Majority of simple atomic arbs should just need ETH
            if ((actionFlags & FLAG_RETURN_WETH) > 0) {
                uint tokenBalance = IERC20Token(TOKEN_WETH).balanceOf(address(this));
                if (tokenBalance > 1) IERC20Token(TOKEN_WETH).transfer(msg.sender, tokenBalance - 1);
            }
            if ((actionFlags & FLAG_RETURN_USDC) > 0) {
                uint tokenBalance = IERC20Token(TOKEN_USDC).balanceOf(address(this));
                if (tokenBalance > 1) IERC20Token(TOKEN_USDC).transfer(msg.sender, tokenBalance - 1);
            }
            if ((actionFlags & FLAG_RETURN_DAI) > 0) {
                uint tokenBalance = IERC20Token(TOKEN_DAI).balanceOf(address(this));
                if (tokenBalance > 1) IERC20Token(TOKEN_DAI).transfer(msg.sender, tokenBalance - 1);
            }
        }
    }
}

library Types {
    enum ActionType {
        Deposit,   // supply tokens
        Withdraw,  // borrow tokens
        Transfer,  // transfer balance between accounts
        Buy,       // buy an amount of some token (externally)
        Sell,      // sell an amount of some token (externally)
        Trade,     // trade tokens against another account
        Liquidate, // liquidate an undercollateralized or expiring account
        Vaporize,  // use excess tokens to zero-out a completely negative account
        Call       // send arbitrary data to an address
    }

    enum AssetDenomination {
        Wei, // the amount is denominated in wei
        Par  // the amount is denominated in par
    }

    enum AssetReference {
        Delta, // the amount is given as a delta from the current value
        Target // the amount is given as an exact number to end up at
    }

    struct AssetAmount {
        bool sign; // true if positive
        AssetDenomination denomination;
        AssetReference ref;
        uint256 value;
    }

    struct Wei {
        bool sign; // true if positive
        uint256 value;
    }

    struct ActionArgs {
        ActionType actionType;
        uint256 accountId;
        AssetAmount amount;
        uint256 primaryMarketId;
        uint256 secondaryMarketId;
        address otherAddress;
        uint256 otherAccountId;
        bytes data;
    }

    struct AccountInfo {
        address owner;  // The address that owns the account
        uint256 number; // A nonce that allows a single address to control many accounts
    }
}

contract ISoloMargin {
    function operate(Types.AccountInfo[] memory accounts, Types.ActionArgs[] memory actions) public {}
    function getMarketTokenAddress(uint256 marketId) public view returns (address) {}
}

/*
    ERC20 Standard Token interface
*/
contract IERC20Token {
    string public name;
    string public symbol;
    function decimals() public view returns (uint8) {}
    function totalSupply() public view returns (uint256) {}
    function balanceOf(address _owner) public view returns (uint256) { _owner; }
    function allowance(address _owner, address _spender) public view returns (uint256) { _owner; _spender; }

    function transfer(address _to, uint256 _value) public returns (bool success) {}
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {}
    function approve(address _spender, uint256 _value) public returns (bool success) {}
}

contract WETH9 {
    function deposit() public payable {}
    function withdraw(uint wad) public {}
}

interface IChainlinkAggregator {
  function latestAnswer() external view returns (int256);
}

Contract Security Audit

Contract ABI

API
[{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"actionFlags","type":"uint256"},{"internalType":"uint256[]","name":"data","type":"uint256[]"}],"name":"ape","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"internalType":"struct Types.AccountInfo","name":"","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"callFunction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"params","type":"bytes"}],"name":"executeOperation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"_params","type":"bytes"}],"name":"executeOperation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV2Call","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3FlashCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3MintCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"actionFlags","type":"uint256"},{"internalType":"uint256[]","name":"actionData","type":"uint256[]"}],"name":"wfjizxua","outputs":[{"internalType":"int256","name":"ethProfitDelta","type":"int256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"requiredToken","type":"address"},{"internalType":"uint256","name":"requiredBalance","type":"uint256"},{"internalType":"bool","name":"requiredApprove","type":"bool"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"wrapWithDyDx","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50612725806100206000396000f3fe6080604052600436106100a15760003560e01c8063adecd1021161006e578063e9cbafb01161004b578063e9cbafb0146101c2578063ee8725581461011f578063fa461e33146101dd57005b8063adecd1021461018f578063bfe87292146101af578063d3487997146101c257005b80156100a357806306fdde03146100c957806310d1e85c1461011f5780638b4187131461013f578063920f5c841461015f575b005b6100b66100b1366004612137565b6101f8565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b506101126040518060400160405280602081526020017f68747470733a2f2f747769747465722e636f6d2f6d6576616c7068616c65616b81525081565b6040516100c09190612446565b34801561012b57600080fd5b506100a161013a366004611f99565b6112ca565b34801561014b57600080fd5b506100a161015a366004611e88565b611328565b34801561016b57600080fd5b5061017f61017a366004611fe2565b611385565b60405190151581526020016100c0565b34801561019b57600080fd5b506100a16101aa366004611f2a565b6113f6565b6100a16101bd366004612181565b611876565b3480156101ce57600080fd5b506100a161015a366004612235565b3480156101e957600080fd5b506100a161015a3660046120f2565b6000610202611d4e565b4781526103808516156103c45760808516156102a0576040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561026257600080fd5b505afa158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a91906120da565b60208201525b610100851615610332576040516370a0823160e01b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c91906120da565b60408201525b6102008516156103c4576040516370a0823160e01b8152306004820152736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b15801561038657600080fd5b505afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906120da565b60608201525b60708516156108375760108516156105e5576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561043757600080fd5b505afa15801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f91906120da565b90503063adecd10273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261049760018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6024820152859073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063dd62ed3e906044015b60206040518083038186803b1580156104fe57600080fd5b505afa158015610512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053691906120da565b108a8a8a60405160240161054c93929190612459565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16635ff4394960e11b1790525160e086901b6001600160e01b03191681526105ad94939291906004016122dc565b600060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b5050505050610891565b6020851615610715576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600482015260009073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b15801561064f57600080fd5b505afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906120da565b90503063adecd10273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486106af60018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6024820152859073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489063dd62ed3e9060440160206040518083038186803b1580156104fe57600080fd5b6040851615610832576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6004820152600090736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b15801561077f57600080fd5b505afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906120da565b90503063adecd102736b175474e89094c44da98b954eedeac495271d0f6107df60018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e60248201528590736b175474e89094c44da98b954eedeac495271d0f9063dd62ed3e906044016104e6565b610891565b604051635ff4394960e11b8152309063bfe872929061085e90889088908890600401612459565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050505b6104008516156109a3576040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092091906120da565b905060018111156109a15773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d61095060018461265f565b6040518263ffffffff1660e01b815260040161096e91815260200190565b600060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050505b505b80516109af9047612620565b9150610380851615610cf6576080851615610a625760208101516040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015610a1357600080fd5b505afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b91906120da565b610a559190612620565b610a5f90836124e4565b91505b610100851615610bac57670de0b6b3a764000073986b5e1e1755e3c2440e960477f25201b0a8bbd46001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac257600080fd5b505afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa91906120da565b60408084015190516370a0823160e01b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b158015610b4957600080fd5b505afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906120da565b610b8b9190612620565b610b95919061257e565b610b9f919061253c565b610ba990836124e4565b91505b610200851615610cf657670de0b6b3a764000073773616e4d11a78f511299002da57a0a94577f1f46001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0c57600080fd5b505afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4491906120da565b60608301516040516370a0823160e01b8152306004820152736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b158015610c9357600080fd5b505afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb91906120da565b610cd59190612620565b610cdf919061257e565b610ce9919061253c565b610cf390836124e4565b91505b611000851615610dc557476000610d11600160801b8861256a565b905080821015610d905773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d610d3f848461265f565b6040518263ffffffff1660e01b8152600401610d5d91815260200190565b600060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050505b604051419082156108fc029083906000818181858888f19350505050158015610dbd573d6000803e3d6000fd5b505050610eae565b610800851615610eae57476000670de0b6b3a764000084610dea600160801b8a61256a565b610df49190612601565b610dfe919061256a565b905080821015610e7d5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d610e2c848461265f565b6040518263ffffffff1660e01b8152600401610e4a91815260200190565b600060405180830381600087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050505b604051419082156108fc029083906000818181858888f19350505050158015610eaa573d6000803e3d6000fd5b5050505b476001811115610ef157336108fc610ec760018461265f565b6040518115909202916000818181858888f19350505050158015610eef573d6000803e3d6000fd5b505b61e0008616156112c15761200086161561103d576040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015610f5257600080fd5b505afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a91906120da565b9050600181111561103b5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263a9059cbb33610fbb60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103991906120b7565b505b505b61400086161561117f576040516370a0823160e01b815230600482015260009073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b15801561109457600080fd5b505afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc91906120da565b9050600181111561117d5773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4863a9059cbb336110fd60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561114357600080fd5b505af1158015611157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117b91906120b7565b505b505b6180008616156112c1576040516370a0823160e01b8152306004820152600090736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e91906120da565b905060018111156112bf57736b175474e89094c44da98b954eedeac495271d0f63a9059cbb3361123f60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561128557600080fd5b505af1158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd91906120b7565b505b505b50509392505050565b60405130906112dc90849084906122cc565b6000604051808303816000865af19150503d8060008114611319576040519150601f19603f3d011682016040523d82523d6000602084013e61131e565b606091505b5050505050505050565b604051309061133a90849084906122cc565b6000604051808303816000865af19150503d8060008114611377576040519150601f19603f3d011682016040523d82523d6000602084013e61137c565b606091505b50505050505050565b6000306001600160a01b031683836040516113a19291906122cc565b6000604051808303816000865af19150503d80600081146113de576040519150601f19603f3d011682016040523d82523d6000602084013e6113e3565b606091505b5060019c9b505050505050505050505050565b60408051600380825260808201909252600091816020015b611416611d6c565b81526020019060019003908161140e5750506040805161010081018252600181526000602080830182905283516080810185528281529081018290528084019190915260608082018a905292820152919250810161147388611cd8565b815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816000815181106114c957634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051610100810190915280600881526020016000815260200160405180608001604052806000151581526020016000600181111561152457634e487b7160e01b600052602160045260246000fd5b815260200160008152602001600081525081526020016000815260200160008152602001306001600160a01b031681526020016000815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152508151829060019081106115b957634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051610100810190915280600081526020016000815260200160405180608001604052806001151581526020016000600181111561161457634e487b7160e01b600052602160045260246000fd5b81526020016000815260200173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b038b161461164b57600261164e565b60015b61165b9060ff168a612524565b9052815260200161166b88611cd8565b815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816002815181106116c157634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816116e35790505090506040518060400160405280306001600160a01b0316815260200160018152508160008151811061174c57634e487b7160e01b600052603260045260246000fd5b602002602001018190525084156118025760405163095ea7b360e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e60048201526fffffffffffffffffffffffffffffffff60248201526001600160a01b0388169063095ea7b390604401602060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180091906120b7565b505b60405163a67a6a4560e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e9063a67a6a459061183b9084908690600401612316565b600060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b5050505050505050505050565b6003821615611a0a576001821615611902574760018111156118fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263d0e30db06118b760018461265f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b50505050505b50611a0a565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198791906120da565b90506001811115611a085773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d6119b760018461265f565b6040518263ffffffff1660e01b81526004016119d591815260200190565b600060405180830381600087803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b505050505b505b60005b8151811015611b46576020600182010282015161ffff600160d81b8204166040516501000000000063ffffffff60b81b8416028060008114611a8457818352600460208502019350600460038701602002038701915060045b84811015611a7e578281015184820152602001611a66565b50611ab0565b60209384029360038701028701915060005b84811015611aae578281015184820152602001611a96565b505b506020830182016040526001600160a01b038416600f60fc1b8516600160fc1b8114611afa576020848686602060028c01028c01518662ffffff600160a01b8d0416f19250611b10565b60208486868562ffffff600160a01b8c0416f492505b505050600160e81b830460ff168015611b2d578151602082028701525b5060405250600160d81b900461ffff1601600201611a0d565b600c831615611cd3576004831615611bd257476001811115611bcc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263d0e30db0611b8760018461265f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb257600080fd5b505af1158015611bc6573d6000803e3d6000fd5b50505050505b50505050565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015611c1f57600080fd5b505afa158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5791906120da565b90506001811115611bcc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d611c8760018461265f565b6040518263ffffffff1660e01b8152600401611ca591815260200190565b600060405180830381600087803b158015611cbf57600080fd5b505af115801561131e573d6000803e3d6000fd5b505050565b60008173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28114611d315773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488114611d3a57736b175474e89094c44da98b954eedeac495271d0f8114611d4357600080fd5b60009150611d48565b60029150611d48565b600391505b50919050565b60405180608001604052806004906020820280368337509192915050565b604080516101008101825260008082526020820152908101611db0604080516080810190915260008082526020820190815260200160008152602001600081525090565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b80356001600160a01b0381168114611df957600080fd5b919050565b60008083601f840112611e0f578081fd5b50813567ffffffffffffffff811115611e26578182fd5b6020830191508360208260051b8501011115611e4157600080fd5b9250929050565b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611e4157600080fd5b6000806000808486036080811215611e9e578485fd5b611ea786611de2565b94506040601f1982011215611eba578384fd5b506040516040810167ffffffffffffffff8282108183111715611edf57611edf6126b8565b81604052611eef60208901611de2565b83526040880135602084015291945060608701359180831115611f10578485fd5b5050611f1e87828801611e48565b95989497509550505050565b600080600080600060808688031215611f41578081fd5b611f4a86611de2565b9450602086013593506040860135611f61816126e1565b9250606086013567ffffffffffffffff811115611f7c578182fd5b611f8888828901611e48565b969995985093965092949392505050565b600080600080600060808688031215611fb0578081fd5b611fb986611de2565b94506020860135935060408601359250606086013567ffffffffffffffff811115611f7c578182fd5b600080600080600080600080600060a08a8c031215611fff578384fd5b893567ffffffffffffffff80821115612016578586fd5b6120228d838e01611dfe565b909b50995060208c013591508082111561203a578586fd5b6120468d838e01611dfe565b909950975060408c013591508082111561205e578586fd5b61206a8d838e01611dfe565b909750955085915061207e60608d01611de2565b945060808c0135915080821115612093578384fd5b506120a08c828d01611e48565b915080935050809150509295985092959850929598565b6000602082840312156120c8578081fd5b81516120d3816126e1565b9392505050565b6000602082840312156120eb578081fd5b5051919050565b60008060008060608587031215612107578384fd5b8435935060208501359250604085013567ffffffffffffffff81111561212b578283fd5b611f1e87828801611e48565b60008060006040848603121561214b578081fd5b83359250602084013567ffffffffffffffff811115612168578182fd5b61217486828701611dfe565b9497909650939450505050565b60008060408385031215612193578182fd5b8235915060208084013567ffffffffffffffff808211156121b2578384fd5b818601915086601f8301126121c5578384fd5b8135818111156121d7576121d76126b8565b8060051b91506121e88483016124b3565b8181528481019084860184860187018b1015612202578788fd5b8795505b83861015612224578035835260019590950194918601918601612206565b508096505050505050509250929050565b60008060008060608587031215612107578182fd5b60008151808452815b8181101561226f57602081850181015186830182015201612253565b818111156122805782602083870101525b50601f01601f19169290920160200192915050565b80511515825260208101516122a9816126ce565b602083015260408101516122bc816126ce565b6040830152606090810151910152565b8183823760009101908152919050565b6001600160a01b0385168152836020820152821515604082015260806060820152600061230c608083018461224a565b9695505050505050565b6040808252835182820181905260009190606090818501906020808901865b8381101561236357815180516001600160a01b03168652830151838601529386019390820190600101612335565b50508683038188015287518084528184019250600581901b84018201898301885b8381101561243557601f1987840301865281516101608151600981106123ac576123ac6126a2565b855281870151878601528a8201516123c68c870182612295565b508982015160c081818801526080840151915060e0828189015260a085015192506123fd6101008901846001600160a01b03169052565b9084015161012088015290920151610140860182905291506124218186018361224a565b978701979450505090840190600101612384565b50909b9a5050505050505050505050565b6020815260006120d3602083018461224a565b8381526040602082015281604082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612497578081fd5b8260051b80856060850137919091016060019081529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156124dc576124dc6126b8565b604052919050565b6000808212826001600160ff1b030384138115161561250557612505612676565b600160ff1b839003841281161561251e5761251e612676565b50500190565b6000821982111561253757612537612676565b500190565b60008261254b5761254b61268c565b600160ff1b82146000198414161561256557612565612676565b500590565b6000826125795761257961268c565b500490565b60006001600160ff1b03818413828413858304851182821616156125a4576125a4612676565b600160ff1b848712828116878305891216156125c2576125c2612676565b8587129250878205871284841616156125dd576125dd612676565b878505871281841616156125f3576125f3612676565b505050929093029392505050565b600081600019048311821515161561261b5761261b612676565b500290565b60008083128015600160ff1b85018412161561263e5761263e612676565b836001600160ff1b0301831381161561265957612659612676565b50500390565b60008282101561267157612671612676565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600281106126de576126de6126a2565b50565b80151581146126de57600080fdfea26469706673582212209e05f519090abef664db665b013c295921fb04914a21d86974860cc8843bbf9164736f6c63430008040033

Deployed Bytecode

0x6080604052600436106100a15760003560e01c8063adecd1021161006e578063e9cbafb01161004b578063e9cbafb0146101c2578063ee8725581461011f578063fa461e33146101dd57005b8063adecd1021461018f578063bfe87292146101af578063d3487997146101c257005b80156100a357806306fdde03146100c957806310d1e85c1461011f5780638b4187131461013f578063920f5c841461015f575b005b6100b66100b1366004612137565b6101f8565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b506101126040518060400160405280602081526020017f68747470733a2f2f747769747465722e636f6d2f6d6576616c7068616c65616b81525081565b6040516100c09190612446565b34801561012b57600080fd5b506100a161013a366004611f99565b6112ca565b34801561014b57600080fd5b506100a161015a366004611e88565b611328565b34801561016b57600080fd5b5061017f61017a366004611fe2565b611385565b60405190151581526020016100c0565b34801561019b57600080fd5b506100a16101aa366004611f2a565b6113f6565b6100a16101bd366004612181565b611876565b3480156101ce57600080fd5b506100a161015a366004612235565b3480156101e957600080fd5b506100a161015a3660046120f2565b6000610202611d4e565b4781526103808516156103c45760808516156102a0576040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561026257600080fd5b505afa158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a91906120da565b60208201525b610100851615610332576040516370a0823160e01b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b1580156102f457600080fd5b505afa158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c91906120da565b60408201525b6102008516156103c4576040516370a0823160e01b8152306004820152736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b15801561038657600080fd5b505afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be91906120da565b60608201525b60708516156108375760108516156105e5576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561043757600080fd5b505afa15801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f91906120da565b90503063adecd10273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc261049760018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6024820152859073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc29063dd62ed3e906044015b60206040518083038186803b1580156104fe57600080fd5b505afa158015610512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053691906120da565b108a8a8a60405160240161054c93929190612459565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16635ff4394960e11b1790525160e086901b6001600160e01b03191681526105ad94939291906004016122dc565b600060405180830381600087803b1580156105c757600080fd5b505af11580156105db573d6000803e3d6000fd5b5050505050610891565b6020851615610715576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e600482015260009073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b15801561064f57600080fd5b505afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906120da565b90503063adecd10273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486106af60018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6024820152859073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489063dd62ed3e9060440160206040518083038186803b1580156104fe57600080fd5b6040851615610832576040516370a0823160e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e6004820152600090736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b15801561077f57600080fd5b505afa158015610793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b791906120da565b90503063adecd102736b175474e89094c44da98b954eedeac495271d0f6107df60018561265f565b604051636eb1769f60e11b8152306004820152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e60248201528590736b175474e89094c44da98b954eedeac495271d0f9063dd62ed3e906044016104e6565b610891565b604051635ff4394960e11b8152309063bfe872929061085e90889088908890600401612459565b600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505050505b6104008516156109a3576040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b1580156108e857600080fd5b505afa1580156108fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092091906120da565b905060018111156109a15773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d61095060018461265f565b6040518263ffffffff1660e01b815260040161096e91815260200190565b600060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050505b505b80516109af9047612620565b9150610380851615610cf6576080851615610a625760208101516040516370a0823160e01b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015610a1357600080fd5b505afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b91906120da565b610a559190612620565b610a5f90836124e4565b91505b610100851615610bac57670de0b6b3a764000073986b5e1e1755e3c2440e960477f25201b0a8bbd46001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ac257600080fd5b505afa158015610ad6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa91906120da565b60408084015190516370a0823160e01b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b158015610b4957600080fd5b505afa158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906120da565b610b8b9190612620565b610b95919061257e565b610b9f919061253c565b610ba990836124e4565b91505b610200851615610cf657670de0b6b3a764000073773616e4d11a78f511299002da57a0a94577f1f46001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0c57600080fd5b505afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4491906120da565b60608301516040516370a0823160e01b8152306004820152736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b158015610c9357600080fd5b505afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb91906120da565b610cd59190612620565b610cdf919061257e565b610ce9919061253c565b610cf390836124e4565b91505b611000851615610dc557476000610d11600160801b8861256a565b905080821015610d905773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d610d3f848461265f565b6040518263ffffffff1660e01b8152600401610d5d91815260200190565b600060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050505b604051419082156108fc029083906000818181858888f19350505050158015610dbd573d6000803e3d6000fd5b505050610eae565b610800851615610eae57476000670de0b6b3a764000084610dea600160801b8a61256a565b610df49190612601565b610dfe919061256a565b905080821015610e7d5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d610e2c848461265f565b6040518263ffffffff1660e01b8152600401610e4a91815260200190565b600060405180830381600087803b158015610e6457600080fd5b505af1158015610e78573d6000803e3d6000fd5b505050505b604051419082156108fc029083906000818181858888f19350505050158015610eaa573d6000803e3d6000fd5b5050505b476001811115610ef157336108fc610ec760018461265f565b6040518115909202916000818181858888f19350505050158015610eef573d6000803e3d6000fd5b505b61e0008616156112c15761200086161561103d576040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015610f5257600080fd5b505afa158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a91906120da565b9050600181111561103b5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263a9059cbb33610fbb60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103991906120b7565b505b505b61400086161561117f576040516370a0823160e01b815230600482015260009073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48906370a082319060240160206040518083038186803b15801561109457600080fd5b505afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc91906120da565b9050600181111561117d5773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4863a9059cbb336110fd60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561114357600080fd5b505af1158015611157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117b91906120b7565b505b505b6180008616156112c1576040516370a0823160e01b8152306004820152600090736b175474e89094c44da98b954eedeac495271d0f906370a082319060240160206040518083038186803b1580156111d657600080fd5b505afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e91906120da565b905060018111156112bf57736b175474e89094c44da98b954eedeac495271d0f63a9059cbb3361123f60018561265f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561128557600080fd5b505af1158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd91906120b7565b505b505b50509392505050565b60405130906112dc90849084906122cc565b6000604051808303816000865af19150503d8060008114611319576040519150601f19603f3d011682016040523d82523d6000602084013e61131e565b606091505b5050505050505050565b604051309061133a90849084906122cc565b6000604051808303816000865af19150503d8060008114611377576040519150601f19603f3d011682016040523d82523d6000602084013e61137c565b606091505b50505050505050565b6000306001600160a01b031683836040516113a19291906122cc565b6000604051808303816000865af19150503d80600081146113de576040519150601f19603f3d011682016040523d82523d6000602084013e6113e3565b606091505b5060019c9b505050505050505050505050565b60408051600380825260808201909252600091816020015b611416611d6c565b81526020019060019003908161140e5750506040805161010081018252600181526000602080830182905283516080810185528281529081018290528084019190915260608082018a905292820152919250810161147388611cd8565b815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816000815181106114c957634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051610100810190915280600881526020016000815260200160405180608001604052806000151581526020016000600181111561152457634e487b7160e01b600052602160045260246000fd5b815260200160008152602001600081525081526020016000815260200160008152602001306001600160a01b031681526020016000815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152508151829060019081106115b957634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051610100810190915280600081526020016000815260200160405180608001604052806001151581526020016000600181111561161457634e487b7160e01b600052602160045260246000fd5b81526020016000815260200173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b038b161461164b57600261164e565b60015b61165b9060ff168a612524565b9052815260200161166b88611cd8565b815260200160008152602001306001600160a01b031681526020016000815260200160405180602001604052806000815250815250816002815181106116c157634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816116e35790505090506040518060400160405280306001600160a01b0316815260200160018152508160008151811061174c57634e487b7160e01b600052603260045260246000fd5b602002602001018190525084156118025760405163095ea7b360e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e60048201526fffffffffffffffffffffffffffffffff60248201526001600160a01b0388169063095ea7b390604401602060405180830381600087803b1580156117c857600080fd5b505af11580156117dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180091906120b7565b505b60405163a67a6a4560e01b8152731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e9063a67a6a459061183b9084908690600401612316565b600060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b5050505050505050505050565b6003821615611a0a576001821615611902574760018111156118fc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263d0e30db06118b760018461265f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b50505050505b50611a0a565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b15801561194f57600080fd5b505afa158015611963573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198791906120da565b90506001811115611a085773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d6119b760018461265f565b6040518263ffffffff1660e01b81526004016119d591815260200190565b600060405180830381600087803b1580156119ef57600080fd5b505af1158015611a03573d6000803e3d6000fd5b505050505b505b60005b8151811015611b46576020600182010282015161ffff600160d81b8204166040516501000000000063ffffffff60b81b8416028060008114611a8457818352600460208502019350600460038701602002038701915060045b84811015611a7e578281015184820152602001611a66565b50611ab0565b60209384029360038701028701915060005b84811015611aae578281015184820152602001611a96565b505b506020830182016040526001600160a01b038416600f60fc1b8516600160fc1b8114611afa576020848686602060028c01028c01518662ffffff600160a01b8d0416f19250611b10565b60208486868562ffffff600160a01b8c0416f492505b505050600160e81b830460ff168015611b2d578151602082028701525b5060405250600160d81b900461ffff1601600201611a0d565b600c831615611cd3576004831615611bd257476001811115611bcc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc263d0e30db0611b8760018461265f565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb257600080fd5b505af1158015611bc6573d6000803e3d6000fd5b50505050505b50505050565b6040516370a0823160e01b815230600482015260009073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a082319060240160206040518083038186803b158015611c1f57600080fd5b505afa158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5791906120da565b90506001811115611bcc5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2632e1a7d4d611c8760018461265f565b6040518263ffffffff1660e01b8152600401611ca591815260200190565b600060405180830381600087803b158015611cbf57600080fd5b505af115801561131e573d6000803e3d6000fd5b505050565b60008173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28114611d315773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488114611d3a57736b175474e89094c44da98b954eedeac495271d0f8114611d4357600080fd5b60009150611d48565b60029150611d48565b600391505b50919050565b60405180608001604052806004906020820280368337509192915050565b604080516101008101825260008082526020820152908101611db0604080516080810190915260008082526020820190815260200160008152602001600081525090565b8152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001606081525090565b80356001600160a01b0381168114611df957600080fd5b919050565b60008083601f840112611e0f578081fd5b50813567ffffffffffffffff811115611e26578182fd5b6020830191508360208260051b8501011115611e4157600080fd5b9250929050565b60008083601f840112611e59578182fd5b50813567ffffffffffffffff811115611e70578182fd5b602083019150836020828501011115611e4157600080fd5b6000806000808486036080811215611e9e578485fd5b611ea786611de2565b94506040601f1982011215611eba578384fd5b506040516040810167ffffffffffffffff8282108183111715611edf57611edf6126b8565b81604052611eef60208901611de2565b83526040880135602084015291945060608701359180831115611f10578485fd5b5050611f1e87828801611e48565b95989497509550505050565b600080600080600060808688031215611f41578081fd5b611f4a86611de2565b9450602086013593506040860135611f61816126e1565b9250606086013567ffffffffffffffff811115611f7c578182fd5b611f8888828901611e48565b969995985093965092949392505050565b600080600080600060808688031215611fb0578081fd5b611fb986611de2565b94506020860135935060408601359250606086013567ffffffffffffffff811115611f7c578182fd5b600080600080600080600080600060a08a8c031215611fff578384fd5b893567ffffffffffffffff80821115612016578586fd5b6120228d838e01611dfe565b909b50995060208c013591508082111561203a578586fd5b6120468d838e01611dfe565b909950975060408c013591508082111561205e578586fd5b61206a8d838e01611dfe565b909750955085915061207e60608d01611de2565b945060808c0135915080821115612093578384fd5b506120a08c828d01611e48565b915080935050809150509295985092959850929598565b6000602082840312156120c8578081fd5b81516120d3816126e1565b9392505050565b6000602082840312156120eb578081fd5b5051919050565b60008060008060608587031215612107578384fd5b8435935060208501359250604085013567ffffffffffffffff81111561212b578283fd5b611f1e87828801611e48565b60008060006040848603121561214b578081fd5b83359250602084013567ffffffffffffffff811115612168578182fd5b61217486828701611dfe565b9497909650939450505050565b60008060408385031215612193578182fd5b8235915060208084013567ffffffffffffffff808211156121b2578384fd5b818601915086601f8301126121c5578384fd5b8135818111156121d7576121d76126b8565b8060051b91506121e88483016124b3565b8181528481019084860184860187018b1015612202578788fd5b8795505b83861015612224578035835260019590950194918601918601612206565b508096505050505050509250929050565b60008060008060608587031215612107578182fd5b60008151808452815b8181101561226f57602081850181015186830182015201612253565b818111156122805782602083870101525b50601f01601f19169290920160200192915050565b80511515825260208101516122a9816126ce565b602083015260408101516122bc816126ce565b6040830152606090810151910152565b8183823760009101908152919050565b6001600160a01b0385168152836020820152821515604082015260806060820152600061230c608083018461224a565b9695505050505050565b6040808252835182820181905260009190606090818501906020808901865b8381101561236357815180516001600160a01b03168652830151838601529386019390820190600101612335565b50508683038188015287518084528184019250600581901b84018201898301885b8381101561243557601f1987840301865281516101608151600981106123ac576123ac6126a2565b855281870151878601528a8201516123c68c870182612295565b508982015160c081818801526080840151915060e0828189015260a085015192506123fd6101008901846001600160a01b03169052565b9084015161012088015290920151610140860182905291506124218186018361224a565b978701979450505090840190600101612384565b50909b9a5050505050505050505050565b6020815260006120d3602083018461224a565b8381526040602082015281604082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612497578081fd5b8260051b80856060850137919091016060019081529392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156124dc576124dc6126b8565b604052919050565b6000808212826001600160ff1b030384138115161561250557612505612676565b600160ff1b839003841281161561251e5761251e612676565b50500190565b6000821982111561253757612537612676565b500190565b60008261254b5761254b61268c565b600160ff1b82146000198414161561256557612565612676565b500590565b6000826125795761257961268c565b500490565b60006001600160ff1b03818413828413858304851182821616156125a4576125a4612676565b600160ff1b848712828116878305891216156125c2576125c2612676565b8587129250878205871284841616156125dd576125dd612676565b878505871281841616156125f3576125f3612676565b505050929093029392505050565b600081600019048311821515161561261b5761261b612676565b500290565b60008083128015600160ff1b85018412161561263e5761263e612676565b836001600160ff1b0301831381161561265957612659612676565b50500390565b60008282101561267157612671612676565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600281106126de576126de6126a2565b50565b80151581146126de57600080fdfea26469706673582212209e05f519090abef664db665b013c295921fb04914a21d86974860cc8843bbf9164736f6c63430008040033

Deployed Bytecode Sourcemap

4969:14018:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:6002;;;;;;:::i;:::-;;:::i;:::-;;;14159:25:1;;;14147:2;14132:18;12982:6002:0;;;;;;;;5036:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6146:283::-;;;;;;;;;;-1:-1:-1;6146:283:0;;;;;:::i;:::-;;:::i;5146:281::-;;;;;;;;;;-1:-1:-1;5146:281:0;;;;;:::i;:::-;;:::i;5734:404::-;;;;;;;;;;-1:-1:-1;5734:404:0;;;;;:::i;:::-;;:::i;:::-;;;13988:14:1;;13981:22;13963:41;;13951:2;13936:18;5734:404:0;13918:92:1;740:2554:0;;;;;;;;;;-1:-1:-1;740:2554:0;;;;;:::i;:::-;;:::i;7565:5223::-;;;;;;:::i;:::-;;:::i;6721:279::-;;;;;;;;;;-1:-1:-1;6721:279:0;;;;;:::i;7006:277::-;;;;;;;;;;-1:-1:-1;7006:277:0;;;;;:::i;12982:6002::-;13102:21;13136:30;;:::i;:::-;13203:21;13177:48;;13256:65;13241:81;;13240:87;13236:751;;4425:4;13487:34;;13486:40;13482:156;;13573:48;;-1:-1:-1;;;13573:48:0;;13615:4;13573:48;;;9792:74:1;3376:42:0;;13573:33;;9765:18:1;;13573:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13547:16;;;:75;13482:156;4489:5;13657:34;;13656:40;13652:156;;13743:48;;-1:-1:-1;;;13743:48:0;;13785:4;13743:48;;;9792:74:1;3464:42:0;;13743:33;;9765:18:1;;13743:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13717:16;;;:75;13652:156;4554:5;13827:33;;13826:39;13822:154;;13912:47;;-1:-1:-1;;;13912:47:0;;13953:4;13912:47;;;9792:74:1;3552:42:0;;13912:32;;9765:18:1;;13912:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13886:16;;;:74;13822:154;14019:65;14004:81;;14003:87;13999:1812;;4231:4;14300:34;;14299:40;14295:1439;;14385:45;;-1:-1:-1;;;14385:45:0;;3643:42;14385:45;;;9792:74:1;14360:22:0;;3376:42;;14385:33;;9765:18:1;;14385:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14360:70;-1:-1:-1;14449:4:0;:17;3376:42;14522:18;14539:1;14360:70;14522:18;:::i;:::-;14563:60;;-1:-1:-1;;;14563:60:0;;14605:4;14563:60;;;10112:34:1;3643:42:0;10162:18:1;;;10155:43;14626:14:0;;3376:42;;14563:33;;10024:18:1;;14563:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:77;14713:11;14726:10;;14663:74;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;14663:74:0;;;;;;;;;;;;;;;;-1:-1:-1;;;14663:74:0;;;14449:307;;;;;-1:-1:-1;;;;;;14449:307:0;;;;;;;;14663:74;14449:307;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14295:1439;13999:1812;;14295:1439;4295:4;14783:34;;14782:40;14778:956;;14868:45;;-1:-1:-1;;;14868:45:0;;3643:42;14868:45;;;9792:74:1;14843:22:0;;3464:42;;14868:33;;9765:18:1;;14868:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14843:70;-1:-1:-1;14932:4:0;:17;3464:42;15005:18;15022:1;14843:70;15005:18;:::i;:::-;15046:60;;-1:-1:-1;;;15046:60:0;;15088:4;15046:60;;;10112:34:1;3643:42:0;10162:18:1;;;10155:43;15109:14:0;;3464:42;;15046:33;;10024:18:1;;15046:60:0;;;;;;;;;;;;;;;;;;14778:956;4359:4;15266:33;;15265:39;15261:473;;15350:44;;-1:-1:-1;;;15350:44:0;;3643:42;15350:44;;;9792:74:1;15325:22:0;;3552:42;;15350:32;;9765:18:1;;15350:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15325:69;-1:-1:-1;15413:4:0;:17;3552:42;15485:18;15502:1;15325:69;15485:18;:::i;:::-;15526:59;;-1:-1:-1;;;15526:59:0;;15567:4;15526:59;;;10112:34:1;3643:42:0;10162:18:1;;;10155:43;15588:14:0;;3552:42;;15526:32;;10024:18:1;;15526:59:0;10006:198:1;15261:473:0;13999:1812;;;15766:33;;-1:-1:-1;;;15766:33:0;;:4;;:8;;:33;;15775:11;;15788:10;;;;15766:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13999:1812;4623:5;15828:28;;15827:34;15823:213;;15897:48;;-1:-1:-1;;;15897:48:0;;15939:4;15897:48;;;9792:74:1;15878:16:0;;3376:42;;15897:33;;9765:18:1;;15897:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15878:67;;15978:1;15964:11;:15;15960:64;;;3376:42;15981:26;16008:15;16022:1;16008:11;:15;:::i;:::-;15981:43;;;;;;;;;;;;;14159:25:1;;14147:2;14132:18;;14114:76;15981:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15960:64;15823:213;;16099:16;;16067:48;;16074:21;16067:48;:::i;:::-;16050:65;-1:-1:-1;16146:65:0;16131:81;;16130:87;16126:796;;4425:4;16239:34;;16238:40;16234:174;;16376:16;;;;16324:48;;-1:-1:-1;;;16324:48:0;;16366:4;16324:48;;;9792:74:1;3376:42:0;;16324:33;;9765:18:1;;16324:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16317:75;;;;:::i;:::-;16299:93;;;;:::i;:::-;;;16234:174;4489:5;16427:34;;16426:40;16422:239;;16637:7;3732:42;-1:-1:-1;;;;;16585:46:0;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16565:16;;;;;16513:48;;-1:-1:-1;;;16513:48:0;;16555:4;16513:48;;;9792:74:1;3464:42:0;;16513:33;;9765:18:1;;16513:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16506:75;;;;:::i;:::-;16505:128;;;;:::i;:::-;:140;;;;:::i;:::-;16487:158;;;;:::i;:::-;;;16422:239;4554:5;16680:33;;16679:39;16675:236;;16887:7;3821:42;-1:-1:-1;;;;;16836:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16816:16;;;;16765:47;;-1:-1:-1;;;16765:47:0;;16806:4;16765:47;;;9792:74:1;3552:42:0;;16765:32;;9765:18:1;;16765:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16758:74;;;;:::i;:::-;16757:126;;;;:::i;:::-;:138;;;;:::i;:::-;16739:156;;;;:::i;:::-;;;16675:236;4753:6;16941:38;;16940:44;16936:957;;17020:21;17001:16;17075:49;-1:-1:-1;;;17075:11:0;:49;:::i;:::-;17056:68;;17157:11;17143;:25;17139:182;;;3376:42;17252:26;17279:25;17293:11;17279;:25;:::i;:::-;17252:53;;;;;;;;;;;;;14159:25:1;;14147:2;14132:18;;14114:76;17252:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17139:182;17335:45;;17343:14;;17335:45;;;;;17368:11;;17335:45;;;;17368:11;17343:14;17335:45;;;;;;;;;;;;;;;;;;;;;16936:957;;;;;4688:5;17403:37;;17402:43;17398:495;;17481:21;17462:16;17617:7;17598:14;17537:49;-1:-1:-1;;;17537:11:0;:49;:::i;:::-;17536:77;;;;:::i;:::-;:89;;;;:::i;:::-;17517:108;;17658:11;17644;:25;17640:182;;;3376:42;17753:26;17780:25;17794:11;17780;:25;:::i;:::-;17753:53;;;;;;;;;;;;;14159:25:1;;14147:2;14132:18;;14114:76;17753:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17640:182;17836:45;;17844:14;;17836:45;;;;;17869:11;;17836:45;;;;17869:11;17844:14;17836:45;;;;;;;;;;;;;;;;;;;;;17398:495;;;17924:21;17974:1;17960:15;;17956:66;;;17985:10;17977:45;18006:15;18020:1;18006:11;:15;:::i;:::-;17977:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17956:66;18053:53;18038:69;;18037:75;18033:944;;4823:6;18202:30;;18201:36;18197:248;;18278:48;;-1:-1:-1;;;18278:48:0;;18320:4;18278:48;;;9792:74:1;18258:17:0;;3376:42;;18278:33;;9765:18:1;;18278:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18258:68;;18364:1;18349:12;:16;18345:84;;;3376:42;18367:32;18400:10;18412:16;18427:1;18412:12;:16;:::i;:::-;18367:62;;-1:-1:-1;;;;;;18367:62:0;;;;;;;-1:-1:-1;;;;;10447:55:1;;;18367:62:0;;;10429:74:1;10519:18;;;10512:34;10402:18;;18367:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18345:84;18197:248;;4889:6;18464:30;;18463:36;18459:248;;18540:48;;-1:-1:-1;;;18540:48:0;;18582:4;18540:48;;;9792:74:1;18520:17:0;;3464:42;;18540:33;;9765:18:1;;18540:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18520:68;;18626:1;18611:12;:16;18607:84;;;3464:42;18629:32;18662:10;18674:16;18689:1;18674:12;:16;:::i;:::-;18629:62;;-1:-1:-1;;;;;;18629:62:0;;;;;;;-1:-1:-1;;;;;10447:55:1;;;18629:62:0;;;10429:74:1;10519:18;;;10512:34;10402:18;;18629:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18607:84;18459:248;;4955:6;18726:29;;18725:35;18721:245;;18801:47;;-1:-1:-1;;;18801:47:0;;18842:4;18801:47;;;9792:74:1;18781:17:0;;3552:42;;18801:32;;9765:18:1;;18801:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18781:67;;18886:1;18871:12;:16;18867:83;;;3552:42;18889:31;18921:10;18933:16;18948:1;18933:12;:16;:::i;:::-;18889:61;;-1:-1:-1;;;;;;18889:61:0;;;;;;;-1:-1:-1;;;;;10447:55:1;;;18889:61:0;;;10429:74:1;10519:18;;;10512:34;10402:18;;18889:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18867:83;18721:245;;12982:6002;;;;;;;:::o;6146:283::-;6397:24;;6405:4;;6397:24;;6416:4;;;;6397:24;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6146:283;;;;;:::o;5146:281::-;5395:24;;5403:4;;5395:24;;5414:4;;;;5395:24;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5146:281;;;;:::o;5734:404::-;5940:4;6090;-1:-1:-1;;;;;6082:18:0;6101:6;;6082:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6126:4:0;;5734:404;-1:-1:-1;;;;;;;;;;;;5734:404:0:o;740:2554::-;910:25;;;933:1;910:25;;;;;;;;;871:36;;910:25;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;962:549:0;;;;;;;;1006:25;962:549;;-1:-1:-1;962:549:0;;;;;;;1081:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;962:549;;;;871:64;;-1:-1:-1;962:549:0;;1328:39;1353:13;1328:24;:39::i;:::-;962:549;;;;1401:1;962:549;;;;1439:4;-1:-1:-1;;;;;962:549:0;;;;;1475:1;962:549;;;;;;;;;;;;;;;;;;;946:10;957:1;946:13;;;;;;-1:-1:-1;;;946:13:0;;;;;;;;;;;;;;;;;;:565;1538:495;;;;;;;;;;1582:21;1538:495;;;;1629:1;1538:495;;;;1653:201;;;;;;;;1696:5;1653:201;;;;;;1734:27;1653:201;;;;;;-1:-1:-1;;;1653:201:0;;;;;;;;;;;;;1785:26;1653:201;;;;1837:1;1653:201;;;1538:495;;;;1886:1;1538:495;;;;1921:1;1538:495;;;;1959:4;-1:-1:-1;;;;;1538:495:0;;;;;1995:1;1538:495;;;;2017:4;;1538:495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1538:495:0;;-1:-1:-1;1522:13:0;;:10;;1533:1;;1522:13;;;;-1:-1:-1;;;1522:13:0;;;;;;;;;;;;;;;;;;:511;2060:619;;;;;;;;;;-1:-1:-1;2060:619:0;;;;2154:1;2060:619;;;;2178:286;;;;;;;;2221:4;2178:286;;;;;;2258:27;2178:286;;;;;;-1:-1:-1;;;2178:286:0;;;;;;;;;;;;;2309:26;2178:286;;;;2397:42;-1:-1:-1;;;;;2380:59:0;;;:67;;2446:1;2380:67;;;2442:1;2380:67;2361:87;;;;:15;:87;:::i;:::-;2178:286;;2060:619;;;;2496:39;2521:13;2496:24;:39::i;:::-;2060:619;;;;2569:1;2060:619;;;;2607:4;-1:-1:-1;;;;;2060:619:0;;;;;2643:1;2060:619;;;;;;;;;;;;;;;;;;;2044:10;2055:1;2044:13;;;;;;-1:-1:-1;;;2044:13:0;;;;;;;;;;;;;;;;;;:635;2734:26;;;2758:1;2734:26;;;;;;;;;2692:39;;2734:26;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2734:26:0;;;;;;;;;;;;;;;2692:68;;2789:89;;;;;;;;2837:4;-1:-1:-1;;;;;2789:89:0;;;;;2865:1;2789:89;;;2771:12;2784:1;2771:15;;;;;;-1:-1:-1;;;2771:15:0;;;;;;;;;;;;;;:107;;;;2893:15;2889:298;;;3007:168;;-1:-1:-1;;;3007:168:0;;3056:42;3007:168;;;10429:74:1;3113:34:0;10519:18:1;;;10512:34;-1:-1:-1;;;;;3007:34:0;;;;;10402:18:1;;3007:168:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2889:298;3197:89;;-1:-1:-1;;;3197:89:0;;3209:42;;3197:63;;:89;;3261:12;;3275:10;;3197:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;740:2554;;;;;;;:::o;7565:5223::-;7750:77;7735:93;;7734:99;7730:551;;3938:3;7855:51;;7854:57;7850:420;;7951:21;8009:1;7995:15;;7991:72;;;3376:42;8012:25;8045:15;8059:1;8045:11;:15;:::i;:::-;8012:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7991:72;7850:420;;;;8123:48;;-1:-1:-1;;;8123:48:0;;8165:4;8123:48;;;9792:74:1;8104:16:0;;3376:42;;8123:33;;9765:18:1;;8123:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8104:67;;8208:1;8194:11;:15;8190:64;;;3376:42;8211:26;8238:15;8252:1;8238:11;:15;:::i;:::-;8211:43;;;;;;;;;;;;;14159:25:1;;14147:2;14132:18;;14114:76;8211:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8190:64;7850:420;;8293:11;8319:3820;8335:4;:11;8326:6;:20;8319:3820;;;8444:4;8440:1;8432:6;8428:14;8424:25;8418:4;8414:36;8408:43;8565:6;-1:-1:-1;;;8495:8:0;8491:72;8487:85;8605:4;8599:11;8897:13;-1:-1:-1;;;8828:8:0;8824:71;8820:91;8936:23;8982:1;8977:357;;;;9393:23;9390:1;9383:34;9480:1;9473:4;9461:10;9457:21;9453:29;9439:43;;9572:1;9567;9559:6;9555:14;9549:4;9545:25;9541:33;9535:4;9531:44;9504:71;;9612:1;9597:166;9622:10;9619:1;9616:17;9597:166;;;9707:31;;;9701:38;9690:9;;;9683:57;9648:4;9641:12;9597:166;;;9601:14;8929:853;;8977:357;9037:4;9021:21;;;;9123:1;9111:14;;9101:25;9091:36;;;-1:-1:-1;9164:1:0;9149:166;9174:10;9171:1;9168:17;9149:166;;;9259:31;;;9253:38;9242:9;;;9235:57;9200:4;9193:12;9149:166;;;9153:14;8929:853;;9838:4;9826:10;9822:21;9819:1;9815:29;9809:4;9802:43;-1:-1:-1;;;;;9983:8:0;9979:57;-1:-1:-1;;;10127:8:0;10123:81;-1:-1:-1;;;10222:634:0;;;;11488:4;11419:1;11356:10;11285:1;11219:4;11215:1;11207:6;11203:14;11199:25;11193:4;11189:36;11183:43;11109:12;11039:8;-1:-1:-1;;;10983:8:0;10979:58;10975:73;10932:561;10905:588;;10116:1422;;10222:634;10806:4;10737:1;10674:10;10603:1;10529:12;10459:8;-1:-1:-1;;;10403:8:0;10399:58;10395:73;10344:467;10317:494;;10116:1422;-1:-1:-1;;;;;;11589:76:0;;11667:4;11585:87;11693:30;;11690:2;;11886:1;11880:8;11872:4;11847:23;11843:34;11837:4;11833:45;11826:63;11690:2;-1:-1:-1;12067:4:0;12060:15;-1:-1:-1;;;;11956:72:0;;12030:6;11952:85;11936:106;12039:1;11936:106;8373:3755;;;12253:75;12238:91;;12237:97;12233:548;;4090:3;12356:50;;12355:56;12351:419;;12451:21;12509:1;12495:15;;12491:72;;;3376:42;12512:25;12545:15;12559:1;12545:11;:15;:::i;:::-;12512:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12491:72;12351:419;7565:5223;;;:::o;12351:419::-;12623:48;;-1:-1:-1;;;12623:48:0;;12665:4;12623:48;;;9792:74:1;12604:16:0;;3376:42;;12623:33;;9765:18:1;;12623:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12604:67;;12708:1;12694:11;:15;12690:64;;;3376:42;12711:26;12738:15;12752:1;12738:11;:15;:::i;:::-;12711:43;;;;;;;;;;;;;14159:25:1;;14147:2;14132:18;;14114:76;12711:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12351:419;7565:5223;;;:::o;170:564::-;249:16;309:12;340:42;335:95;;;;449:42;444:95;;;;558:42;553:95;;;;699:1;696;689:12;335:95;414:1;402:13;;335:95;;444;523:1;511:13;;444:95;;553;632:1;620:13;;302:414;;287:440;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:196:1:-;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:391::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:2;;365:6;357;350:22;309:2;-1:-1:-1;393:20:1;;436:18;425:30;;422:2;;;475:8;465;458:26;422:2;519:4;511:6;507:17;495:29;;579:3;572:4;562:6;559:1;555:14;547:6;543:27;539:38;536:47;533:2;;;596:1;593;586:12;533:2;299:307;;;;;:::o;611:375::-;662:8;672:6;726:3;719:4;711:6;707:17;703:27;693:2;;751:8;741;734:26;693:2;-1:-1:-1;781:20:1;;824:18;813:30;;810:2;;;863:8;853;846:26;810:2;907:4;899:6;895:17;883:29;;959:3;952:4;943:6;935;931:19;927:30;924:39;921:2;;;976:1;973;966:12;991:1006;1108:6;1116;1124;1132;1176:9;1167:7;1163:23;1206:3;1202:2;1198:12;1195:2;;;1228:6;1220;1213:22;1195:2;1256:29;1275:9;1256:29;:::i;:::-;1246:39;-1:-1:-1;1319:4:1;-1:-1:-1;;1301:16:1;;1297:27;1294:2;;;1342:6;1334;1327:22;1294:2;;1380:4;1374:11;1424:4;1416:6;1412:17;1448:18;1516:6;1504:10;1501:22;1496:2;1484:10;1481:18;1478:46;1475:2;;;1527:18;;:::i;:::-;1569:10;1563:4;1556:24;1604:38;1638:2;1627:9;1623:18;1604:38;:::i;:::-;1589:54;;1704:4;1689:20;;1676:34;1671:2;1659:15;;1652:59;1596:6;;-1:-1:-1;1787:2:1;1772:18;;1759:32;;1803:14;;;1800:2;;;1835:6;1827;1820:22;1800:2;;;1879:58;1929:7;1920:6;1909:9;1905:22;1879:58;:::i;:::-;1143:854;;;;-1:-1:-1;1956:8:1;-1:-1:-1;;;;1143:854:1:o;2002:701::-;2096:6;2104;2112;2120;2128;2181:3;2169:9;2160:7;2156:23;2152:33;2149:2;;;2203:6;2195;2188:22;2149:2;2231:29;2250:9;2231:29;:::i;:::-;2221:39;;2307:2;2296:9;2292:18;2279:32;2269:42;;2361:2;2350:9;2346:18;2333:32;2374:28;2396:5;2374:28;:::i;:::-;2421:5;-1:-1:-1;2477:2:1;2462:18;;2449:32;2504:18;2493:30;;2490:2;;;2541:6;2533;2526:22;2490:2;2585:58;2635:7;2626:6;2615:9;2611:22;2585:58;:::i;:::-;2139:564;;;;-1:-1:-1;2139:564:1;;-1:-1:-1;2662:8:1;;2559:84;2139:564;-1:-1:-1;;;2139:564:1:o;2708:640::-;2805:6;2813;2821;2829;2837;2890:3;2878:9;2869:7;2865:23;2861:33;2858:2;;;2912:6;2904;2897:22;2858:2;2940:29;2959:9;2940:29;:::i;:::-;2930:39;;3016:2;3005:9;3001:18;2988:32;2978:42;;3067:2;3056:9;3052:18;3039:32;3029:42;;3122:2;3111:9;3107:18;3094:32;3149:18;3141:6;3138:30;3135:2;;;3186:6;3178;3171:22;3353:1501;3540:6;3548;3556;3564;3572;3580;3588;3596;3604;3657:3;3645:9;3636:7;3632:23;3628:33;3625:2;;;3679:6;3671;3664:22;3625:2;3724:9;3711:23;3753:18;3794:2;3786:6;3783:14;3780:2;;;3815:6;3807;3800:22;3780:2;3859:70;3921:7;3912:6;3901:9;3897:22;3859:70;:::i;:::-;3948:8;;-1:-1:-1;3833:96:1;-1:-1:-1;4036:2:1;4021:18;;4008:32;;-1:-1:-1;4052:16:1;;;4049:2;;;4086:6;4078;4071:22;4049:2;4130:72;4194:7;4183:8;4172:9;4168:24;4130:72;:::i;:::-;4221:8;;-1:-1:-1;4104:98:1;-1:-1:-1;4309:2:1;4294:18;;4281:32;;-1:-1:-1;4325:16:1;;;4322:2;;;4359:6;4351;4344:22;4322:2;4403:72;4467:7;4456:8;4445:9;4441:24;4403:72;:::i;:::-;4494:8;;-1:-1:-1;4377:98:1;-1:-1:-1;4377:98:1;;-1:-1:-1;4548:38:1;4582:2;4567:18;;4548:38;:::i;:::-;4538:48;;4639:3;4628:9;4624:19;4611:33;4595:49;;4669:2;4659:8;4656:16;4653:2;;;4690:6;4682;4675:22;4653:2;;4734:60;4786:7;4775:8;4764:9;4760:24;4734:60;:::i;:::-;4708:86;;4813:8;4803:18;;;4840:8;4830:18;;;3615:1239;;;;;;;;;;;:::o;4859:255::-;4926:6;4979:2;4967:9;4958:7;4954:23;4950:32;4947:2;;;5000:6;4992;4985:22;4947:2;5037:9;5031:16;5056:28;5078:5;5056:28;:::i;:::-;5103:5;4937:177;-1:-1:-1;;;4937:177:1:o;5119:193::-;5188:6;5241:2;5229:9;5220:7;5216:23;5212:32;5209:2;;;5262:6;5254;5247:22;5209:2;-1:-1:-1;5290:16:1;;5199:113;-1:-1:-1;5199:113:1:o;5317:563::-;5403:6;5411;5419;5427;5480:2;5468:9;5459:7;5455:23;5451:32;5448:2;;;5501:6;5493;5486:22;5448:2;5542:9;5529:23;5519:33;;5599:2;5588:9;5584:18;5571:32;5561:42;;5654:2;5643:9;5639:18;5626:32;5681:18;5673:6;5670:30;5667:2;;;5718:6;5710;5703:22;5667:2;5762:58;5812:7;5803:6;5792:9;5788:22;5762:58;:::i;6084:525::-;6179:6;6187;6195;6248:2;6236:9;6227:7;6223:23;6219:32;6216:2;;;6269:6;6261;6254:22;6216:2;6310:9;6297:23;6287:33;;6371:2;6360:9;6356:18;6343:32;6398:18;6390:6;6387:30;6384:2;;;6435:6;6427;6420:22;6384:2;6479:70;6541:7;6532:6;6521:9;6517:22;6479:70;:::i;:::-;6206:403;;6568:8;;-1:-1:-1;6453:96:1;;-1:-1:-1;;;;6206:403:1:o;6614:1070::-;6707:6;6715;6768:2;6756:9;6747:7;6743:23;6739:32;6736:2;;;6789:6;6781;6774:22;6736:2;6830:9;6817:23;6807:33;;6859:2;6912;6901:9;6897:18;6884:32;6935:18;6976:2;6968:6;6965:14;6962:2;;;6997:6;6989;6982:22;6962:2;7040:6;7029:9;7025:22;7015:32;;7085:7;7078:4;7074:2;7070:13;7066:27;7056:2;;7112:6;7104;7097:22;7056:2;7153;7140:16;7175:2;7171;7168:10;7165:2;;;7181:18;;:::i;:::-;7227:2;7224:1;7220:10;7210:20;;7250:28;7274:2;7270;7266:11;7250:28;:::i;:::-;7312:15;;;7343:12;;;;7375:11;;;7405;;;7401:20;;7398:33;-1:-1:-1;7395:2:1;;;7449:6;7441;7434:22;7395:2;7476:6;7467:15;;7491:163;7505:2;7502:1;7499:9;7491:163;;;7562:17;;7550:30;;7523:1;7516:9;;;;;7600:12;;;;7632;;7491:163;;;7495:3;7673:5;7663:15;;;;;;;;6726:958;;;;;:::o;7689:565::-;7777:6;7785;7793;7801;7854:2;7842:9;7833:7;7829:23;7825:32;7822:2;;;7875:6;7867;7860:22;8391:475;8432:3;8470:5;8464:12;8497:6;8492:3;8485:19;8522:3;8534:162;8548:6;8545:1;8542:13;8534:162;;;8610:4;8666:13;;;8662:22;;8656:29;8638:11;;;8634:20;;8627:59;8563:12;8534:162;;;8714:6;8711:1;8708:13;8705:2;;;8780:3;8773:4;8764:6;8759:3;8755:16;8751:27;8744:40;8705:2;-1:-1:-1;8848:2:1;8827:15;-1:-1:-1;;8823:29:1;8814:39;;;;8855:4;8810:50;;8440:426;-1:-1:-1;;8440:426:1:o;8871:492::-;8968:5;8962:12;8955:20;8948:28;8943:3;8936:41;9023:4;9016:5;9012:16;9006:23;9038:53;9078:12;9038:53;:::i;:::-;9116:4;9107:14;;9100:36;9184:4;9173:16;;9167:23;9199:55;9167:23;9199:55;:::i;:::-;9279:4;9270:14;;9263:38;9350:4;9339:16;;;9333:23;9317:14;;9310:47;8926:437::o;9368:273::-;9551:6;9543;9538:3;9525:33;9507:3;9577:16;;9602:15;;;9577:16;9515:126;-1:-1:-1;9515:126:1:o;10859:491::-;-1:-1:-1;;;;;11088:6:1;11084:55;11073:9;11066:74;11176:6;11171:2;11160:9;11156:18;11149:34;11233:6;11226:14;11219:22;11214:2;11203:9;11199:18;11192:50;11278:3;11273:2;11262:9;11258:18;11251:31;11047:4;11299:45;11339:3;11328:9;11324:19;11316:6;11299:45;:::i;:::-;11291:53;11056:294;-1:-1:-1;;;;;;11056:294:1:o;11355:2463::-;11718:2;11770:21;;;11840:13;;11743:18;;;11862:22;;;11689:4;;11718:2;11903;;11921:18;;;;11958:4;11985:15;;;11689:4;12031:303;12045:6;12042:1;12039:13;12031:303;;;12104:13;;12146:9;;-1:-1:-1;;;;;12142:58:1;12130:71;;12241:11;;12235:18;12221:12;;;12214:40;12274:12;;;;12309:15;;;;12067:1;12060:9;12031:303;;;-1:-1:-1;;12370:19:1;;;12350:18;;;12343:47;12440:13;;12462:21;;;12501:12;;;;-1:-1:-1;12553:1:1;12549:16;;;12540:26;;12536:35;;12596:15;;;12631:4;12644:1145;12660:8;12655:3;12652:17;12644:1145;;;12755:2;12751:7;12745:3;12737:6;12733:16;12729:30;12722:5;12715:45;12789:8;12783:15;12821:6;12856:2;12850:9;12889:1;12885:2;12882:9;12872:2;;12895:18;;:::i;:::-;12928;;12989:11;;;12983:18;12966:15;;;12959:43;13041:11;;;13035:18;13066:60;13110:15;;;13035:18;13066:60;:::i;:::-;;13163:2;13159;13155:11;13149:18;13190:4;13231:2;13226;13218:6;13214:15;13207:27;13272:4;13268:2;13264:13;13258:20;13247:31;;13302:4;13344:3;13338;13330:6;13326:16;13319:29;13397:4;13393:2;13389:13;13383:20;13361:42;;13416:55;13463:6;13455;13451:19;13435:14;-1:-1:-1;;;;;8325:54:1;8313:67;;8303:83;13416:55;13518:11;;;13512:18;13503:6;13491:19;;13484:47;13572:12;;;13566:19;13617:6;13605:19;;13598:31;;;13566:19;-1:-1:-1;13652:49:1;13685:15;;;13566:19;13652:49;:::i;:::-;13765:14;;;;13642:59;-1:-1:-1;;;13726:17:1;;;;12688:1;12679:11;12644:1145;;;-1:-1:-1;13806:6:1;;11698:2120;-1:-1:-1;;;;;;;;;;;11698:2120:1:o;14195:219::-;14344:2;14333:9;14326:21;14307:4;14364:44;14404:2;14393:9;14389:18;14381:6;14364:44;:::i;14601:613::-;14818:6;14807:9;14800:25;14861:2;14856;14845:9;14841:18;14834:30;14900:6;14895:2;14884:9;14880:18;14873:34;14781:4;14930:66;14922:6;14919:78;14916:2;;;15013:4;15007;15000:18;14916:2;15050:6;15047:1;15043:14;15107:6;15099;15094:2;15083:9;15079:18;15066:48;15137:22;;;;15161:2;15133:31;15173:16;;;15133:31;14790:424;-1:-1:-1;;;14790:424:1:o;15219:275::-;15290:2;15284:9;15355:2;15336:13;;-1:-1:-1;;15332:27:1;15320:40;;15390:18;15375:34;;15411:22;;;15372:62;15369:2;;;15437:18;;:::i;:::-;15473:2;15466:22;15264:230;;-1:-1:-1;15264:230:1:o;15499:314::-;15538:3;15573;15570:1;15566:11;15684:1;-1:-1:-1;;;;;15612:74:1;15609:1;15605:82;15600:2;15593:10;15589:99;15586:2;;;15691:18;;:::i;:::-;-1:-1:-1;;;15738:19:1;;;15731:27;;15723:36;;15720:2;;;15762:18;;:::i;:::-;-1:-1:-1;;15798:9:1;;15546:267::o;15818:128::-;15858:3;15889:1;15885:6;15882:1;15879:13;15876:2;;;15895:18;;:::i;:::-;-1:-1:-1;15931:9:1;;15866:80::o;15951:193::-;15990:1;16016;16006:2;;16021:18;;:::i;:::-;-1:-1:-1;;;16057:18:1;;-1:-1:-1;;16077:13:1;;16053:38;16050:2;;;16094:18;;:::i;:::-;-1:-1:-1;16128:10:1;;15996:148::o;16149:120::-;16189:1;16215;16205:2;;16220:18;;:::i;:::-;-1:-1:-1;16254:9:1;;16195:74::o;16274:624::-;16313:7;-1:-1:-1;;;;;16437:7:1;16434:1;16430:15;16471:7;16468:1;16464:15;16522:1;16518:2;16514:10;16511:1;16508:17;16503:2;16499;16495:11;16491:35;16488:2;;;16529:18;;:::i;:::-;-1:-1:-1;;;16598:15:1;;;16629:11;;;16649;;;16642:19;;16625:37;16622:2;;;16665:18;;:::i;:::-;16711:7;16708:1;16704:15;16694:25;;16764:1;16760:2;16755:11;16752:1;16748:19;16743:2;16739;16735:11;16731:37;16728:2;;;16771:18;;:::i;:::-;16836:1;16832:2;16827:11;16824:1;16820:19;16815:2;16811;16807:11;16803:37;16800:2;;;16843:18;;:::i;:::-;-1:-1:-1;;;16883:9:1;;;;;16325:573;-1:-1:-1;;;16325:573:1:o;16903:168::-;16943:7;17009:1;17005;17001:6;16997:14;16994:1;16991:21;16986:1;16979:9;16972:17;16968:45;16965:2;;;17016:18;;:::i;:::-;-1:-1:-1;17056:9:1;;16955:116::o;17076:317::-;17115:4;17144:12;;;17172:10;;-1:-1:-1;;;17191:19:1;;17184:27;;17168:44;17165:2;;;17215:18;;:::i;:::-;17334:1;-1:-1:-1;;;;;17262:74:1;17259:1;17255:82;17251:2;17247:91;17244:2;;;17341:18;;:::i;:::-;-1:-1:-1;;17378:9:1;;17124:269::o;17398:125::-;17438:4;17466:1;17463;17460:8;17457:2;;;17471:18;;:::i;:::-;-1:-1:-1;17508:9:1;;17447:76::o;17528:127::-;17589:10;17584:3;17580:20;17577:1;17570:31;17620:4;17617:1;17610:15;17644:4;17641:1;17634:15;17660:127;17721:10;17716:3;17712:20;17709:1;17702:31;17752:4;17749:1;17742:15;17776:4;17773:1;17766:15;17792:127;17853:10;17848:3;17844:20;17841:1;17834:31;17884:4;17881:1;17874:15;17908:4;17905:1;17898:15;17924:127;17985:10;17980:3;17976:20;17973:1;17966:31;18016:4;18013:1;18006:15;18040:4;18037:1;18030:15;18056:122;18146:1;18139:5;18136:12;18126:2;;18152:18;;:::i;:::-;18116:62;:::o;18183:118::-;18269:5;18262:13;18255:21;18248:5;18245:32;18235:2;;18291:1;18288;18281:12

Swarm Source

ipfs://9e05f519090abef664db665b013c295921fb04914a21d86974860cc8843bbf91
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.