Contract 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8d826dcd4a6233f778e6917da26e0f934d17b355b93731ecb539e5263b61f7bcAny Swap Out Nat...28082022023-02-07 2:16:365 hrs 33 mins ago0xdaaeed6e117a07738dc79506f30c9912d920fb3b IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0358.94 CLV0.00046248
0xfec3b208c04ccdf7e1787831393624b3e334b9327f83064e57a0c32a30361ff0Any Swap In Auto27999412023-02-05 22:26:121 day 9 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867625
0x5d2806dc6889e0cd6923d54c9458e178cb15ccd47b77457247c2b6641397235eAny Swap In Auto27993522023-02-05 20:27:361 day 11 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x53dfe9729ec6a9cf93c31958bddbc327d5ed95a47eb5b2874c1a3531626879f6Any Swap Out Nat...27895412023-02-04 11:21:362 days 20 hrs ago0x6591c24a7f7d3b37527487a457b2f467936dfe59 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0567 CLV0.00092496
0xb7ad57f530286f73861ea300c26f13815758c5003f2592f2966e102f00b15badAny Swap In Auto27481262023-01-29 15:36:008 days 16 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142757
0xad481f91af45a846f2f804cdfe3424e57342626a7232ea3ec8fe4bf918095c35Any Swap Out Nat...27398912023-01-28 11:50:309 days 19 hrs ago0x54708f28a8112495389c102248cef1d8509398f0 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0162 CLV0.00092496
0x17e1535e8b90d7cdbbb7c9f2707f2ac3d100bef35143687900767641260768b0Any Swap In Auto27391812023-01-28 9:26:549 days 22 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0xe38595c0da84f8e645ccf83a234d15bf4fef328a266ce8dd3a755085e8564114Any Swap In Auto27116122023-01-24 12:33:0013 days 19 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142757
0x8947a2310c1d0e1aeea113fad328a595703077fee6e56dc6f4f483827eae92c2Any Swap In Auto26978862023-01-22 14:13:0615 days 17 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x9a060311403e1371e137a22463634d5e4898d5e0a87166c316949666dadf73feAny Swap In Auto26786352023-01-19 21:03:5418 days 10 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142493
0x8fe255cbfc6e0aa246fa90f1207b7ce48f1f27befc455a79d5b4efd57488ae60Any Swap In Auto26505612023-01-15 22:25:1822 days 9 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867757
0x4a8775131d35f293a6b0bcda8056a851a081a414bd68ea95c8224328d646280fAny Swap In Auto26343062023-01-13 15:45:5424 days 16 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x2ba2713876cee81a35903a62b25b86cf45112c6a4036d7759a5efe43cb25e20cAny Swap In Auto26279802023-01-12 18:28:3625 days 13 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867493
0xffa632a3741cec1f3e58bb0ef1f6518bec0a41959fea77df4ebba55e242e2ec7Any Swap In Auto26279022023-01-12 18:12:2425 days 13 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142361
0xc9e964502399ef202f7550c72ebc845c59b39b5478c23df190a8365fc7cf4b6cAny Swap In Auto26098882023-01-10 5:39:2428 days 2 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x6c940e3ac5186d2da0eaa38aa62abe6f64a81f30dc395ad18160986c7064c131Any Swap In Auto25836382023-01-06 13:15:3031 days 18 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867757
0xd8bac72c8777244045da3e6486268b675fb6d6d8d83141d3bd4f3a056e1ed1ccAny Swap In Auto25612742023-01-03 9:53:1234 days 21 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867625
0xcefe106c3df7cc04927d7609404d49b640b7e106fb0ab848e046bd96010bde64Any Swap In Auto25612332023-01-03 9:45:0034 days 22 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x84ef3dd82745dcbcf12282644549d8ec8c55e715f3b3cce304a7b21c27411610Any Swap Out Nat...25258032022-12-29 10:23:5439 days 21 hrs ago0xf41cded5ae5904add00af7420954105490a4b3df IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0329.9993 CLV0.00046248
0xcd5468449701aa35251403342916e3b043faa8836fe20fd5b15cae979e0c530eAny Swap In Auto25177142022-12-28 7:03:3041 days 46 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867625
0x04fd3c9855971dca023d1ea07fa442f7a171ae332538786630ad6333db5ab8f3Any Swap Out Nat...25074122022-12-26 20:18:4242 days 11 hrs ago0xbc2cb19349aa7096b0c6a7b78b47093e9d7638e0 IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c04 CLV0.00046248
0x2a84019ee6f6c632577c33011eaa096cca739b1238124424f7874175f7175697Any Swap In Auto24945622022-12-25 0:59:5444 days 6 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x57a61ae9b31e4316bdd6506502c8987c5e312de55f29789f407c82a061cd1f65Any Swap In Auto24908342022-12-24 12:28:0644 days 19 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142493
0x7a2b6578c85465e73269042326c5d7584b58c60e23646f41471a9b14fab45c4bAny Swap In Auto24678682022-12-21 7:15:2448 days 34 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.001142625
0x4aa8178f2fb76c53cefb9349123b749fbc230202e124f0c1d77d8650551dee8dAny Swap In Auto24505812022-12-18 21:01:2450 days 10 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00 CLV0.000867625
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8d826dcd4a6233f778e6917da26e0f934d17b355b93731ecb539e5263b61f7bc28082022023-02-07 2:16:365 hrs 33 mins ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0 Clover: WCLV Token358.94 CLV
0xfec3b208c04ccdf7e1787831393624b3e334b9327f83064e57a0c32a30361ff027999412023-02-05 22:26:121 day 9 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xd7f6e413143f90c21b8bec3ce57fc61d8e3fee371,006.9908 CLV
0xfec3b208c04ccdf7e1787831393624b3e334b9327f83064e57a0c32a30361ff027999412023-02-05 22:26:121 day 9 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c01,006.9908 CLV
0x5d2806dc6889e0cd6923d54c9458e178cb15ccd47b77457247c2b6641397235e27993522023-02-05 20:27:361 day 11 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xd7f6e413143f90c21b8bec3ce57fc61d8e3fee37866.9987 CLV
0x5d2806dc6889e0cd6923d54c9458e178cb15ccd47b77457247c2b6641397235e27993522023-02-05 20:27:361 day 11 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0866.9987 CLV
0xb7ad57f530286f73861ea300c26f13815758c5003f2592f2966e102f00b15bad27481262023-01-29 15:36:008 days 16 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xf60841a14c548d38b3f2e34e92215d3459835df13,905.4383523 CLV
0xb7ad57f530286f73861ea300c26f13815758c5003f2592f2966e102f00b15bad27481262023-01-29 15:36:008 days 16 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c03,905.4383523 CLV
0x17e1535e8b90d7cdbbb7c9f2707f2ac3d100bef35143687900767641260768b027391812023-01-28 9:26:549 days 22 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x792b71b596a6f4ffe0d75546790d403d6e46ffee744.8824 CLV
0x17e1535e8b90d7cdbbb7c9f2707f2ac3d100bef35143687900767641260768b027391812023-01-28 9:26:549 days 22 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0744.8824 CLV
0xe38595c0da84f8e645ccf83a234d15bf4fef328a266ce8dd3a755085e856411427116122023-01-24 12:33:0013 days 19 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xd134a7d9485c1aac0cbf82718cf6d6e3fd130945107.025 CLV
0xe38595c0da84f8e645ccf83a234d15bf4fef328a266ce8dd3a755085e856411427116122023-01-24 12:33:0013 days 19 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0107.025 CLV
0x8947a2310c1d0e1aeea113fad328a595703077fee6e56dc6f4f483827eae92c226978862023-01-22 14:13:0615 days 17 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x0e03132f90c06c8f367e84fa76753eebe8a22e0f9.6237 CLV
0x8947a2310c1d0e1aeea113fad328a595703077fee6e56dc6f4f483827eae92c226978862023-01-22 14:13:0615 days 17 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c09.6237 CLV
0x9a060311403e1371e137a22463634d5e4898d5e0a87166c316949666dadf73fe26786352023-01-19 21:03:5418 days 10 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00xd7ab364a5fcb97d4745f0d553dabefff193ff57817.5 CLV
0x9a060311403e1371e137a22463634d5e4898d5e0a87166c316949666dadf73fe26786352023-01-19 21:03:5418 days 10 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c017.5 CLV
0x8fe255cbfc6e0aa246fa90f1207b7ce48f1f27befc455a79d5b4efd57488ae6026505612023-01-15 22:25:1822 days 9 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x51aab981edcababff9805868c8c6c68fef415cc5150.041 CLV
0x8fe255cbfc6e0aa246fa90f1207b7ce48f1f27befc455a79d5b4efd57488ae6026505612023-01-15 22:25:1822 days 9 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0150.041 CLV
0x4a8775131d35f293a6b0bcda8056a851a081a414bd68ea95c8224328d646280f26343062023-01-13 15:45:5424 days 16 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x51aab981edcababff9805868c8c6c68fef415cc5180.44 CLV
0x4a8775131d35f293a6b0bcda8056a851a081a414bd68ea95c8224328d646280f26343062023-01-13 15:45:5424 days 16 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0180.44 CLV
0x2ba2713876cee81a35903a62b25b86cf45112c6a4036d7759a5efe43cb25e20c26279802023-01-12 18:28:3625 days 13 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x78754aa1a336c46953b4036d41cf9f56b6ca41826 CLV
0x2ba2713876cee81a35903a62b25b86cf45112c6a4036d7759a5efe43cb25e20c26279802023-01-12 18:28:3625 days 13 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c06 CLV
0xffa632a3741cec1f3e58bb0ef1f6518bec0a41959fea77df4ebba55e242e2ec726279022023-01-12 18:12:2425 days 13 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x78754aa1a336c46953b4036d41cf9f56b6ca41823 CLV
0xffa632a3741cec1f3e58bb0ef1f6518bec0a41959fea77df4ebba55e242e2ec726279022023-01-12 18:12:2425 days 13 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c03 CLV
0xc9e964502399ef202f7550c72ebc845c59b39b5478c23df190a8365fc7cf4b6c26098882023-01-10 5:39:2428 days 2 hrs ago 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c00x66f9a19b1e7039c080c4ae0b7abd4a0220768b6d329.056 CLV
0xc9e964502399ef202f7550c72ebc845c59b39b5478c23df190a8365fc7cf4b6c26098882023-01-10 5:39:2428 days 2 hrs ago Clover: WCLV Token 0x218c3c3d49d0e7b37aff0d8bb079de36ae61a4c0329.056 CLV
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6Router

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at clvscan.com on 2022-04-12
*/

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-02-25
*/

/**
 *Submitted for verification at BscScan.com on 2022-01-28
*/

/**
 *Submitted for verification at snowtrace.io on 2022-01-28
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity >=0.8.2;

interface ISushiswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMathSushiswap {
    function add(uint x, uint y) internal pure returns (uint z) {
        unchecked {
            require((z = x + y) >= x, 'ds-math-add-overflow');
        }
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        unchecked {
            require((z = x - y) <= x, 'ds-math-sub-underflow');
        }
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        unchecked {
            require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
        }
    }
}

library SushiswapV2Library {
    using SafeMathSushiswap for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'SushiswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'SushiswapV2Library: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint160(uint256(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'e18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303' // init code hash
            )))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        (uint reserve0, uint reserve1,) = ISushiswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'SushiswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'SushiswapV2Library: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'SushiswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'SushiswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'SushiswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'SushiswapV2Library: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

// helper methods for interacting with ERC20 tokens and sending NATIVE that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferNative(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: NATIVE_TRANSFER_FAILED');
    }
}

interface IwNATIVE {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

interface AnyswapV1ERC20 {
    function mint(address to, uint256 amount) external returns (bool);
    function burn(address from, uint256 amount) external returns (bool);
    function setMinter(address _auth) external;
    function applyMinter() external;
    function revokeMinter(address _auth) external;
    function changeVault(address newVault) external returns (bool);
    function depositVault(uint amount, address to) external returns (uint);
    function withdrawVault(address from, uint amount, address to) external returns (uint);
    function underlying() external view returns (address);
    function deposit(uint amount, address to) external returns (uint);
    function withdraw(uint amount, address to) external returns (uint);
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV6Router {
    using SafeERC20 for IERC20;
    using SafeMathSushiswap for uint;

    address public immutable factory;
    address public immutable wNATIVE;

    bool public enableSwapTrade;
    modifier swapTradeEnabled() {
        require(enableSwapTrade, 'AnyswapV6Router: SwapTrade disabled');
        _;
    }

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'AnyswapV3Router: EXPIRED');
        _;
    }

    constructor(address _factory, address _wNATIVE, address _mpc) {
        _newMPC = _mpc;
        _newMPCEffectiveTime = block.timestamp;
        factory = _factory;
        wNATIVE = _wNATIVE;
    }

    receive() external payable {
        assert(msg.sender == wNATIVE); // only accept Native via fallback from the wNative contract
    }

    address private _oldMPC;
    address private _newMPC;
    uint256 private _newMPCEffectiveTime;


    event LogChangeMPC(address indexed oldMPC, address indexed newMPC, uint indexed effectiveTime, uint chainID);
    event LogChangeRouter(address indexed oldRouter, address indexed newRouter, uint chainID);
    event LogAnySwapIn(bytes32 indexed txhash, address indexed token, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, string to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForTokens(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForNative(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);

    modifier onlyMPC() {
        require(msg.sender == mpc(), "AnyswapV3Router: FORBIDDEN");
        _;
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= _newMPCEffectiveTime) {
            return _newMPC;
        }
        return _oldMPC;
    }

    function cID() public view returns (uint id) {
        assembly {id := chainid()}
    }

    function setEnableSwapTrade(bool enable) external onlyMPC {
        enableSwapTrade = enable;
    }

    function changeMPC(address newMPC) public onlyMPC returns (bool) {
        require(newMPC != address(0), "AnyswapV3Router: address(0x0)");
        _oldMPC = mpc();
        _newMPC = newMPC;
        _newMPCEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeMPC(_oldMPC, _newMPC, _newMPCEffectiveTime, cID());
        return true;
    }

    function changeVault(address token, address newVault) public onlyMPC returns (bool) {
        require(newVault != address(0), "AnyswapV3Router: address(0x0)");
        return AnyswapV1ERC20(token).changeVault(newVault);
    }

    function setMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).setMinter(_auth);
    }

    function applyMinter(address token) external onlyMPC {
        return AnyswapV1ERC20(token).applyMinter();
    }

    function revokeMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).revokeMinter(_auth);
    }

    function _anySwapOut(address from, address token, address to, uint amount, uint toChainID) internal {
        AnyswapV1ERC20(token).burn(from, amount);
        emit LogAnySwapOut(token, from, to, amount, cID(), toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to`
    function anySwapOut(address token, address to, uint amount, uint toChainID) external {
        _anySwapOut(msg.sender, token, to, amount, toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to` by minting with `underlying`
    function anySwapOutUnderlying(address token, address to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, address to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    function anySwapOut(address[] calldata tokens, address[] calldata to, uint[] calldata amounts, uint[] calldata toChainIDs) external {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapOut(msg.sender, tokens[i], to[i], amounts[i], toChainIDs[i]);
        }
    }

    function anySwapOut(address token, string memory to, uint amount, uint toChainID) external {
        AnyswapV1ERC20(token).burn(msg.sender, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutUnderlying(address token, string memory to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, string memory to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    function _anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) internal {
        AnyswapV1ERC20(token).mint(to, amount);
        emit LogAnySwapIn(txs, token, to, amount, fromChainID, cID());
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    // triggered by `anySwapOut`
    function anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying`
    function anySwapInUnderlying(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20(token).withdrawVault(to, amount, to);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying` if possible
    function anySwapInAuto(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20 _anyToken = AnyswapV1ERC20(token);
        address _underlying = _anyToken.underlying();
        if (_underlying != address(0) && IERC20(_underlying).balanceOf(token) >= amount) {
            if (_underlying == wNATIVE) {
                _anyToken.withdrawVault(to, amount, address(this));
                IwNATIVE(wNATIVE).withdraw(amount);
                TransferHelper.safeTransferNative(to, amount);
            } else {
                _anyToken.withdrawVault(to, amount, to);
            }
        }
    }

    function depositNative(address token, address to) external payable returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        AnyswapV1ERC20(token).depositVault(msg.value, to);
        return msg.value;
    }

    function withdrawNative(address token, uint amount, address to) external returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        AnyswapV1ERC20(token).withdrawVault(msg.sender, amount, address(this));
        IwNATIVE(wNATIVE).withdraw(amount);
        TransferHelper.safeTransferNative(to, amount);
        return amount;
    }

    // extracts mpc fee from bridge fees
    function anySwapFeeTo(address token, uint amount) external onlyMPC {
        address _mpc = mpc();
        AnyswapV1ERC20(token).mint(_mpc, amount);
        AnyswapV1ERC20(token).withdrawVault(_mpc, amount, _mpc);
    }

    function anySwapIn(bytes32[] calldata txs, address[] calldata tokens, address[] calldata to, uint256[] calldata amounts, uint[] calldata fromChainIDs) external onlyMPC {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapIn(txs[i], tokens[i], to[i], amounts[i], fromChainIDs[i]);
        }
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = SushiswapV2Library.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? SushiswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            ISushiswapV2Pair(SushiswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokensUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForTokens`
    function anySwapInExactTokensForTokens(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'SushiswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0], SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, to);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNative(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNativeUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForNative`
    function anySwapInExactTokensForNative(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == wNATIVE, 'AnyswapV3Router: INVALID_PATH');
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'AnyswapV3Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0],  SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, address(this));
        IwNATIVE(wNATIVE).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferNative(to, amounts[amounts.length - 1]);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual returns (uint amountB) {
        return SushiswapV2Library.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        returns (uint amountOut)
    {
        return SushiswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        returns (uint amountIn)
    {
        return SushiswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        returns (uint[] memory amounts)
    {
        return SushiswapV2Library.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        returns (uint[] memory amounts)
    {
        return SushiswapV2Library.getAmountsIn(factory, amountOut, path);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_wNATIVE","type":"address"},{"internalType":"address","name":"_mpc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"string","name":"to","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMPC","type":"address"},{"indexed":true,"internalType":"address","name":"newMPC","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeMPC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":true,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeRouter","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"anySwapFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"txs","type":"bytes32[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"fromChainIDs","type":"uint256[]"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInAuto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForNative","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"toChainIDs","type":"uint256[]"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNativeUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokensUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cID","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMPC","type":"address"}],"name":"changeMPC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"depositNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableSwapTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableSwapTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200445738038062004457833981016040819052620000349162000081565b600180546001600160a01b0319166001600160a01b03928316179055426002559182166080521660a052620000cb565b80516001600160a01b03811681146200007c57600080fd5b919050565b6000806000606084860312156200009757600080fd5b620000a28462000064565b9250620000b26020850162000064565b9150620000c26040850162000064565b90509250925092565b60805160a0516142c562000192600039600081816102230152818161055901528181610845015281816109050152818161125a0152818161144301528181611519015281816115cb0152818161165f01528181611afd01528181611baf01528181611c4301528181611d8b01528181611ec3015281816121690152818161221b01526122af01526000818161060b01528181610c5901528181610e2001528181610f38015281816113060152818161243d01528181612fe4015261303401526142c56000f3fe6080604052600436106102135760003560e01c8063825bb13c11610118578063ad615dec116100a0578063d8b9f6101161006f578063d8b9f6101461066d578063d9e35bb21461068d578063dcfb77b1146106ad578063edbdf5e2146106cd578063f75c2664146106ed57600080fd5b8063ad615dec146105d9578063c45a0155146105f9578063c604b0b81461062d578063d06ca61f1461064d57600080fd5b806387cc6e2f116100e757806387cc6e2f146105275780638fd903f51461054757806399a2f2d7146105935780639f122d6c146105a6578063a5e56571146105c657600080fd5b8063825bb13c146104a7578063832e9492146104c757806385f8c259146104e757806387bafe5f1461050757600080fd5b8063353cb3a81161019b578063540dd52c1161016a578063540dd52c146104215780635b7b018c1461043457806365782f56146104545780636a45397214610474578063701bb8911461049457600080fd5b8063353cb3a8146103975780633f88de89146103c1578063456862aa146103e157806352a397d51461040157600080fd5b80630bb57203116101e25780630bb57203146102ea5780631f00ca741461030a578063241dc2df1461033757806325121b76146103575780632fc1e7281461037757600080fd5b80630175b1c414610257578063049b4e7e14610277578063054d50d414610297578063085c6d5e146102ca57600080fd5b3661025257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610250576102506136d7565b005b600080fd5b34801561026357600080fd5b50610250610272366004613702565b610702565b34801561028357600080fd5b5061025061029236600461380b565b6109f4565b3480156102a357600080fd5b506102b76102b236600461386b565b610abc565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102506102e53660046138a5565b610ad1565b3480156102f657600080fd5b5061025061030536600461390e565b610b1c565b34801561031657600080fd5b5061032a61032536600461398b565b610c52565b6040516102c19190613a49565b34801561034357600080fd5b50610250610352366004613a8d565b610c88565b34801561036357600080fd5b50610250610372366004613ad3565b610c9b565b34801561038357600080fd5b5061032a610392366004613bc4565b610d9e565b3480156103a357600080fd5b506000546103b19060ff1681565b60405190151581526020016102c1565b3480156103cd57600080fd5b506102506103dc366004613702565b611019565b3480156103ed57600080fd5b506103b16103fc366004613c49565b6110d7565b34801561040d57600080fd5b5061032a61041c366004613bc4565b6111d3565b61025061042f366004613c82565b611517565b34801561044057600080fd5b506103b161044f366004613cdb565b611729565b34801561046057600080fd5b5061025061046f36600461390e565b611860565b34801561048057600080fd5b5061025061048f36600461390e565b611975565b6102b76104a2366004613c49565b611af9565b3480156104b357600080fd5b506102506104c2366004613702565b611d3b565b3480156104d357600080fd5b506102b76104e2366004613cf8565b611d87565b3480156104f357600080fd5b506102b761050236600461386b565b611f39565b34801561051357600080fd5b50610250610522366004613c49565b611f46565b34801561053357600080fd5b50610250610542366004613d3a565b611fd6565b34801561055357600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b34801561059f57600080fd5b50466102b7565b3480156105b257600080fd5b506102506105c1366004613c49565b612101565b6102506105d4366004613d66565b612167565b3480156105e557600080fd5b506102b76105f436600461386b565b612383565b34801561060557600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561063957600080fd5b5061025061064836600461380b565b612390565b34801561065957600080fd5b5061032a61066836600461398b565b612436565b34801561067957600080fd5b5061025061068836600461390e565b612463565b34801561069957600080fd5b506102506106a8366004613cdb565b61256c565b3480156106b957600080fd5b506102506106c8366004613da7565b6125f6565b3480156106d957600080fd5b506102506106e8366004613a8d565b6126a7565b3480156106f957600080fd5b5061057b612743565b61070a612743565b6001600160a01b0316336001600160a01b0316146107435760405162461bcd60e51b815260040161073a90613e6b565b60405180910390fd5b6107508585858585612773565b60008490506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b99190613ea2565b90506001600160a01b0381161580159061083e57506040516370a0823160e01b81526001600160a01b0387811660048301528591908316906370a0823190602401602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190613ebf565b10155b156109eb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141561097857604051620e75bb60e21b81526001600160a01b038316906239d6ec906108ab90889088903090600401613ed8565b6020604051808303816000875af11580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613ebf565b50604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050610973858561284c565b6109eb565b604051620e75bb60e21b81526001600160a01b038316906239d6ec906109a690889088908290600401613ed8565b6020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190613ebf565b505b50505050505050565b610a6d338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613ea2565b6001600160a01b031692919061291d565b336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798585465b86604051610aae9493929190613f53565b60405180910390a350505050565b6000610ac9848484612977565b949350505050565b610ad9612743565b6001600160a01b0316336001600160a01b031614610b095760405162461bcd60e51b815260040161073a90613e6b565b6000805460ff1916911515919091179055565b60005460ff16610b3e5760405162461bcd60e51b815260040161073a90613f82565b8142811015610b5f5760405162461bcd60e51b815260040161073a90613fc5565b85856000818110610b7257610b72613ffc565b9050602002016020810190610b879190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190614012565b506001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c465b89604051610c409695949392919061402f565b60405180910390a35050505050505050565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612a45565b90505b92915050565b610c953385858585612bdb565b50505050565b610ca3612743565b6001600160a01b0316336001600160a01b031614610cd35760405162461bcd60e51b815260040161073a90613e6b565b60005b87811015610d9157610d7f8b8b83818110610cf357610cf3613ffc565b905060200201358a8a84818110610d0c57610d0c613ffc565b9050602002016020810190610d219190613cdb565b898985818110610d3357610d33613ffc565b9050602002016020810190610d489190613cdb565b888886818110610d5a57610d5a613ffc565b90506020020135878787818110610d7357610d73613ffc565b90506020020135612773565b80610d89816140af565b915050610cd6565b5050505050505050505050565b6060610da8612743565b6001600160a01b0316336001600160a01b031614610dd85760405162461bcd60e51b815260040161073a90613e6b565b60005460ff16610dfa5760405162461bcd60e51b815260040161073a90613f82565b8242811015610e1b5760405162461bcd60e51b815260040161073a90613fc5565b610e797f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b9150878260018451610e8b91906140ca565b81518110610e9b57610e9b613ffc565b60200260200101511015610f075760405162461bcd60e51b815260206004820152602d60248201527f5375736869737761705632526f757465723a20494e53554646494349454e545f60448201526c13d55514155517d05353d55395609a1b606482015260840161073a565b610fcd8a88886000818110610f1e57610f1e613ffc565b9050602002016020810190610f339190613cdb565b610fac7f00000000000000000000000000000000000000000000000000000000000000008b8b6000818110610f6a57610f6a613ffc565b9050602002016020810190610f7f9190613cdb565b8c8c6001818110610f9257610f92613ffc565b9050602002016020810190610fa79190613cdb565b612e28565b85600081518110610fbf57610fbf613ffc565b602002602001015187612773565b61100c828888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250612f01915050565b5098975050505050505050565b611021612743565b6001600160a01b0316336001600160a01b0316146110515760405162461bcd60e51b815260040161073a90613e6b565b61105e8585858585612773565b604051620e75bb60e21b81526001600160a01b038516906239d6ec9061108c90869086908290600401613ed8565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190613ebf565b505050505050565b60006110e1612743565b6001600160a01b0316336001600160a01b0316146111115760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6040516360e232a960e01b81526001600160a01b0383811660048301528416906360e232a9906024016020604051808303816000875af11580156111af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190614012565b60606111dd612743565b6001600160a01b0316336001600160a01b03161461120d5760405162461bcd60e51b815260040161073a90613e6b565b60005460ff1661122f5760405162461bcd60e51b815260040161073a90613f82565b82428110156112505760405162461bcd60e51b815260040161073a90613fc5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876112876001826140ca565b81811061129657611296613ffc565b90506020020160208101906112ab9190613cdb565b6001600160a01b0316146113015760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20494e56414c49445f50415448000000604482015260640161073a565b61135f7f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b915087826001845161137191906140ca565b8151811061138157611381613ffc565b602002602001015110156113eb5760405162461bcd60e51b815260206004820152602b60248201527f416e79737761705633526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b606482015260840161073a565b6114028a88886000818110610f1e57610f1e613ffc565b61144182888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612f01915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855161147f91906140ca565b8151811061148f5761148f613ffc565b60200260200101516040518263ffffffff1660e01b81526004016114b591815260200190565b600060405180830381600087803b1580156114cf57600080fd5b505af11580156114e3573d6000803e3d6000fd5b5050505061100c8583600185516114fa91906140ca565b8151811061150a5761150a613ffc565b602002602001015161284c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a39190613ea2565b6001600160a01b0316146115c95760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190614012565b6116dc576116dc6136d7565b336001600160a01b0384167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798434468660405161171c9493929190613f53565b60405180910390a3505050565b6000611733612743565b6001600160a01b0316336001600160a01b0316146117635760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6117c1612743565b60008054610100600160a81b0319166101006001600160a01b0393841602179055600180546001600160a01b031916918416919091179055611806426202a30061412b565b60028190556001546000546001600160a01b0391821691610100909104167fcda32bc39904597666dfa9f9c845714756e1ffffad55b52e0d344673a21981214660405190815260200160405180910390a45060015b919050565b60005460ff166118825760405162461bcd60e51b815260040161073a90613f82565b81428110156118a35760405162461bcd60e51b815260040161073a90613fc5565b858560008181106118b6576118b6613ffc565b90506020020160208101906118cb9190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190614012565b506001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610c2d565b60005460ff166119975760405162461bcd60e51b815260040161073a90613f82565b81428110156119b85760405162461bcd60e51b815260040161073a90613fc5565b611a4a33878760008181106119cf576119cf613ffc565b90506020020160208101906119e49190613cdb565b8a898960008181106119f8576119f8613ffc565b9050602002016020810190611a0d9190613cdb565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b85856000818110611a5d57611a5d613ffc565b9050602002016020810190611a729190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190613ebf565b50858560008181106118b6576118b6613ffc565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613ea2565b6001600160a01b031614611bad5760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0857600080fd5b505af1158015611c1c573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb49190614012565b611cc057611cc06136d7565b604051630bebbf4d60e41b81523460048201526001600160a01b03838116602483015284169063bebbf4d0906044016020604051808303816000875af1158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190613ebf565b50349392505050565b611d43612743565b6001600160a01b0316336001600160a01b031614611d735760405162461bcd60e51b815260040161073a90613e6b565b611d808585858585612773565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190613ea2565b6001600160a01b031614611e3b5760405162461bcd60e51b815260040161073a906140e1565b604051620e75bb60e21b81526001600160a01b038516906239d6ec90611e6990339087903090600401613ed8565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190613ebf565b50604051632e1a7d4d60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050611f31828461284c565b509092915050565b6000610ac9848484613103565b611f4e612743565b6001600160a01b0316336001600160a01b031614611f7e5760405162461bcd60e51b815260040161073a90613e6b565b60405163cfbd488560e01b81526001600160a01b03828116600483015283169063cfbd4885906024015b600060405180830381600087803b158015611fc257600080fd5b505af11580156110cf573d6000803e3d6000fd5b611fde612743565b6001600160a01b0316336001600160a01b03161461200e5760405162461bcd60e51b815260040161073a90613e6b565b6000612018612743565b6040516340c10f1960e01b81526001600160a01b03808316600483015260248201859052919250908416906340c10f19906044016020604051808303816000875af115801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190614012565b50604051620e75bb60e21b81526001600160a01b038416906239d6ec906120be90849086908290600401613ed8565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190613ebf565b612109612743565b6001600160a01b0316336001600160a01b0316146121395760405162461bcd60e51b815260040161073a90613e6b565b604051637e51dad560e11b81526001600160a01b03828116600483015283169063fca3b5aa90602401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f39190613ea2565b6001600160a01b0316146122195760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561227457600080fd5b505af1158015612288573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190614012565b61232c5761232c6136d7565b6001600160a01b0380831690339085167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a3446604080519283526020830191909152810186905260600160405180910390a4505050565b6000610ac98484846131cc565b604051632770a7eb60e21b8152336004820152602481018390526001600160a01b03851690639dc29fac906044016020604051808303816000875af11580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614012565b50336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b79858546610a9d565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612cb2565b60005460ff166124855760405162461bcd60e51b815260040161073a90613f82565b81428110156124a65760405162461bcd60e51b815260040161073a90613fc5565b6124bd33878760008181106119cf576119cf613ffc565b858560008181106124d0576124d0613ffc565b90506020020160208101906124e59190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125589190613ebf565b5085856000818110610b7257610b72613ffc565b612574612743565b6001600160a01b0316336001600160a01b0316146125a45760405162461bcd60e51b815260040161073a90613e6b565b806001600160a01b0316630d707df86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125df57600080fd5b505af1158015611d80573d6000803e3d6000fd5b50565b60005b8781101561269c5761268a338a8a8481811061261757612617613ffc565b905060200201602081019061262c9190613cdb565b89898581811061263e5761263e613ffc565b90506020020160208101906126539190613cdb565b88888681811061266557612665613ffc565b9050602002013587878781811061267e5761267e613ffc565b90506020020135612bdb565b80612694816140af565b9150506125f9565b505050505050505050565b6126eb338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b6001600160a01b0380841690339086167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a8546604080519283526020830191909152810186905260600160405180910390a450505050565b6000600254421061275e57506001546001600160a01b031690565b5060005461010090046001600160a01b031690565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f19906044016020604051808303816000875af11580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190614012565b50826001600160a01b0316846001600160a01b0316867faac9ce45fe3adf5143598c4f18a369591a20a3384aedaf1b525d29127e1fcd5585856128264690565b604080519384526020840192909252908201526060015b60405180910390a45050505050565b604080516000808252602082019092526001600160a01b0384169083906040516128769190614143565b60006040518083038185875af1925050503d80600081146128b3576040519150601f19603f3d011682016040523d82523d6000602084013e6128b8565b606091505b50509050806129185760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b606482015260840161073a565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c9590859061325c565b60008084116129cc5760405162461bcd60e51b815260206004820152602d602482015260008051602061427083398151915260448201526c17d25394155517d05353d55395609a1b606482015260840161073a565b6000831180156129dc5750600082115b6129f85760405162461bcd60e51b815260040161073a9061415f565b6000612a06856103e56133e3565b90506000612a1482856133e3565b90506000612a2e83612a28886103e86133e3565b90613447565b9050612a3a81836141ad565b979650505050505050565b6060600282511015612a995760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612ab357612ab3613754565b604051908082528060200260200182016040528015612adc578160200160208202803683370190505b509050828160018351612aef91906140ca565b81518110612aff57612aff613ffc565b602002602001018181525050600060018351612b1b91906140ca565b90505b8015612bd357600080612b6e8786612b376001876140ca565b81518110612b4757612b47613ffc565b6020026020010151878681518110612b6157612b61613ffc565b6020026020010151613491565b91509150612b96848481518110612b8757612b87613ffc565b60200260200101518383613103565b84612ba26001866140ca565b81518110612bb257612bb2613ffc565b60200260200101818152505050508080612bcb906141cf565b915050612b1e565b509392505050565b604051632770a7eb60e21b81526001600160a01b03868116600483015260248201849052851690639dc29fac906044016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614012565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a85612c964690565b604080519283526020830191909152810186905260600161283d565b6060600282511015612d065760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612d2057612d20613754565b604051908082528060200260200182016040528015612d49578160200160208202803683370190505b5090508281600081518110612d6057612d60613ffc565b60200260200101818152505060005b60018351612d7d91906140ca565b811015612bd357600080612dc387868581518110612d9d57612d9d613ffc565b602002602001015187866001612db3919061412b565b81518110612b6157612b61613ffc565b91509150612deb848481518110612ddc57612ddc613ffc565b60200260200101518383612977565b84612df785600161412b565b81518110612e0757612e07613ffc565b60200260200101818152505050508080612e20906140af565b915050612d6f565b6000806000612e37858561355b565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001612edf9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60005b60018351612f1291906140ca565b811015610c9557600080848381518110612f2e57612f2e613ffc565b602002602001015185846001612f44919061412b565b81518110612f5457612f54613ffc565b6020026020010151915091506000612f6c838361355b565b509050600087612f7d86600161412b565b81518110612f8d57612f8d613ffc565b60200260200101519050600080836001600160a01b0316866001600160a01b031614612fbb57826000612fbf565b6000835b91509150600060028a51612fd391906140ca565b8810612fdf578861302d565b61302d7f0000000000000000000000000000000000000000000000000000000000000000878c6130108c600261412b565b8151811061302057613020613ffc565b6020026020010151612e28565b905061305a7f00000000000000000000000000000000000000000000000000000000000000008888612e28565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613097576020820181803683370190505b506040518563ffffffff1660e01b81526004016130b794939291906141e6565b600060405180830381600087803b1580156130d157600080fd5b505af11580156130e5573d6000803e3d6000fd5b505050505050505050505080806130fb906140af565b915050612f04565b60008084116131595760405162461bcd60e51b815260206004820152602e602482015260008051602061427083398151915260448201526d17d3d55514155517d05353d5539560921b606482015260840161073a565b6000831180156131695750600082115b6131855760405162461bcd60e51b815260040161073a9061415f565b600061319d6103e861319786886133e3565b906133e3565b905060006131b16103e56131978689613655565b90506131c26001612a2883856141ad565b9695505050505050565b600080841161321b5760405162461bcd60e51b8152602060048201526027602482015260008051602061427083398151915260448201526617d05353d5539560ca1b606482015260840161073a565b60008311801561322b5750600082115b6132475760405162461bcd60e51b815260040161073a9061415f565b8261325285846133e3565b610ac991906141ad565b61326e826001600160a01b03166136a0565b6132ba5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161073a565b600080836001600160a01b0316836040516132d59190614143565b6000604051808303816000865af19150503d8060008114613312576040519150601f19603f3d011682016040523d82523d6000602084013e613317565b606091505b5091509150816133695760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161073a565b805115610c9557808060200190518101906133849190614012565b610c955760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161073a565b60008115806134045750508082028282828161340157613401614197565b04145b610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161073a565b80820182811015610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161073a565b60008060006134a0858561355b565b5090506000806134b1888888612e28565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613512919061422a565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461354957808261354c565b81815b90999098509650505050505050565b600080826001600160a01b0316846001600160a01b031614156135d05760405162461bcd60e51b815260206004820152602760248201527f53757368697377617056324c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b606482015260840161073a565b826001600160a01b0316846001600160a01b0316106135f05782846135f3565b83835b90925090506001600160a01b03821661364e5760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a205a45524f5f41444452455353604482015260640161073a565b9250929050565b80820382811115610c825760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161073a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610ac95750141592915050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146125f357600080fd5b600080600080600060a0868803121561371a57600080fd5b85359450602086013561372c816136ed565b9350604086013561373c816136ed565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379357613793613754565b604052919050565b600082601f8301126137ac57600080fd5b813567ffffffffffffffff8111156137c6576137c6613754565b6137d9601f8201601f191660200161376a565b8181528460208386010111156137ee57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561382157600080fd5b843561382c816136ed565b9350602085013567ffffffffffffffff81111561384857600080fd5b6138548782880161379b565b949794965050505060408301359260600135919050565b60008060006060848603121561388057600080fd5b505081359360208301359350604090920135919050565b80151581146125f357600080fd5b6000602082840312156138b757600080fd5b81356138c281613897565b9392505050565b60008083601f8401126138db57600080fd5b50813567ffffffffffffffff8111156138f357600080fd5b6020830191508360208260051b850101111561364e57600080fd5b600080600080600080600060c0888a03121561392957600080fd5b8735965060208801359550604088013567ffffffffffffffff81111561394e57600080fd5b61395a8a828b016138c9565b909650945050606088013561396e816136ed565b969995985093969295946080840135945060a09093013592915050565b6000806040838503121561399e57600080fd5b8235915060208084013567ffffffffffffffff808211156139be57600080fd5b818601915086601f8301126139d257600080fd5b8135818111156139e4576139e4613754565b8060051b91506139f584830161376a565b8181529183018401918481019089841115613a0f57600080fd5b938501935b83851015613a395784359250613a29836136ed565b8282529385019390850190613a14565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613a8157835183529284019291840191600101613a65565b50909695505050505050565b60008060008060808587031215613aa357600080fd5b8435613aae816136ed565b93506020850135613abe816136ed565b93969395505050506040820135916060013590565b60008060008060008060008060008060a08b8d031215613af257600080fd5b8a3567ffffffffffffffff80821115613b0a57600080fd5b613b168e838f016138c9565b909c509a5060208d0135915080821115613b2f57600080fd5b613b3b8e838f016138c9565b909a50985060408d0135915080821115613b5457600080fd5b613b608e838f016138c9565b909850965060608d0135915080821115613b7957600080fd5b613b858e838f016138c9565b909650945060808d0135915080821115613b9e57600080fd5b50613bab8d828e016138c9565b915080935050809150509295989b9194979a5092959850565b60008060008060008060008060e0898b031215613be057600080fd5b883597506020890135965060408901359550606089013567ffffffffffffffff811115613c0c57600080fd5b613c188b828c016138c9565b9096509450506080890135613c2c816136ed565b979a969950949793969295929450505060a08201359160c0013590565b60008060408385031215613c5c57600080fd5b8235613c67816136ed565b91506020830135613c77816136ed565b809150509250929050565b600080600060608486031215613c9757600080fd5b8335613ca2816136ed565b9250602084013567ffffffffffffffff811115613cbe57600080fd5b613cca8682870161379b565b925050604084013590509250925092565b600060208284031215613ced57600080fd5b81356138c2816136ed565b600080600060608486031215613d0d57600080fd5b8335613d18816136ed565b9250602084013591506040840135613d2f816136ed565b809150509250925092565b60008060408385031215613d4d57600080fd5b8235613d58816136ed565b946020939093013593505050565b600080600060608486031215613d7b57600080fd5b8335613d86816136ed565b92506020840135613d96816136ed565b929592945050506040919091013590565b6000806000806000806000806080898b031215613dc357600080fd5b883567ffffffffffffffff80821115613ddb57600080fd5b613de78c838d016138c9565b909a50985060208b0135915080821115613e0057600080fd5b613e0c8c838d016138c9565b909850965060408b0135915080821115613e2557600080fd5b613e318c838d016138c9565b909650945060608b0135915080821115613e4a57600080fd5b50613e578b828c016138c9565b999c989b5096995094979396929594505050565b6020808252601a908201527f416e79737761705633526f757465723a20464f5242494444454e000000000000604082015260600190565b600060208284031215613eb457600080fd5b81516138c2816136ed565b600060208284031215613ed157600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60005b83811015613f16578181015183820152602001613efe565b83811115610c955750506000910152565b60008151808452613f3f816020860160208601613efb565b601f01601f19169290920160200192915050565b608081526000613f666080830187613f27565b6020830195909552506040810192909252606090910152919050565b60208082526023908201527f416e79737761705636526f757465723a205377617054726164652064697361626040820152621b195960ea1b606082015260800190565b60208082526018908201527f416e79737761705633526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561402457600080fd5b81516138c281613897565b60a0808252810186905260008760c08301825b89811015614072578235614055816136ed565b6001600160a01b0316825260209283019290910190600101614042565b50602084019790975250506040810193909352606083019190915260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156140c3576140c3614099565b5060010190565b6000828210156140dc576140dc614099565b500390565b6020808252602a908201527f416e79737761705633526f757465723a20756e6465726c79696e67206973206e6040820152696f7420774e415449564560b01b606082015260800190565b6000821982111561413e5761413e614099565b500190565b60008251614155818460208701613efb565b9190910192915050565b6020808252602a908201526000805160206142708339815191526040820152695f4c495155494449545960b01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826141ca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816141de576141de614099565b506000190190565b84815283602082015260018060a01b03831660408201526080606082015260006131c26080830184613f27565b80516001600160701b038116811461185b57600080fd5b60008060006060848603121561423f57600080fd5b61424884614213565b925061425660208501614213565b9150604084015163ffffffff81168114613d2f57600080fdfe53757368697377617056324c6962726172793a20494e53554646494349454e54a2646970667358221220c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db3364736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

-----Decoded View---------------
Arg [0] : _factory (address): 0x0000000000000000000000000000000000000000
Arg [1] : _wNATIVE (address): 0x1376c97c5c512d2d6f9173a9a3a016b6140b4536
Arg [2] : _mpc (address): 0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000001376c97c5c512d2d6f9173a9a3a016b6140b4536
Arg [2] : 000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c


Deployed ByteCode Sourcemap

10670:15628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11409:10;-1:-1:-1;;;;;11423:7:0;11409:21;;11402:29;;;;:::i;:::-;10670:15628;;;;;17707:718;;;;;;;;;;-1:-1:-1;17707:718:0;;;;;:::i;:::-;;:::i;15925:284::-;;;;;;;;;;-1:-1:-1;15925:284:0;;;;;:::i;:::-;;:::i;25306:246::-;;;;;;;;;;-1:-1:-1;25306:246:0;;;;;:::i;:::-;;:::i;:::-;;;2895:25:1;;;2883:2;2868:18;25306:246:0;;;;;;;;12967:101;;;;;;;;;;-1:-1:-1;12967:101:0;;;;;:::i;:::-;;:::i;20816:433::-;;;;;;;;;;-1:-1:-1;20816:433:0;;;;;:::i;:::-;;:::i;26058:237::-;;;;;;;;;;-1:-1:-1;26058:237:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14408:157::-;;;;;;;;;;-1:-1:-1;14408:157:0;;;;;:::i;:::-;;:::i;19542:319::-;;;;;;;;;;-1:-1:-1;19542:319:0;;;;;:::i;:::-;;:::i;22110:665::-;;;;;;;;;;-1:-1:-1;22110:665:0;;;;;:::i;:::-;;:::i;10856:27::-;;;;;;;;;;-1:-1:-1;10856:27:0;;;;;;;;;;;9596:14:1;;9589:22;9571:41;;9559:2;9544:18;10856:27:0;9431:187:1;17337:245:0;;;;;;;;;;-1:-1:-1;17337:245:0;;;;;:::i;:::-;;:::i;13441:228::-;;;;;;;;;;-1:-1:-1;13441:228:0;;;;;:::i;:::-;;:::i;24170:903::-;;;;;;;;;;-1:-1:-1;24170:903:0;;;;;:::i;:::-;;:::i;16217:411::-;;;;;;:::i;:::-;;:::i;13076:357::-;;;;;;;;;;-1:-1:-1;13076:357:0;;;;;:::i;:::-;;:::i;22876:433::-;;;;;;;;;;-1:-1:-1;22876:433:0;;;;;:::i;:::-;;:::i;23410:615::-;;;;;;;;;;-1:-1:-1;23410:615:0;;;;;:::i;:::-;;:::i;18433:407::-;;;;;;:::i;:::-;;:::i;17051:173::-;;;;;;;;;;-1:-1:-1;17051:173:0;;;;;:::i;:::-;;:::i;18848:413::-;;;;;;;;;;-1:-1:-1;18848:413:0;;;;;:::i;:::-;;:::i;25560:245::-;;;;;;;;;;-1:-1:-1;25560:245:0;;;;;:::i;:::-;;:::i;13937:136::-;;;;;;;;;;-1:-1:-1;13937:136:0;;;;;:::i;:::-;;:::i;19311:223::-;;;;;;;;;;-1:-1:-1;19311:223:0;;;;;:::i;:::-;;:::i;10815:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11743:32:1;;;11725:51;;11713:2;11698:18;10815:32:0;11579:203:1;12870:89:0;;;;;;;;;;-1:-1:-1;12942:9:0;12870:89;;13677:130;;;;;;;;;;-1:-1:-1;13677:130:0;;;;;:::i;:::-;;:::i;14976:405::-;;;;;;:::i;:::-;;:::i;25117:181::-;;;;;;;;;;-1:-1:-1;25117:181:0;;;;;:::i;:::-;;:::i;10776:32::-;;;;;;;;;;;;;;;15683:234;;;;;;;;;;-1:-1:-1;15683:234:0;;;;;:::i;:::-;;:::i;25813:237::-;;;;;;;;;;-1:-1:-1;25813:237:0;;;;;:::i;:::-;;:::i;21350:615::-;;;;;;;;;;-1:-1:-1;21350:615:0;;;;;:::i;:::-;;:::i;13815:114::-;;;;;;;;;;-1:-1:-1;13815:114:0;;;;;:::i;:::-;;:::i;15389:286::-;;;;;;;;;;-1:-1:-1;15389:286:0;;;;;:::i;:::-;;:::i;14690:278::-;;;;;;;;;;-1:-1:-1;14690:278:0;;;;;:::i;:::-;;:::i;12688:174::-;;;;;;;;;;;;;:::i;17707:718::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;;;;;;;;;17829:47:::1;17840:3;17845:5;17852:2;17856:6;17864:11;17829:10;:47::i;:::-;17887:24;17929:5;17887:48;;17946:19;17968:9;-1:-1:-1::0;;;;;17968:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17946:44:::0;-1:-1:-1;;;;;;18005:25:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;18034:36:0::1;::::0;-1:-1:-1;;;18034:36:0;;-1:-1:-1;;;;;11743:32:1;;;18034:36:0::1;::::0;::::1;11725:51:1::0;18074:6:0;;18034:29;;::::1;::::0;::::1;::::0;11698:18:1;;18034:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;18005:75;18001:417;;;18116:7;-1:-1:-1::0;;;;;18101:22:0::1;:11;-1:-1:-1::0;;;;;18101:22:0::1;;18097:310;;;18144:50;::::0;-1:-1:-1;;;18144:50:0;;-1:-1:-1;;;;;18144:23:0;::::1;::::0;::::1;::::0;:50:::1;::::0;18168:2;;18172:6;;18188:4:::1;::::0;18144:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18213:34:0::1;::::0;-1:-1:-1;;;18213:34:0;;::::1;::::0;::::1;2895:25:1::0;;;18222:7:0::1;-1:-1:-1::0;;;;;18213:26:0::1;::::0;::::1;::::0;2868:18:1;;18213:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18266:45;18300:2;18304:6;18266:33;:45::i;:::-;18097:310;;;18352:39;::::0;-1:-1:-1;;;18352:39:0;;-1:-1:-1;;;;;18352:23:0;::::1;::::0;::::1;::::0;:39:::1;::::0;18376:2;;18380:6;;18376:2;;18352:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18097:310;17818:607;;17707:718:::0;;;;;:::o;15925:284::-;16037:86;16097:10;16109:5;16116:6;16059:5;-1:-1:-1;;;;;16044:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16037:59:0;;:86;;:59;:86::i;:::-;16160:10;-1:-1:-1;;;;;16139:62:0;;;16172:2;16176:6;12942:9;16184:5;16191:9;16139:62;;;;;;;;;:::i;:::-;;;;;;;;15925:284;;;;:::o;25306:246::-;25441:14;25480:64;25512:8;25522:9;25533:10;25480:31;:64::i;:::-;25473:71;25306:246;-1:-1:-1;;;;25306:246:0:o;12967:101::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13036:15:::1;:24:::0;;-1:-1:-1;;13036:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12967:101::o;20816:433::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;21060:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;21096:4:::2;;21101:1;21096:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21081:50;::::0;-1:-1:-1;;;21081:50:0;;21110:10:::2;21081:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;21081:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;21081:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;21147:94:0;::::2;21184:10;21147:94;21178:4:::0;;21200:8;21210:12;12942:9;21224:5:::2;21231:9;21147:94;;;;;;;;;;;:::i;:::-;;;;;;;;11003:1:::1;20816:433:::0;;;;;;;:::o;26058:237::-;26184:21;26230:57;26262:7;26271:9;26282:4;26230:31;:57::i;:::-;26223:64;;26058:237;;;;;:::o;14408:157::-;14504:53;14516:10;14528:5;14535:2;14539:6;14547:9;14504:11;:53::i;:::-;14408:157;;;;:::o;19542:319::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;19726:6:::1;19721:133;19738:17:::0;;::::1;19721:133;;;19777:65;19788:3;;19792:1;19788:6;;;;;;;:::i;:::-;;;;;;;19796;;19803:1;19796:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19807:2;;19810:1;19807:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19814:7;;19822:1;19814:10;;;;;;;:::i;:::-;;;;;;;19826:12;;19839:1;19826:15;;;;;;;:::i;:::-;;;;;;;19777:10;:65::i;:::-;19757:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19721:133;;;;19542:319:::0;;;;;;;;;;:::o;22110:665::-;22404:21;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;10937:15:::1;::::0;::::1;;10929:63;;;;-1:-1:-1::0;;;10929:63:0::1;;;;;;;:::i;:::-;22385:8:::2;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::2;;;;;;;:::i;:::-;22448:57:::3;22481:7;22490:8;22500:4;;22448:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22448:32:0::3;::::0;-1:-1:-1;;;22448:57:0:i:3;:::-;22438:67;;22555:12;22524:7;22549:1;22532:7;:14;:18;;;;:::i;:::-;22524:27;;;;;;;;:::i;:::-;;;;;;;:43;;22516:101;;;::::0;-1:-1:-1;;;22516:101:0;;18831:2:1;22516:101:0::3;::::0;::::3;18813:21:1::0;18870:2;18850:18;;;18843:30;18909:34;18889:18;;;18882:62;-1:-1:-1;;;18960:18:1;;;18953:43;19013:19;;22516:101:0::3;18629:409:1::0;22516:101:0::3;22628:104;22639:3;22644:4;;22649:1;22644:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22653:53;22680:7;22689:4;;22694:1;22689:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22698:4;;22703:1;22698:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22653:26;:53::i;:::-;22708:7;22716:1;22708:10;;;;;;;;:::i;:::-;;;;;;;22720:11;22628:10;:104::i;:::-;22743:24;22749:7;22758:4;;22743:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22764:2:0;;-1:-1:-1;22743:5:0::3;::::0;-1:-1:-1;;22743:24:0:i:3;:::-;11003:1:::2;22110:665:::0;;;;;;;;;;:::o;17337:245::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;17465:47:::1;17476:3;17481:5;17488:2;17492:6;17500:11;17465:10;:47::i;:::-;17523:51;::::0;-1:-1:-1;;;17523:51:0;;-1:-1:-1;;;;;17523:35:0;::::1;::::0;::::1;::::0;:51:::1;::::0;17559:2;;17563:6;;17559:2;;17523:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17337:245:::0;;;;;:::o;13441:228::-;13519:4;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13544:22:0;::::1;13536:64;;;::::0;-1:-1:-1;;;13536:64:0;;19245:2:1;13536:64:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13536:64:0::1;19043:353:1::0;13536:64:0::1;13618:43;::::0;-1:-1:-1;;;13618:43:0;;-1:-1:-1;;;;;11743:32:1;;;13618:43:0::1;::::0;::::1;11725:51:1::0;13618:33:0;::::1;::::0;::::1;::::0;11698:18:1;;13618:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24170:903::-:0;24464:21;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;10937:15:::1;::::0;::::1;;10929:63;;;;-1:-1:-1::0;;;10929:63:0::1;;;;;;;:::i;:::-;24445:8:::2;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24531:7:0::3;24506:32;:4:::0;;24511:15:::3;24525:1;24506:4:::0;24511:15:::3;:::i;:::-;24506:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24506:32:0::3;;24498:74;;;::::0;-1:-1:-1;;;24498:74:0;;19603:2:1;24498:74:0::3;::::0;::::3;19585:21:1::0;19642:2;19622:18;;;19615:30;19681:31;19661:18;;;19654:59;19730:18;;24498:74:0::3;19401:353:1::0;24498:74:0::3;24593:57;24626:7;24635:8;24645:4;;24593:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24593:32:0::3;::::0;-1:-1:-1;;;24593:57:0:i:3;:::-;24583:67;;24700:12;24669:7;24694:1;24677:7;:14;:18;;;;:::i;:::-;24669:27;;;;;;;;:::i;:::-;;;;;;;:43;;24661:99;;;::::0;-1:-1:-1;;;24661:99:0;;19961:2:1;24661:99:0::3;::::0;::::3;19943:21:1::0;20000:2;19980:18;;;19973:30;20039:34;20019:18;;;20012:62;-1:-1:-1;;;20090:18:1;;;20083:41;20141:19;;24661:99:0::3;19759:407:1::0;24661:99:0::3;24771:105;24782:3;24787:4;;24792:1;24787:7;;;;;;;:::i;24771:105::-;24887:35;24893:7;24902:4;;24887:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24916:4:0::3;::::0;-1:-1:-1;24887:5:0::3;::::0;-1:-1:-1;;24887:35:0:i:3;:::-;24942:7;-1:-1:-1::0;;;;;24933:26:0::3;;24960:7;24985:1;24968:7;:14;:18;;;;:::i;:::-;24960:27;;;;;;;;:::i;:::-;;;;;;;24933:55;;;;;;;;;;;;;2895:25:1::0;;2883:2;2868:18;;2749:177;24933:55:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;24999:66;25033:2;25037:7;25062:1;25045:7;:14;:18;;;;:::i;:::-;25037:27;;;;;;;;:::i;:::-;;;;;;;24999:33;:66::i;16217:411::-:0;16366:7;-1:-1:-1;;;;;16328:45:0;16343:5;-1:-1:-1;;;;;16328:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16328:45:0;;16320:100;;;;-1:-1:-1;;;16320:100:0;;;;;;;:::i;:::-;16440:7;-1:-1:-1;;;;;16431:25:0;;16464:9;16431:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16494:44:0;;-1:-1:-1;;;16494:44:0;;-1:-1:-1;;;;;16884:32:1;;;16494:44:0;;;16866:51:1;16528:9:0;16933:18:1;;;16926:34;16503:7:0;16494:26;;-1:-1:-1;16494:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;16494:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16487:52;;;;:::i;:::-;16576:10;-1:-1:-1;;;;;16555:65:0;;;16588:2;16592:9;12942;16610;16555:65;;;;;;;;;:::i;:::-;;;;;;;;16217:411;;;:::o;13076:357::-;13135:4;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13160:20:0;::::1;13152:62;;;::::0;-1:-1:-1;;;13152:62:0;;19245:2:1;13152:62:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13152:62:0::1;19043:353:1::0;13152:62:0::1;13235:5;:3;:5::i;:::-;13225:7;:15:::0;;-1:-1:-1;;;;;;13225:15:0::1;;-1:-1:-1::0;;;;;13225:15:0;;::::1;;;::::0;;-1:-1:-1;13251:16:0;;-1:-1:-1;;;;;;13251:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;;13301:27:::1;:15;13319:9;13301:27;:::i;:::-;13278:20;:50:::0;;;13366:7:::1;::::0;::::1;13357::::0;-1:-1:-1;;;;;13366:7:0;;::::1;::::0;::::1;13357::::0;;::::1;;13344:59;12942:9:::0;13344:59:::1;::::0;2895:25:1;;;2883:2;2868:18;13344:59:0::1;;;;;;;-1:-1:-1::0;13421:4:0::1;12671:1;13076:357:::0;;;:::o;22876:433::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;23120:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;23156:4:::2;;23161:1;23156:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23141:50;::::0;-1:-1:-1;;;23141:50:0;;23170:10:::2;23141:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;23141:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;23141:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;23207:94:0;::::2;23244:10;23207:94;23238:4:::0;;23260:8;23270:12;12942:9;23284:5:::2;12870:89:::0;23410:615;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;23664:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;23685:92:::2;23747:10;23759:4;;23764:1;23759:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23768:8;23707:4;;23712:1;23707:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23692:34:0::2;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;23685:92;23803:4;;23808:1;23803:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23788:58;::::0;-1:-1:-1;;;23788:58:0;;::::2;::::0;::::2;20889:25:1::0;;;23835:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;23788:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;23788:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23872:4;;23877:1;23872:7;;;;;;;:::i;18433:407::-:0;18509:4;18572:7;-1:-1:-1;;;;;18534:45:0;18549:5;-1:-1:-1;;;;;18534:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18534:45:0;;18526:100;;;;-1:-1:-1;;;18526:100:0;;;;;;;:::i;:::-;18646:7;-1:-1:-1;;;;;18637:25:0;;18670:9;18637:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18700:44:0;;-1:-1:-1;;;18700:44:0;;-1:-1:-1;;;;;16884:32:1;;;18700:44:0;;;16866:51:1;18734:9:0;16933:18:1;;;16926:34;18709:7:0;18700:26;;-1:-1:-1;18700:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;18700:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18693:52;;;;:::i;:::-;18756:49;;-1:-1:-1;;;18756:49:0;;18791:9;18756:49;;;20889:25:1;-1:-1:-1;;;;;20950:32:1;;;20930:18;;;20923:60;18756:34:0;;;;;20862:18:1;;18756:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18823:9:0;;18433:407;-1:-1:-1;;;18433:407:0:o;17051:173::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;17169:47:::1;17180:3;17185:5;17192:2;17196:6;17204:11;17169:10;:47::i;:::-;17051:173:::0;;;;;:::o;18848:413::-;18930:4;18993:7;-1:-1:-1;;;;;18955:45:0;18970:5;-1:-1:-1;;;;;18955:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18955:45:0;;18947:100;;;;-1:-1:-1;;;18947:100:0;;;;;;;:::i;:::-;19058:70;;-1:-1:-1;;;19058:70:0;;-1:-1:-1;;;;;19058:35:0;;;;;:70;;19094:10;;19106:6;;19122:4;;19058:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19139:34:0;;-1:-1:-1;;;19139:34:0;;;;;2895:25:1;;;19148:7:0;-1:-1:-1;;;;;19139:26:0;;;;2868:18:1;;19139:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19184:45;19218:2;19222:6;19184:33;:45::i;:::-;-1:-1:-1;19247:6:0;;18848:413;-1:-1:-1;;18848:413:0:o;25560:245::-;25695:13;25733:64;25764:9;25775;25786:10;25733:30;:64::i;13937:136::-;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;14024:41:::1;::::0;-1:-1:-1;;;14024:41:0;;-1:-1:-1;;;;;11743:32:1;;;14024:41:0::1;::::0;::::1;11725:51:1::0;14024:34:0;::::1;::::0;::::1;::::0;11698:18:1;;14024:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;19311:223:::0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;19389:12:::1;19404:5;:3;:5::i;:::-;19420:40;::::0;-1:-1:-1;;;19420:40:0;;-1:-1:-1;;;;;16884:32:1;;;19420:40:0::1;::::0;::::1;16866:51:1::0;16933:18;;;16926:34;;;19389:20:0;;-1:-1:-1;19420:26:0;;::::1;::::0;::::1;::::0;16839:18:1;;19420:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19471:55:0::1;::::0;-1:-1:-1;;;19471:55:0;;-1:-1:-1;;;;;19471:35:0;::::1;::::0;::::1;::::0;:55:::1;::::0;19507:4;;19513:6;;19507:4;;19471:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13677:130::-:0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13761:38:::1;::::0;-1:-1:-1;;;13761:38:0;;-1:-1:-1;;;;;11743:32:1;;;13761:38:0::1;::::0;::::1;11725:51:1::0;13761:31:0;::::1;::::0;::::1;::::0;11698:18:1;;13761:38:0::1;11579:203:1::0;14976:405:0;15119:7;-1:-1:-1;;;;;15081:45:0;15096:5;-1:-1:-1;;;;;15081:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15081:45:0;;15073:100;;;;-1:-1:-1;;;15073:100:0;;;;;;;:::i;:::-;15193:7;-1:-1:-1;;;;;15184:25:0;;15217:9;15184:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15247:44:0;;-1:-1:-1;;;15247:44:0;;-1:-1:-1;;;;;16884:32:1;;;15247:44:0;;;16866:51:1;15281:9:0;16933:18:1;;;16926:34;15256:7:0;15247:26;;-1:-1:-1;15247:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;15247:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15240:52;;;;:::i;:::-;-1:-1:-1;;;;;15308:65:0;;;;15329:10;;15308:65;;;15345:9;12942;15308:65;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;15308:65:0;;;;;;;14976:405;;;:::o;25117:181::-;25205:12;25237:53;25262:7;25271:8;25281;25237:24;:53::i;15683:234::-;15785:46;;-1:-1:-1;;;15785:46:0;;15812:10;15785:46;;;16866:51:1;16933:18;;;16926:34;;;-1:-1:-1;;;;;15785:26:0;;;;;16839:18:1;;15785:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15868:10:0;-1:-1:-1;;;;;15847:62:0;;;15880:2;15884:6;12942:9;15892:5;12870:89;25813:237;25939:21;25985:57;26018:7;26027:8;26037:4;25985:32;:57::i;21350:615::-;10937:15;;;;10929:63;;;;-1:-1:-1;;;10929:63:0;;;;;;;:::i;:::-;21604:8:::1;11082:15;11070:8;:27;;11062:64;;;;-1:-1:-1::0;;;11062:64:0::1;;;;;;;:::i;:::-;21625:92:::2;21687:10;21699:4;;21704:1;21699:7;;;;;;;:::i;21625:92::-;21743:4;;21748:1;21743:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21728:58;::::0;-1:-1:-1;;;21728:58:0;;::::2;::::0;::::2;20889:25:1::0;;;21775:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;21728:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;21728:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21812:4;;21817:1;21812:7;;;;;;;:::i;13815:114::-:0;12624:5;:3;:5::i;:::-;-1:-1:-1;;;;;12610:19:0;:10;-1:-1:-1;;;;;12610:19:0;;12602:58;;;;-1:-1:-1;;;12602:58:0;;;;;;;:::i;:::-;13901:5:::1;-1:-1:-1::0;;;;;13886:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;12671:1;13815:114:::0;:::o;15389:286::-;15537:6;15532:136;15549:17;;;15532:136;;;15588:68;15600:10;15612:6;;15619:1;15612:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15623:2;;15626:1;15623:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15630:7;;15638:1;15630:10;;;;;;;:::i;:::-;;;;;;;15642;;15653:1;15642:13;;;;;;;:::i;:::-;;;;;;;15588:11;:68::i;:::-;15568:3;;;;:::i;:::-;;;;15532:136;;;;15389:286;;;;;;;;:::o;14690:278::-;14796:86;14856:10;14868:5;14875:6;14818:5;-1:-1:-1;;;;;14803:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14796:86;-1:-1:-1;;;;;14898:62:0;;;;14919:10;;14898:62;;;14935:6;12942:9;14898:62;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14898:62:0;;;;;;;14690:278;;;;:::o;12688:174::-;12724:7;12767:20;;12748:15;:39;12744:86;;-1:-1:-1;12811:7:0;;-1:-1:-1;;;;;12811:7:0;;12688:174::o;12744:86::-;-1:-1:-1;12847:7:0;;;;;-1:-1:-1;;;;;12847:7:0;;12688:174::o;16708:229::-;16819:38;;-1:-1:-1;;;16819:38:0;;-1:-1:-1;;;;;16884:32:1;;;16819:38:0;;;16866:51:1;16933:18;;;16926:34;;;16819:26:0;;;;;16839:18:1;;16819:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16898:2;-1:-1:-1;;;;;16873:56:0;16891:5;-1:-1:-1;;;;;16873:56:0;16886:3;16873:56;16902:6;16910:11;16923:5;12942:9;;12870:89;16923:5;16873:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;;21273:34;21184:2;21169:18;16873:56:0;;;;;;;;16708:229;;;;;:::o;6960:201::-;7071:12;;;7033;7071;;;;;;;;;-1:-1:-1;;;;;7050:7:0;;;7064:5;;7050:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7032:52;;;7103:7;7095:58;;;;-1:-1:-1;;;7095:58:0;;21799:2:1;7095:58:0;;;21781:21:1;21838:2;21818:18;;;21811:30;21877:34;21857:18;;;21850:62;-1:-1:-1;;;21928:18:1;;;21921:36;21974:19;;7095:58:0;21597:402:1;7095:58:0;7021:140;6960:201;;:::o;9506:::-;9630:68;;;-1:-1:-1;;;;;22262:15:1;;;9630:68:0;;;22244:34:1;22314:15;;22294:18;;;22287:43;22346:18;;;;22339:34;;;9630:68:0;;;;;;;;;;22179:18:1;;;;9630:68:0;;;;;;;;-1:-1:-1;;;;;9630:68:0;-1:-1:-1;;;9630:68:0;;;9604:95;;9623:5;;9604:18;:95::i;3335:521::-;3428:14;3474:1;3463:8;:12;3455:70;;;;-1:-1:-1;;;3455:70:0;;22586:2:1;3455:70:0;;;22568:21:1;22625:2;22605:18;;;22598:30;-1:-1:-1;;;;;;;;;;;22644:18:1;;;22637:62;-1:-1:-1;;;22715:18:1;;;22708:43;22768:19;;3455:70:0;22384:409:1;3455:70:0;3556:1;3544:9;:13;:31;;;;;3574:1;3561:10;:14;3544:31;3536:86;;;;-1:-1:-1;;;3536:86:0;;;;;;;:::i;:::-;3633:20;3656:17;:8;3669:3;3656:12;:17::i;:::-;3633:40;-1:-1:-1;3684:14:0;3701:31;3633:40;3721:10;3701:19;:31::i;:::-;3684:48;-1:-1:-1;3743:16:0;3762:40;3786:15;3762:19;:9;3776:4;3762:13;:19::i;:::-;:23;;:40::i;:::-;3743:59;-1:-1:-1;3825:23:0;3743:59;3825:9;:23;:::i;:::-;3813:35;3335:521;-1:-1:-1;;;;;;;3335:521:0:o;5129:534::-;5230:21;5287:1;5272:4;:11;:16;;5264:61;;;;-1:-1:-1;;;5264:61:0;;23765:2:1;5264:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;5264:61:0;23563:356:1;5264:61:0;5357:4;:11;5346:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5346:23:0;;5336:33;;5410:9;5380:7;5405:1;5388:7;:14;:18;;;;:::i;:::-;5380:27;;;;;;;;:::i;:::-;;;;;;:39;;;;;5435:6;5458:1;5444:4;:11;:15;;;;:::i;:::-;5435:24;;5430:226;5461:5;;5430:226;;5489:14;;5524:42;5536:7;5545:4;5550:5;5554:1;5550;:5;:::i;:::-;5545:11;;;;;;;;:::i;:::-;;;;;;;5558:4;5563:1;5558:7;;;;;;;;:::i;:::-;;;;;;;5524:11;:42::i;:::-;5488:78;;;;5598:46;5610:7;5618:1;5610:10;;;;;;;;:::i;:::-;;;;;;;5622:9;5633:10;5598:11;:46::i;:::-;5581:7;5589:5;5593:1;5589;:5;:::i;:::-;5581:14;;;;;;;;:::i;:::-;;;;;;:63;;;;;5473:183;;5468:3;;;;;:::i;:::-;;;;5430:226;;;;5129:534;;;;;:::o;14081:231::-;14192:40;;-1:-1:-1;;;14192:40:0;;-1:-1:-1;;;;;16884:32:1;;;14192:40:0;;;16866:51:1;16933:18;;;16926:34;;;14192:26:0;;;;;16839:18:1;;14192:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14275:2;-1:-1:-1;;;;;14248:56:0;14269:4;-1:-1:-1;;;;;14248:56:0;14262:5;-1:-1:-1;;;;;14248:56:0;;14279:6;14287:5;12942:9;;12870:89;14287:5;14248:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14248:56:0;20994:319:1;4535:513:0;4636:21;4693:1;4678:4;:11;:16;;4670:61;;;;-1:-1:-1;;;4670:61:0;;23765:2:1;4670:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;4670:61:0;23563:356:1;4670:61:0;4763:4;:11;4752:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4752:23:0;;4742:33;;4799:8;4786:7;4794:1;4786:10;;;;;;;;:::i;:::-;;;;;;:21;;;;;4823:6;4818:223;4849:1;4835:4;:11;:15;;;;:::i;:::-;4831:1;:19;4818:223;;;4873:14;4889:15;4908:42;4920:7;4929:4;4934:1;4929:7;;;;;;;;:::i;:::-;;;;;;;4938:4;4943:1;4947;4943:5;;;;:::i;:::-;4938:11;;;;;;;;:::i;4908:42::-;4872:78;;;;4982:47;4995:7;5003:1;4995:10;;;;;;;;:::i;:::-;;;;;;;5007:9;5018:10;4982:12;:47::i;:::-;4965:7;4973:5;:1;4977;4973:5;:::i;:::-;4965:14;;;;;;;;:::i;:::-;;;;;;:64;;;;;4857:184;;4852:3;;;;;:::i;:::-;;;;4818:223;;1834:490;1923:12;1949:14;1965;1983:26;1994:6;2002;1983:10;:26::i;:::-;2158:32;;-1:-1:-1;;24292:2:1;24288:15;;;24284:24;;2158:32:0;;;24272:37:1;24343:15;;;24339:24;24325:12;;;24318:46;1948:61:0;;-1:-1:-1;1948:61:0;-1:-1:-1;2122:7:0;;24380:12:1;;2158:32:0;;;;;;;;;;;;2148:43;;;;;;2061:251;;;;;;;;-1:-1:-1;;;;;;24762:26:1;;24825:2;24821:15;;;;-1:-1:-1;;24817:53:1;24813:1;24804:11;;24797:74;24896:2;24887:12;;24880:28;24938:66;24933:2;24924:12;;24917:88;25030:2;25021:12;;24403:636;2061:251:0;;;;-1:-1:-1;;2061:251:0;;;;;;;;;2051:262;;2061:251;2051:262;;;;;1834:490;-1:-1:-1;;;;;;1834:490:0:o;19972:743::-;20079:6;20074:634;20105:1;20091:4;:11;:15;;;;:::i;:::-;20087:1;:19;20074:634;;;20129:13;20144:14;20163:4;20168:1;20163:7;;;;;;;;:::i;:::-;;;;;;;20172:4;20177:1;20181;20177:5;;;;:::i;:::-;20172:11;;;;;;;;:::i;:::-;;;;;;;20128:56;;;;20200:14;20219:44;20249:5;20256:6;20219:29;:44::i;:::-;-1:-1:-1;20199:64:0;-1:-1:-1;20278:14:0;20295:7;20303:5;:1;20307;20303:5;:::i;:::-;20295:14;;;;;;;;:::i;:::-;;;;;;;20278:31;;20325:15;20342;20370:6;-1:-1:-1;;;;;20361:15:0;:5;-1:-1:-1;;;;;20361:15:0;;:61;;20403:9;20419:1;20361:61;;;20385:1;20389:9;20361:61;20324:98;;;;20437:10;20468:1;20454:4;:11;:15;;;;:::i;:::-;20450:1;:19;:84;;20531:3;20450:84;;;20472:56;20499:7;20508:6;20516:4;20521:5;:1;20525;20521:5;:::i;:::-;20516:11;;;;;;;;:::i;:::-;;;;;;;20472:26;:56::i;:::-;20437:97;;20566:50;20593:7;20602:5;20609:6;20566:26;:50::i;:::-;-1:-1:-1;;;;;20549:73:0;;20641:10;20653;20665:2;20679:1;20669:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20669:12:0;;20549:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20113:595;;;;;;;20108:3;;;;;:::i;:::-;;;;20074:634;;3977:476;4070:13;4116:1;4104:9;:13;4096:72;;;;-1:-1:-1;;;4096:72:0;;25710:2:1;4096:72:0;;;25692:21:1;25749:2;25729:18;;;25722:30;-1:-1:-1;;;;;;;;;;;25768:18:1;;;25761:62;-1:-1:-1;;;25839:18:1;;;25832:44;25893:19;;4096:72:0;25508:410:1;4096:72:0;4199:1;4187:9;:13;:31;;;;;4217:1;4204:10;:14;4187:31;4179:86;;;;-1:-1:-1;;;4179:86:0;;;;;;;:::i;:::-;4276:14;4293:34;4322:4;4293:24;:9;4307;4293:13;:24::i;:::-;:28;;:34::i;:::-;4276:51;-1:-1:-1;4338:16:0;4357:34;4387:3;4357:25;:10;4372:9;4357:14;:25::i;:34::-;4338:53;-1:-1:-1;4413:32:0;4443:1;4414:23;4338:53;4414:9;:23;:::i;4413:32::-;4402:43;3977:476;-1:-1:-1;;;;;;3977:476:0:o;2888:325::-;2970:12;3013:1;3003:7;:11;2995:63;;;;-1:-1:-1;;;2995:63:0;;26125:2:1;2995:63:0;;;26107:21:1;26164:2;26144:18;;;26137:30;-1:-1:-1;;;;;;;;;;;26183:18:1;;;26176:62;-1:-1:-1;;;26254:18:1;;;26247:37;26301:19;;2995:63:0;25923:403:1;2995:63:0;3088:1;3077:8;:12;:28;;;;;3104:1;3093:8;:12;3077:28;3069:83;;;;-1:-1:-1;;;3069:83:0;;;;;;;:::i;:::-;3197:8;3173:21;:7;3185:8;3173:11;:21::i;:::-;:32;;;;:::i;10065:598::-;10153:27;10161:5;-1:-1:-1;;;;;10153:25:0;;:27::i;:::-;10145:71;;;;-1:-1:-1;;;10145:71:0;;26533:2:1;10145:71:0;;;26515:21:1;26572:2;26552:18;;;26545:30;26611:33;26591:18;;;26584:61;26662:18;;10145:71:0;26331:355:1;10145:71:0;10290:12;10304:23;10339:5;-1:-1:-1;;;;;10331:19:0;10351:4;10331:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10289:67;;;;10375:7;10367:52;;;;-1:-1:-1;;;10367:52:0;;26893:2:1;10367:52:0;;;26875:21:1;;;26912:18;;;26905:30;26971:34;26951:18;;;26944:62;27023:18;;10367:52:0;26691:356:1;10367:52:0;10436:17;;:21;10432:224;;10578:10;10567:30;;;;;;;;;;;;:::i;:::-;10559:85;;;;-1:-1:-1;;;10559:85:0;;27254:2:1;10559:85:0;;;27236:21:1;27293:2;27273:18;;;27266:30;27332:34;27312:18;;;27305:62;-1:-1:-1;;;27383:18:1;;;27376:40;27433:19;;10559:85:0;27052:406:1;1028:178:0;1080:6;1132;;;:30;;-1:-1:-1;;1147:5:0;;;1161:1;1156;1147:5;1156:1;1142:15;;;;:::i;:::-;;:20;1132:30;1124:63;;;;-1:-1:-1;;;1124:63:0;;27665:2:1;1124:63:0;;;27647:21:1;27704:2;27684:18;;;27677:30;-1:-1:-1;;;27723:18:1;;;27716:50;27783:18;;1124:63:0;27463:344:1;683:164:0;792:5;;;787:16;;;;779:49;;;;-1:-1:-1;;;779:49:0;;28014:2:1;779:49:0;;;27996:21:1;28053:2;28033:18;;;28026:30;-1:-1:-1;;;28072:18:1;;;28065:50;28132:18;;779:49:0;27812:344:1;2382:393:0;2475:13;2490;2517:14;2536:26;2547:6;2555;2536:10;:26::i;:::-;2516:46;;;2574:13;2589;2624:32;2632:7;2641:6;2649;2624:7;:32::i;:::-;-1:-1:-1;;;;;2607:62:0;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2573:98;-1:-1:-1;;;;;2573:98:0;;;-1:-1:-1;;;;;2573:98:0;;;2715:6;-1:-1:-1;;;;;2705:16:0;:6;-1:-1:-1;;;;;2705:16:0;;:62;;2748:8;2758;2705:62;;;2725:8;2735;2705:62;2682:85;;;;-1:-1:-1;2382:393:0;-1:-1:-1;;;;;;;2382:393:0:o;1389:353::-;1464:14;1480;1525:6;-1:-1:-1;;;;;1515:16:0;:6;-1:-1:-1;;;;;1515:16:0;;;1507:68;;;;-1:-1:-1;;;1507:68:0;;29011:2:1;1507:68:0;;;28993:21:1;29050:2;29030:18;;;29023:30;29089:34;29069:18;;;29062:62;-1:-1:-1;;;29140:18:1;;;29133:37;29187:19;;1507:68:0;28809:403:1;1507:68:0;1614:6;-1:-1:-1;;;;;1605:15:0;:6;-1:-1:-1;;;;;1605:15:0;;:53;;1643:6;1651;1605:53;;;1624:6;1632;1605:53;1586:72;;-1:-1:-1;1586:72:0;-1:-1:-1;;;;;;1677:20:0;;1669:65;;;;-1:-1:-1;;;1669:65:0;;29419:2:1;1669:65:0;;;29401:21:1;;;29438:18;;;29431:30;29497:34;29477:18;;;29470:62;29549:18;;1669:65:0;29217:356:1;1669:65:0;1389:353;;;;;:::o;855:165::-;964:5;;;959:16;;;;951:50;;;;-1:-1:-1;;;951:50:0;;29780:2:1;951:50:0;;;29762:21:1;29819:2;29799:18;;;29792:30;-1:-1:-1;;;29838:18:1;;;29831:51;29899:18;;951:50:0;29578:345:1;8885:374:0;8945:4;9168:20;;9011:66;9208:15;;;;;:42;;-1:-1:-1;9227:23:0;;;9200:51;-1:-1:-1;;8885:374:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:594;377:6;385;393;401;409;462:3;450:9;441:7;437:23;433:33;430:53;;;479:1;476;469:12;430:53;515:9;502:23;492:33;;575:2;564:9;560:18;547:32;588:31;613:5;588:31;:::i;:::-;638:5;-1:-1:-1;695:2:1;680:18;;667:32;708:33;667:32;708:33;:::i;:::-;282:594;;;;-1:-1:-1;760:7:1;;814:2;799:18;;786:32;;-1:-1:-1;865:3:1;850:19;837:33;;282:594;-1:-1:-1;;282:594:1:o;881:127::-;942:10;937:3;933:20;930:1;923:31;973:4;970:1;963:15;997:4;994:1;987:15;1013:275;1084:2;1078:9;1149:2;1130:13;;-1:-1:-1;;1126:27:1;1114:40;;1184:18;1169:34;;1205:22;;;1166:62;1163:88;;;1231:18;;:::i;:::-;1267:2;1260:22;1013:275;;-1:-1:-1;1013:275:1:o;1293:531::-;1336:5;1389:3;1382:4;1374:6;1370:17;1366:27;1356:55;;1407:1;1404;1397:12;1356:55;1443:6;1430:20;1469:18;1465:2;1462:26;1459:52;;;1491:18;;:::i;:::-;1535:55;1578:2;1559:13;;-1:-1:-1;;1555:27:1;1584:4;1551:38;1535:55;:::i;:::-;1615:2;1606:7;1599:19;1661:3;1654:4;1649:2;1641:6;1637:15;1633:26;1630:35;1627:55;;;1678:1;1675;1668:12;1627:55;1743:2;1736:4;1728:6;1724:17;1717:4;1708:7;1704:18;1691:55;1791:1;1766:16;;;1784:4;1762:27;1755:38;;;;1770:7;1293:531;-1:-1:-1;;;1293:531:1:o;1829:594::-;1925:6;1933;1941;1949;2002:3;1990:9;1981:7;1977:23;1973:33;1970:53;;;2019:1;2016;2009:12;1970:53;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;:::-;2127:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2210:18;2199:30;;2196:50;;;2242:1;2239;2232:12;2196:50;2265;2307:7;2298:6;2287:9;2283:22;2265:50;:::i;:::-;1829:594;;2255:60;;-1:-1:-1;;;;2362:2:1;2347:18;;2334:32;;2413:2;2398:18;2385:32;;1829:594;-1:-1:-1;1829:594:1:o;2428:316::-;2505:6;2513;2521;2574:2;2562:9;2553:7;2549:23;2545:32;2542:52;;;2590:1;2587;2580:12;2542:52;-1:-1:-1;;2613:23:1;;;2683:2;2668:18;;2655:32;;-1:-1:-1;2734:2:1;2719:18;;;2706:32;;2428:316;-1:-1:-1;2428:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:241;3110:6;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:28;3259:5;3237:28;:::i;:::-;3284:5;3054:241;-1:-1:-1;;;3054:241:1:o;3300:367::-;3363:8;3373:6;3427:3;3420:4;3412:6;3408:17;3404:27;3394:55;;3445:1;3442;3435:12;3394:55;-1:-1:-1;3468:20:1;;3511:18;3500:30;;3497:50;;;3543:1;3540;3533:12;3497:50;3580:4;3572:6;3568:17;3556:29;;3640:3;3633:4;3623:6;3620:1;3616:14;3608:6;3604:27;3600:38;3597:47;3594:67;;;3657:1;3654;3647:12;3672:847;3803:6;3811;3819;3827;3835;3843;3851;3904:3;3892:9;3883:7;3879:23;3875:33;3872:53;;;3921:1;3918;3911:12;3872:53;3957:9;3944:23;3934:33;;4014:2;4003:9;3999:18;3986:32;3976:42;;4069:2;4058:9;4054:18;4041:32;4096:18;4088:6;4085:30;4082:50;;;4128:1;4125;4118:12;4082:50;4167:70;4229:7;4220:6;4209:9;4205:22;4167:70;:::i;:::-;4256:8;;-1:-1:-1;4141:96:1;-1:-1:-1;;4341:2:1;4326:18;;4313:32;4354:31;4313:32;4354:31;:::i;:::-;3672:847;;;;-1:-1:-1;3672:847:1;;;;4404:5;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:1;4493:19;;;4480:33;;3672:847;-1:-1:-1;;3672:847:1:o;4524:1089::-;4617:6;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4730:9;4717:23;4707:33;;4759:2;4812;4801:9;4797:18;4784:32;4835:18;4876:2;4868:6;4865:14;4862:34;;;4892:1;4889;4882:12;4862:34;4930:6;4919:9;4915:22;4905:32;;4975:7;4968:4;4964:2;4960:13;4956:27;4946:55;;4997:1;4994;4987:12;4946:55;5033:2;5020:16;5055:2;5051;5048:10;5045:36;;;5061:18;;:::i;:::-;5107:2;5104:1;5100:10;5090:20;;5130:28;5154:2;5150;5146:11;5130:28;:::i;:::-;5192:15;;;5262:11;;;5258:20;;;5223:12;;;;5290:19;;;5287:39;;;5322:1;5319;5312:12;5287:39;5346:11;;;;5366:217;5382:6;5377:3;5374:15;5366:217;;;5462:3;5449:17;5436:30;;5479:31;5504:5;5479:31;:::i;:::-;5523:18;;;5399:12;;;;5561;;;;5366:217;;;5602:5;5592:15;;;;;;;;4524:1089;;;;;:::o;5618:632::-;5789:2;5841:21;;;5911:13;;5814:18;;;5933:22;;;5760:4;;5789:2;6012:15;;;;5986:2;5971:18;;;5760:4;6055:169;6069:6;6066:1;6063:13;6055:169;;;6130:13;;6118:26;;6199:15;;;;6164:12;;;;6091:1;6084:9;6055:169;;;-1:-1:-1;6241:3:1;;5618:632;-1:-1:-1;;;;;;5618:632:1:o;6255:525::-;6341:6;6349;6357;6365;6418:3;6406:9;6397:7;6393:23;6389:33;6386:53;;;6435:1;6432;6425:12;6386:53;6474:9;6461:23;6493:31;6518:5;6493:31;:::i;:::-;6543:5;-1:-1:-1;6600:2:1;6585:18;;6572:32;6613:33;6572:32;6613:33;:::i;:::-;6255:525;;6665:7;;-1:-1:-1;;;;6719:2:1;6704:18;;6691:32;;6770:2;6755:18;6742:32;;6255:525::o;6785:1720::-;7015:6;7023;7031;7039;7047;7055;7063;7071;7079;7087;7140:3;7128:9;7119:7;7115:23;7111:33;7108:53;;;7157:1;7154;7147:12;7108:53;7197:9;7184:23;7226:18;7267:2;7259:6;7256:14;7253:34;;;7283:1;7280;7273:12;7253:34;7322:70;7384:7;7375:6;7364:9;7360:22;7322:70;:::i;:::-;7411:8;;-1:-1:-1;7296:96:1;-1:-1:-1;7499:2:1;7484:18;;7471:32;;-1:-1:-1;7515:16:1;;;7512:36;;;7544:1;7541;7534:12;7512:36;7583:72;7647:7;7636:8;7625:9;7621:24;7583:72;:::i;:::-;7674:8;;-1:-1:-1;7557:98:1;-1:-1:-1;7762:2:1;7747:18;;7734:32;;-1:-1:-1;7778:16:1;;;7775:36;;;7807:1;7804;7797:12;7775:36;7846:72;7910:7;7899:8;7888:9;7884:24;7846:72;:::i;:::-;7937:8;;-1:-1:-1;7820:98:1;-1:-1:-1;8025:2:1;8010:18;;7997:32;;-1:-1:-1;8041:16:1;;;8038:36;;;8070:1;8067;8060:12;8038:36;8109:72;8173:7;8162:8;8151:9;8147:24;8109:72;:::i;:::-;8200:8;;-1:-1:-1;8083:98:1;-1:-1:-1;8288:3:1;8273:19;;8260:33;;-1:-1:-1;8305:16:1;;;8302:36;;;8334:1;8331;8324:12;8302:36;;8373:72;8437:7;8426:8;8415:9;8411:24;8373:72;:::i;:::-;8347:98;;8464:8;8454:18;;;8491:8;8481:18;;;6785:1720;;;;;;;;;;;;;:::o;8510:916::-;8650:6;8658;8666;8674;8682;8690;8698;8706;8759:3;8747:9;8738:7;8734:23;8730:33;8727:53;;;8776:1;8773;8766:12;8727:53;8812:9;8799:23;8789:33;;8869:2;8858:9;8854:18;8841:32;8831:42;;8920:2;8909:9;8905:18;8892:32;8882:42;;8975:2;8964:9;8960:18;8947:32;9002:18;8994:6;8991:30;8988:50;;;9034:1;9031;9024:12;8988:50;9073:70;9135:7;9126:6;9115:9;9111:22;9073:70;:::i;:::-;9162:8;;-1:-1:-1;9047:96:1;-1:-1:-1;;9247:3:1;9232:19;;9219:33;9261:31;9219:33;9261:31;:::i;:::-;8510:916;;;;-1:-1:-1;8510:916:1;;;;;;9311:5;;-1:-1:-1;;;9363:3:1;9348:19;;9335:33;;9415:3;9400:19;9387:33;;8510:916::o;9623:388::-;9691:6;9699;9752:2;9740:9;9731:7;9727:23;9723:32;9720:52;;;9768:1;9765;9758:12;9720:52;9807:9;9794:23;9826:31;9851:5;9826:31;:::i;:::-;9876:5;-1:-1:-1;9933:2:1;9918:18;;9905:32;9946:33;9905:32;9946:33;:::i;:::-;9998:7;9988:17;;;9623:388;;;;;:::o;10016:525::-;10103:6;10111;10119;10172:2;10160:9;10151:7;10147:23;10143:32;10140:52;;;10188:1;10185;10178:12;10140:52;10227:9;10214:23;10246:31;10271:5;10246:31;:::i;:::-;10296:5;-1:-1:-1;10352:2:1;10337:18;;10324:32;10379:18;10368:30;;10365:50;;;10411:1;10408;10401:12;10365:50;10434;10476:7;10467:6;10456:9;10452:22;10434:50;:::i;:::-;10424:60;;;10531:2;10520:9;10516:18;10503:32;10493:42;;10016:525;;;;;:::o;10546:247::-;10605:6;10658:2;10646:9;10637:7;10633:23;10629:32;10626:52;;;10674:1;10671;10664:12;10626:52;10713:9;10700:23;10732:31;10757:5;10732:31;:::i;10798:456::-;10875:6;10883;10891;10944:2;10932:9;10923:7;10919:23;10915:32;10912:52;;;10960:1;10957;10950:12;10912:52;10999:9;10986:23;11018:31;11043:5;11018:31;:::i;:::-;11068:5;-1:-1:-1;11120:2:1;11105:18;;11092:32;;-1:-1:-1;11176:2:1;11161:18;;11148:32;11189:33;11148:32;11189:33;:::i;:::-;11241:7;11231:17;;;10798:456;;;;;:::o;11259:315::-;11327:6;11335;11388:2;11376:9;11367:7;11363:23;11359:32;11356:52;;;11404:1;11401;11394:12;11356:52;11443:9;11430:23;11462:31;11487:5;11462:31;:::i;:::-;11512:5;11564:2;11549:18;;;;11536:32;;-1:-1:-1;;;11259:315:1:o;11787:456::-;11864:6;11872;11880;11933:2;11921:9;11912:7;11908:23;11904:32;11901:52;;;11949:1;11946;11939:12;11901:52;11988:9;11975:23;12007:31;12032:5;12007:31;:::i;:::-;12057:5;-1:-1:-1;12114:2:1;12099:18;;12086:32;12127:33;12086:32;12127:33;:::i;:::-;11787:456;;12179:7;;-1:-1:-1;;;12233:2:1;12218:18;;;;12205:32;;11787:456::o;12248:1404::-;12442:6;12450;12458;12466;12474;12482;12490;12498;12551:3;12539:9;12530:7;12526:23;12522:33;12519:53;;;12568:1;12565;12558:12;12519:53;12608:9;12595:23;12637:18;12678:2;12670:6;12667:14;12664:34;;;12694:1;12691;12684:12;12664:34;12733:70;12795:7;12786:6;12775:9;12771:22;12733:70;:::i;:::-;12822:8;;-1:-1:-1;12707:96:1;-1:-1:-1;12910:2:1;12895:18;;12882:32;;-1:-1:-1;12926:16:1;;;12923:36;;;12955:1;12952;12945:12;12923:36;12994:72;13058:7;13047:8;13036:9;13032:24;12994:72;:::i;:::-;13085:8;;-1:-1:-1;12968:98:1;-1:-1:-1;13173:2:1;13158:18;;13145:32;;-1:-1:-1;13189:16:1;;;13186:36;;;13218:1;13215;13208:12;13186:36;13257:72;13321:7;13310:8;13299:9;13295:24;13257:72;:::i;:::-;13348:8;;-1:-1:-1;13231:98:1;-1:-1:-1;13436:2:1;13421:18;;13408:32;;-1:-1:-1;13452:16:1;;;13449:36;;;13481:1;13478;13471:12;13449:36;;13520:72;13584:7;13573:8;13562:9;13558:24;13520:72;:::i;:::-;12248:1404;;;;-1:-1:-1;12248:1404:1;;-1:-1:-1;12248:1404:1;;;;;;13611:8;-1:-1:-1;;;12248:1404:1:o;13657:350::-;13859:2;13841:21;;;13898:2;13878:18;;;13871:30;13937:28;13932:2;13917:18;;13910:56;13998:2;13983:18;;13657:350::o;14012:251::-;14082:6;14135:2;14123:9;14114:7;14110:23;14106:32;14103:52;;;14151:1;14148;14141:12;14103:52;14183:9;14177:16;14202:31;14227:5;14202:31;:::i;14268:184::-;14338:6;14391:2;14379:9;14370:7;14366:23;14362:32;14359:52;;;14407:1;14404;14397:12;14359:52;-1:-1:-1;14430:16:1;;14268:184;-1:-1:-1;14268:184:1:o;14457:375::-;-1:-1:-1;;;;;14715:15:1;;;14697:34;;14762:2;14747:18;;14740:34;;;;14810:15;;;14805:2;14790:18;;14783:43;14647:2;14632:18;;14457:375::o;14837:258::-;14909:1;14919:113;14933:6;14930:1;14927:13;14919:113;;;15009:11;;;15003:18;14990:11;;;14983:39;14955:2;14948:10;14919:113;;;15050:6;15047:1;15044:13;15041:48;;;-1:-1:-1;;15085:1:1;15067:16;;15060:27;14837:258::o;15100:::-;15142:3;15180:5;15174:12;15207:6;15202:3;15195:19;15223:63;15279:6;15272:4;15267:3;15263:14;15256:4;15249:5;15245:16;15223:63;:::i;:::-;15340:2;15319:15;-1:-1:-1;;15315:29:1;15306:39;;;;15347:4;15302:50;;15100:258;-1:-1:-1;;15100:258:1:o;15363:435::-;15596:3;15585:9;15578:22;15559:4;15617:46;15658:3;15647:9;15643:19;15635:6;15617:46;:::i;:::-;15694:2;15679:18;;15672:34;;;;-1:-1:-1;15737:2:1;15722:18;;15715:34;;;;15780:2;15765:18;;;15758:34;15609:54;15363:435;-1:-1:-1;15363:435:1:o;15803:399::-;16005:2;15987:21;;;16044:2;16024:18;;;16017:30;16083:34;16078:2;16063:18;;16056:62;-1:-1:-1;;;16149:2:1;16134:18;;16127:33;16192:3;16177:19;;15803:399::o;16207:348::-;16409:2;16391:21;;;16448:2;16428:18;;;16421:30;16487:26;16482:2;16467:18;;16460:54;16546:2;16531:18;;16207:348::o;16560:127::-;16621:10;16616:3;16612:20;16609:1;16602:31;16652:4;16649:1;16642:15;16676:4;16673:1;16666:15;16971:245;17038:6;17091:2;17079:9;17070:7;17066:23;17062:32;17059:52;;;17107:1;17104;17097:12;17059:52;17139:9;17133:16;17158:28;17180:5;17158:28;:::i;17221:1001::-;17533:3;17546:22;;;17518:19;;17603:22;;;17485:4;17683:6;17656:3;17641:19;;17485:4;17717:304;17731:6;17728:1;17725:13;17717:304;;;17806:6;17793:20;17826:31;17851:5;17826:31;:::i;:::-;-1:-1:-1;;;;;17882:31:1;17870:44;;17937:4;17996:15;;;;17961:12;;;;17910:1;17746:9;17717:304;;;-1:-1:-1;18072:4:1;18057:20;;18050:36;;;;-1:-1:-1;;18117:2:1;18102:18;;18095:34;;;;18160:2;18145:18;;18138:34;;;;18203:3;18188:19;;;18181:35;18038:3;17221:1001;-1:-1:-1;;17221:1001:1:o;18227:127::-;18288:10;18283:3;18279:20;18276:1;18269:31;18319:4;18316:1;18309:15;18343:4;18340:1;18333:15;18359:135;18398:3;-1:-1:-1;;18419:17:1;;18416:43;;;18439:18;;:::i;:::-;-1:-1:-1;18486:1:1;18475:13;;18359:135::o;18499:125::-;18539:4;18567:1;18564;18561:8;18558:34;;;18572:18;;:::i;:::-;-1:-1:-1;18609:9:1;;18499:125::o;20171:406::-;20373:2;20355:21;;;20412:2;20392:18;;;20385:30;20451:34;20446:2;20431:18;;20424:62;-1:-1:-1;;;20517:2:1;20502:18;;20495:40;20567:3;20552:19;;20171:406::o;20582:128::-;20622:3;20653:1;20649:6;20646:1;20643:13;20640:39;;;20659:18;;:::i;:::-;-1:-1:-1;20695:9:1;;20582:128::o;21318:274::-;21447:3;21485:6;21479:13;21501:53;21547:6;21542:3;21535:4;21527:6;21523:17;21501:53;:::i;:::-;21570:16;;;;;21318:274;-1:-1:-1;;21318:274:1:o;22798:406::-;23000:2;22982:21;;;23039:2;23019:18;;;23012:30;-1:-1:-1;;;;;;;;;;;23073:2:1;23058:18;;23051:62;-1:-1:-1;;;23144:2:1;23129:18;;23122:40;23194:3;23179:19;;22798:406::o;23209:127::-;23270:10;23265:3;23261:20;23258:1;23251:31;23301:4;23298:1;23291:15;23325:4;23322:1;23315:15;23341:217;23381:1;23407;23397:132;;23451:10;23446:3;23442:20;23439:1;23432:31;23486:4;23483:1;23476:15;23514:4;23511:1;23504:15;23397:132;-1:-1:-1;23543:9:1;;23341:217::o;23924:136::-;23963:3;23991:5;23981:39;;24000:18;;:::i;:::-;-1:-1:-1;;;24036:18:1;;23924:136::o;25044:459::-;25275:6;25264:9;25257:25;25318:6;25313:2;25302:9;25298:18;25291:34;25390:1;25386;25381:3;25377:11;25373:19;25365:6;25361:32;25356:2;25345:9;25341:18;25334:60;25430:3;25425:2;25414:9;25410:18;25403:31;25238:4;25451:46;25492:3;25481:9;25477:19;25469:6;25451:46;:::i;28161:188::-;28240:13;;-1:-1:-1;;;;;28282:42:1;;28272:53;;28262:81;;28339:1;28336;28329:12;28354:450;28441:6;28449;28457;28510:2;28498:9;28489:7;28485:23;28481:32;28478:52;;;28526:1;28523;28516:12;28478:52;28549:40;28579:9;28549:40;:::i;:::-;28539:50;;28608:49;28653:2;28642:9;28638:18;28608:49;:::i;:::-;28598:59;;28700:2;28689:9;28685:18;28679:25;28744:10;28737:5;28733:22;28726:5;28723:33;28713:61;;28770:1;28767;28760:12

Swarm Source

ipfs://c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db33
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.