Contract 0x833f307ac507d47309fd8cdd1f835bef8d702a93 10

Contract Overview

Multichain: Router V6
Balance:
0 AVAX

AVAX Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1b31357220d5643b768940d02eb8e1e58004bffddf550795b0db570409c75157Any Swap In Auto307795852023-06-01 17:24:521 hr 55 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003210025 25
0x2491ff865a1592a54c57d0c3b9dfa87f1fa254632751e0ac173ebadd44e5a9b9Any Swap Out Nat...307760452023-06-01 15:23:513 hrs 56 mins ago0x42b02dd5011aa17f1f4ae8263e9963adff5a3a0c IN  Multichain: Router V67.3 AVAX0.001868409 26.5
0xdc3cd7d1cba3d56320b7ef0d723ef4bae463f33a507891697a119e667dd148f1Any Swap In Auto307734162023-06-01 13:52:455 hrs 28 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209425 25
0x40f20f0e31503c0b0576a5aedb6f8c28d7568bbc1749735dac6513723c5027deAny Swap In Auto307688582023-06-01 11:17:088 hrs 3 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003833525 25
0x55a93985075be29bf25caf724646673dabfda51539165672ca956030f3e901a3Any Swap In Auto307623182023-06-01 7:34:1011 hrs 46 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209125 25
0x7e72c3030c05f06d055d94f155c4c7a3d1fa7835afa6ec4938c80da9a65c756cAny Swap In Auto307612392023-06-01 6:57:0012 hrs 23 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209125 25
0x968d852437a73bd629c41356530d717a944c27a242d4ef99305c6f8a78215252Any Swap Out Und...307571852023-06-01 4:37:2314 hrs 43 mins ago0x7755f284ecbb16c4fd58b947b6eba613ffeed3bb IN  Multichain: Router V60 AVAX0.00180087386 37.632671479
0x7b777624fede8c9a5c9d4b95684864334427c029eb5526443e5dba62ba62f13cAny Swap Out Und...307566302023-06-01 4:17:3415 hrs 3 mins ago0x7755f284ecbb16c4fd58b947b6eba613ffeed3bb IN  Multichain: Router V60 AVAX0.00133991228
0x9854bd28feeb5f6cc0875e97a5e922427c893ecf274b13ee849e6ac40e74834aAny Swap In Auto307559362023-06-01 3:53:2915 hrs 27 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209425 25
0x22d0b34535ce0f52ec820bc3cd2612aaa00011ce634208927ab43bc26b2d205eAny Swap In Auto307558532023-06-01 3:50:3415 hrs 30 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209125 25
0x7e77e923e54d54d6413074dbed615d8a13718bac25cb190bd86c1da4423b97eaAny Swap In Auto307557082023-06-01 3:45:2915 hrs 35 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209125 25
0x00f71a8d7cf4c12263b14665f224f18c6c55dc0b541bf67ade8e477819bfbf64Any Swap In Auto307553482023-06-01 3:33:0215 hrs 47 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003208825 25
0xc1729d8a9e38c058b739d1010ad69d13300d0b97065b99367928beee372e78bfAny Swap In Auto307538582023-06-01 2:41:5516 hrs 38 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003208825 25
0x6a83c633ffb4486f0ddb8ed2ebea406170fd4d1367a245f4ad90424c8167b87bAny Swap In Auto307531302023-06-01 2:16:3917 hrs 4 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003208225 25
0xbe0e20ed74950bbf77cf42baf9090d67d5a5897199a34eff84b9ac7707a64401Any Swap In Auto307458002023-05-31 22:04:0421 hrs 16 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003833225 25
0x70a135a39ce64022e67dcf1ee26ab256be6c4e235048a396df4098336a46a59aAny Swap In Auto307436412023-05-31 20:51:1922 hrs 29 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003837020254 25.018878194
0x719884b839b04a96bda97ce182e1b1e6a01c4b5e7a25a57b9a34500002f4b376Any Swap In Auto307430612023-05-31 20:31:5222 hrs 48 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003209425 25
0xf211af6f063cf45c8952104a5dabc024a18c5a7db5aa276706c907ef7ad4b4d7Any Swap In Auto307409952023-05-31 19:22:2923 hrs 58 mins ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003833825 25
0x217e8654c4ffb0cfb819092782e41faac24da55c8fb4c1665d9db6987f23771dAny Swap In Auto307390812023-05-31 18:17:501 day 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003218522865 25.075556203
0x2b53d5faa48cf8024f36cc4e7670ad2d012f13ce95943b720b087401b71b761bAny Swap In Auto307382692023-05-31 17:50:261 day 1 hr ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003833525 25
0xd3017d56efa28d3526f38debe2a9b2ec08f2517c1f36fa31c2c5d37dec46fdb1Any Swap In Auto307364722023-05-31 16:50:081 day 2 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003210053089 25.007230083
0xe6c856b7108b6d80b7b092eb70ca1f0018a639847b9e4626f63be3b03b6007b1Any Swap In Auto307348022023-05-31 15:54:101 day 3 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003444489402 26.833555892
0xa298e28aa5a62948c7b0ee70d32b669714ec24868957b178d1f0ff97cd94717eAny Swap Out Nat...307318972023-05-31 14:16:141 day 5 hrs ago0x4e37162d9b57fb82e1e344298cbc2303f158706c IN  Multichain: Router V61.988983463850906 AVAX0.001868409 26.5
0x8224cd79bcb7c247e56894250b5892c5b7148fc1ad56a19980efa35c8fecd57eAny Swap In Auto307298542023-05-31 13:07:381 day 6 hrs ago0xf39fee2fdfe7db022591f4a82e3537fa0b55fb9c IN  Multichain: Router V60 AVAX0.003223112109 25.108963573
0x02beb26bb086fd97ad1f29be28fff91d3aef2c2c5866fbc0f9af69e055b20b33Any Swap Out Nat...307283982023-05-31 12:18:241 day 7 hrs ago0xbc868cbf075d369910e48107619438f5e6807fa7 IN  Multichain: Router V614.5 AVAX0.001896502787 26.898459534
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1b31357220d5643b768940d02eb8e1e58004bffddf550795b0db570409c75157307795852023-06-01 17:24:521 hr 55 mins ago Multichain: Router V60x8c92affcc61fadcf21711f2c1b86f8a66d108e2336.0271 AVAX
0x1b31357220d5643b768940d02eb8e1e58004bffddf550795b0db570409c75157307795852023-06-01 17:24:521 hr 55 mins ago Wrapped AVAX Multichain: Router V636.0271 AVAX
0x2491ff865a1592a54c57d0c3b9dfa87f1fa254632751e0ac173ebadd44e5a9b9307760452023-06-01 15:23:513 hrs 56 mins ago Multichain: Router V6 Wrapped AVAX7.3 AVAX
0xdc3cd7d1cba3d56320b7ef0d723ef4bae463f33a507891697a119e667dd148f1307734162023-06-01 13:52:455 hrs 28 mins ago Multichain: Router V60x71ae06a9113cd0d63455ed84bb9e98d729a5ae6828.091018359133801002 AVAX
0xdc3cd7d1cba3d56320b7ef0d723ef4bae463f33a507891697a119e667dd148f1307734162023-06-01 13:52:455 hrs 28 mins ago Wrapped AVAX Multichain: Router V628.091018359133801002 AVAX
0x40f20f0e31503c0b0576a5aedb6f8c28d7568bbc1749735dac6513723c5027de307688582023-06-01 11:17:088 hrs 3 mins ago Multichain: Router V60x1b4dffa580d972525dabe0338c7169881bd1d30b0.133456 AVAX
0x40f20f0e31503c0b0576a5aedb6f8c28d7568bbc1749735dac6513723c5027de307688582023-06-01 11:17:088 hrs 3 mins ago Wrapped AVAX Multichain: Router V60.133456 AVAX
0x55a93985075be29bf25caf724646673dabfda51539165672ca956030f3e901a3307623182023-06-01 7:34:1011 hrs 46 mins ago Multichain: Router V60x2ccbc2d212ba6d33e9e85acd6d2f795412d9e51e6.734126965492001679 AVAX
0x55a93985075be29bf25caf724646673dabfda51539165672ca956030f3e901a3307623182023-06-01 7:34:1011 hrs 46 mins ago Wrapped AVAX Multichain: Router V66.734126965492001679 AVAX
0x7e72c3030c05f06d055d94f155c4c7a3d1fa7835afa6ec4938c80da9a65c756c307612392023-06-01 6:57:0012 hrs 23 mins ago Multichain: Router V60xff3501f3529e86896986fb0379075060980f563b0.141746389912250571 AVAX
0x7e72c3030c05f06d055d94f155c4c7a3d1fa7835afa6ec4938c80da9a65c756c307612392023-06-01 6:57:0012 hrs 23 mins ago Wrapped AVAX Multichain: Router V60.141746389912250571 AVAX
0x9854bd28feeb5f6cc0875e97a5e922427c893ecf274b13ee849e6ac40e74834a307559362023-06-01 3:53:2915 hrs 27 mins ago Multichain: Router V60xc07a0b036a1f6516d92115198ccec32af8440c0f56.717037066914705927 AVAX
0x9854bd28feeb5f6cc0875e97a5e922427c893ecf274b13ee849e6ac40e74834a307559362023-06-01 3:53:2915 hrs 27 mins ago Wrapped AVAX Multichain: Router V656.717037066914705927 AVAX
0x22d0b34535ce0f52ec820bc3cd2612aaa00011ce634208927ab43bc26b2d205e307558532023-06-01 3:50:3415 hrs 30 mins ago Multichain: Router V60x7755f284ecbb16c4fd58b947b6eba613ffeed3bb18.5912 AVAX
0x22d0b34535ce0f52ec820bc3cd2612aaa00011ce634208927ab43bc26b2d205e307558532023-06-01 3:50:3415 hrs 30 mins ago Wrapped AVAX Multichain: Router V618.5912 AVAX
0x7e77e923e54d54d6413074dbed615d8a13718bac25cb190bd86c1da4423b97ea307557082023-06-01 3:45:2915 hrs 35 mins ago Multichain: Router V60x7755f284ecbb16c4fd58b947b6eba613ffeed3bb17.8514 AVAX
0x7e77e923e54d54d6413074dbed615d8a13718bac25cb190bd86c1da4423b97ea307557082023-06-01 3:45:2915 hrs 35 mins ago Wrapped AVAX Multichain: Router V617.8514 AVAX
0x00f71a8d7cf4c12263b14665f224f18c6c55dc0b541bf67ade8e477819bfbf64307553482023-06-01 3:33:0215 hrs 47 mins ago Multichain: Router V60x7755f284ecbb16c4fd58b947b6eba613ffeed3bb10.9145 AVAX
0x00f71a8d7cf4c12263b14665f224f18c6c55dc0b541bf67ade8e477819bfbf64307553482023-06-01 3:33:0215 hrs 47 mins ago Wrapped AVAX Multichain: Router V610.9145 AVAX
0xc1729d8a9e38c058b739d1010ad69d13300d0b97065b99367928beee372e78bf307538582023-06-01 2:41:5516 hrs 38 mins ago Multichain: Router V60x06f1c4a56357bf3971c79063f2b58e58c547bc0b303.93576 AVAX
0xc1729d8a9e38c058b739d1010ad69d13300d0b97065b99367928beee372e78bf307538582023-06-01 2:41:5516 hrs 38 mins ago Wrapped AVAX Multichain: Router V6303.93576 AVAX
0x6a83c633ffb4486f0ddb8ed2ebea406170fd4d1367a245f4ad90424c8167b87b307531302023-06-01 2:16:3917 hrs 4 mins ago Multichain: Router V60x61171668518c5c3be75cb61b96cb7c15e50eb23c1.11 AVAX
0x6a83c633ffb4486f0ddb8ed2ebea406170fd4d1367a245f4ad90424c8167b87b307531302023-06-01 2:16:3917 hrs 4 mins ago Wrapped AVAX Multichain: Router V61.11 AVAX
0xbe0e20ed74950bbf77cf42baf9090d67d5a5897199a34eff84b9ac7707a64401307458002023-05-31 22:04:0421 hrs 16 mins ago Multichain: Router V60x12eb2dd4948ae5050dacc47eb14f6a04c0269fcd0.08 AVAX
0xbe0e20ed74950bbf77cf42baf9090d67d5a5897199a34eff84b9ac7707a64401307458002023-05-31 22:04:0421 hrs 16 mins ago Wrapped AVAX Multichain: Router V60.08 AVAX
[ 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 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"}]

60c06040523480156200001157600080fd5b506040516200445738038062004457833981016040819052620000349162000081565b600180546001600160a01b0319166001600160a01b03928316179055426002559182166080521660a052620000cb565b80516001600160a01b03811681146200007c57600080fd5b919050565b6000806000606084860312156200009757600080fd5b620000a28462000064565b9250620000b26020850162000064565b9150620000c26040850162000064565b90509250925092565b60805160a0516142c562000192600039600081816102230152818161055901528181610845015281816109050152818161125a0152818161144301528181611519015281816115cb0152818161165f01528181611afd01528181611baf01528181611c4301528181611d8b01528181611ec3015281816121690152818161221b01526122af01526000818161060b01528181610c5901528181610e2001528181610f38015281816113060152818161243d01528181612fe4015261303401526142c56000f3fe6080604052600436106102135760003560e01c8063825bb13c11610118578063ad615dec116100a0578063d8b9f6101161006f578063d8b9f6101461066d578063d9e35bb21461068d578063dcfb77b1146106ad578063edbdf5e2146106cd578063f75c2664146106ed57600080fd5b8063ad615dec146105d9578063c45a0155146105f9578063c604b0b81461062d578063d06ca61f1461064d57600080fd5b806387cc6e2f116100e757806387cc6e2f146105275780638fd903f51461054757806399a2f2d7146105935780639f122d6c146105a6578063a5e56571146105c657600080fd5b8063825bb13c146104a7578063832e9492146104c757806385f8c259146104e757806387bafe5f1461050757600080fd5b8063353cb3a81161019b578063540dd52c1161016a578063540dd52c146104215780635b7b018c1461043457806365782f56146104545780636a45397214610474578063701bb8911461049457600080fd5b8063353cb3a8146103975780633f88de89146103c1578063456862aa146103e157806352a397d51461040157600080fd5b80630bb57203116101e25780630bb57203146102ea5780631f00ca741461030a578063241dc2df1461033757806325121b76146103575780632fc1e7281461037757600080fd5b80630175b1c414610257578063049b4e7e14610277578063054d50d414610297578063085c6d5e146102ca57600080fd5b3661025257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610250576102506136d7565b005b600080fd5b34801561026357600080fd5b50610250610272366004613702565b610702565b34801561028357600080fd5b5061025061029236600461380b565b6109f4565b3480156102a357600080fd5b506102b76102b236600461386b565b610abc565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102506102e53660046138a5565b610ad1565b3480156102f657600080fd5b5061025061030536600461390e565b610b1c565b34801561031657600080fd5b5061032a61032536600461398b565b610c52565b6040516102c19190613a49565b34801561034357600080fd5b50610250610352366004613a8d565b610c88565b34801561036357600080fd5b50610250610372366004613ad3565b610c9b565b34801561038357600080fd5b5061032a610392366004613bc4565b610d9e565b3480156103a357600080fd5b506000546103b19060ff1681565b60405190151581526020016102c1565b3480156103cd57600080fd5b506102506103dc366004613702565b611019565b3480156103ed57600080fd5b506103b16103fc366004613c49565b6110d7565b34801561040d57600080fd5b5061032a61041c366004613bc4565b6111d3565b61025061042f366004613c82565b611517565b34801561044057600080fd5b506103b161044f366004613cdb565b611729565b34801561046057600080fd5b5061025061046f36600461390e565b611860565b34801561048057600080fd5b5061025061048f36600461390e565b611975565b6102b76104a2366004613c49565b611af9565b3480156104b357600080fd5b506102506104c2366004613702565b611d3b565b3480156104d357600080fd5b506102b76104e2366004613cf8565b611d87565b3480156104f357600080fd5b506102b761050236600461386b565b611f39565b34801561051357600080fd5b50610250610522366004613c49565b611f46565b34801561053357600080fd5b50610250610542366004613d3a565b611fd6565b34801561055357600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b34801561059f57600080fd5b50466102b7565b3480156105b257600080fd5b506102506105c1366004613c49565b612101565b6102506105d4366004613d66565b612167565b3480156105e557600080fd5b506102b76105f436600461386b565b612383565b34801561060557600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561063957600080fd5b5061025061064836600461380b565b612390565b34801561065957600080fd5b5061032a61066836600461398b565b612436565b34801561067957600080fd5b5061025061068836600461390e565b612463565b34801561069957600080fd5b506102506106a8366004613cdb565b61256c565b3480156106b957600080fd5b506102506106c8366004613da7565b6125f6565b3480156106d957600080fd5b506102506106e8366004613a8d565b6126a7565b3480156106f957600080fd5b5061057b612743565b61070a612743565b6001600160a01b0316336001600160a01b0316146107435760405162461bcd60e51b815260040161073a90613e6b565b60405180910390fd5b6107508585858585612773565b60008490506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b99190613ea2565b90506001600160a01b0381161580159061083e57506040516370a0823160e01b81526001600160a01b0387811660048301528591908316906370a0823190602401602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190613ebf565b10155b156109eb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141561097857604051620e75bb60e21b81526001600160a01b038316906239d6ec906108ab90889088903090600401613ed8565b6020604051808303816000875af11580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613ebf565b50604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050610973858561284c565b6109eb565b604051620e75bb60e21b81526001600160a01b038316906239d6ec906109a690889088908290600401613ed8565b6020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190613ebf565b505b50505050505050565b610a6d338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613ea2565b6001600160a01b031692919061291d565b336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798585465b86604051610aae9493929190613f53565b60405180910390a350505050565b6000610ac9848484612977565b949350505050565b610ad9612743565b6001600160a01b0316336001600160a01b031614610b095760405162461bcd60e51b815260040161073a90613e6b565b6000805460ff1916911515919091179055565b60005460ff16610b3e5760405162461bcd60e51b815260040161073a90613f82565b8142811015610b5f5760405162461bcd60e51b815260040161073a90613fc5565b85856000818110610b7257610b72613ffc565b9050602002016020810190610b879190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190614012565b506001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c465b89604051610c409695949392919061402f565b60405180910390a35050505050505050565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612a45565b90505b92915050565b610c953385858585612bdb565b50505050565b610ca3612743565b6001600160a01b0316336001600160a01b031614610cd35760405162461bcd60e51b815260040161073a90613e6b565b60005b87811015610d9157610d7f8b8b83818110610cf357610cf3613ffc565b905060200201358a8a84818110610d0c57610d0c613ffc565b9050602002016020810190610d219190613cdb565b898985818110610d3357610d33613ffc565b9050602002016020810190610d489190613cdb565b888886818110610d5a57610d5a613ffc565b90506020020135878787818110610d7357610d73613ffc565b90506020020135612773565b80610d89816140af565b915050610cd6565b5050505050505050505050565b6060610da8612743565b6001600160a01b0316336001600160a01b031614610dd85760405162461bcd60e51b815260040161073a90613e6b565b60005460ff16610dfa5760405162461bcd60e51b815260040161073a90613f82565b8242811015610e1b5760405162461bcd60e51b815260040161073a90613fc5565b610e797f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b9150878260018451610e8b91906140ca565b81518110610e9b57610e9b613ffc565b60200260200101511015610f075760405162461bcd60e51b815260206004820152602d60248201527f5375736869737761705632526f757465723a20494e53554646494349454e545f60448201526c13d55514155517d05353d55395609a1b606482015260840161073a565b610fcd8a88886000818110610f1e57610f1e613ffc565b9050602002016020810190610f339190613cdb565b610fac7f00000000000000000000000000000000000000000000000000000000000000008b8b6000818110610f6a57610f6a613ffc565b9050602002016020810190610f7f9190613cdb565b8c8c6001818110610f9257610f92613ffc565b9050602002016020810190610fa79190613cdb565b612e28565b85600081518110610fbf57610fbf613ffc565b602002602001015187612773565b61100c828888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250612f01915050565b5098975050505050505050565b611021612743565b6001600160a01b0316336001600160a01b0316146110515760405162461bcd60e51b815260040161073a90613e6b565b61105e8585858585612773565b604051620e75bb60e21b81526001600160a01b038516906239d6ec9061108c90869086908290600401613ed8565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190613ebf565b505050505050565b60006110e1612743565b6001600160a01b0316336001600160a01b0316146111115760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6040516360e232a960e01b81526001600160a01b0383811660048301528416906360e232a9906024016020604051808303816000875af11580156111af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190614012565b60606111dd612743565b6001600160a01b0316336001600160a01b03161461120d5760405162461bcd60e51b815260040161073a90613e6b565b60005460ff1661122f5760405162461bcd60e51b815260040161073a90613f82565b82428110156112505760405162461bcd60e51b815260040161073a90613fc5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876112876001826140ca565b81811061129657611296613ffc565b90506020020160208101906112ab9190613cdb565b6001600160a01b0316146113015760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20494e56414c49445f50415448000000604482015260640161073a565b61135f7f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b915087826001845161137191906140ca565b8151811061138157611381613ffc565b602002602001015110156113eb5760405162461bcd60e51b815260206004820152602b60248201527f416e79737761705633526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b606482015260840161073a565b6114028a88886000818110610f1e57610f1e613ffc565b61144182888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612f01915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855161147f91906140ca565b8151811061148f5761148f613ffc565b60200260200101516040518263ffffffff1660e01b81526004016114b591815260200190565b600060405180830381600087803b1580156114cf57600080fd5b505af11580156114e3573d6000803e3d6000fd5b5050505061100c8583600185516114fa91906140ca565b8151811061150a5761150a613ffc565b602002602001015161284c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a39190613ea2565b6001600160a01b0316146115c95760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190614012565b6116dc576116dc6136d7565b336001600160a01b0384167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798434468660405161171c9493929190613f53565b60405180910390a3505050565b6000611733612743565b6001600160a01b0316336001600160a01b0316146117635760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6117c1612743565b60008054610100600160a81b0319166101006001600160a01b0393841602179055600180546001600160a01b031916918416919091179055611806426202a30061412b565b60028190556001546000546001600160a01b0391821691610100909104167fcda32bc39904597666dfa9f9c845714756e1ffffad55b52e0d344673a21981214660405190815260200160405180910390a45060015b919050565b60005460ff166118825760405162461bcd60e51b815260040161073a90613f82565b81428110156118a35760405162461bcd60e51b815260040161073a90613fc5565b858560008181106118b6576118b6613ffc565b90506020020160208101906118cb9190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190614012565b506001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610c2d565b60005460ff166119975760405162461bcd60e51b815260040161073a90613f82565b81428110156119b85760405162461bcd60e51b815260040161073a90613fc5565b611a4a33878760008181106119cf576119cf613ffc565b90506020020160208101906119e49190613cdb565b8a898960008181106119f8576119f8613ffc565b9050602002016020810190611a0d9190613cdb565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b85856000818110611a5d57611a5d613ffc565b9050602002016020810190611a729190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190613ebf565b50858560008181106118b6576118b6613ffc565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613ea2565b6001600160a01b031614611bad5760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0857600080fd5b505af1158015611c1c573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb49190614012565b611cc057611cc06136d7565b604051630bebbf4d60e41b81523460048201526001600160a01b03838116602483015284169063bebbf4d0906044016020604051808303816000875af1158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190613ebf565b50349392505050565b611d43612743565b6001600160a01b0316336001600160a01b031614611d735760405162461bcd60e51b815260040161073a90613e6b565b611d808585858585612773565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190613ea2565b6001600160a01b031614611e3b5760405162461bcd60e51b815260040161073a906140e1565b604051620e75bb60e21b81526001600160a01b038516906239d6ec90611e6990339087903090600401613ed8565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190613ebf565b50604051632e1a7d4d60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050611f31828461284c565b509092915050565b6000610ac9848484613103565b611f4e612743565b6001600160a01b0316336001600160a01b031614611f7e5760405162461bcd60e51b815260040161073a90613e6b565b60405163cfbd488560e01b81526001600160a01b03828116600483015283169063cfbd4885906024015b600060405180830381600087803b158015611fc257600080fd5b505af11580156110cf573d6000803e3d6000fd5b611fde612743565b6001600160a01b0316336001600160a01b03161461200e5760405162461bcd60e51b815260040161073a90613e6b565b6000612018612743565b6040516340c10f1960e01b81526001600160a01b03808316600483015260248201859052919250908416906340c10f19906044016020604051808303816000875af115801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190614012565b50604051620e75bb60e21b81526001600160a01b038416906239d6ec906120be90849086908290600401613ed8565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190613ebf565b612109612743565b6001600160a01b0316336001600160a01b0316146121395760405162461bcd60e51b815260040161073a90613e6b565b604051637e51dad560e11b81526001600160a01b03828116600483015283169063fca3b5aa90602401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f39190613ea2565b6001600160a01b0316146122195760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561227457600080fd5b505af1158015612288573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190614012565b61232c5761232c6136d7565b6001600160a01b0380831690339085167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a3446604080519283526020830191909152810186905260600160405180910390a4505050565b6000610ac98484846131cc565b604051632770a7eb60e21b8152336004820152602481018390526001600160a01b03851690639dc29fac906044016020604051808303816000875af11580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614012565b50336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b79858546610a9d565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612cb2565b60005460ff166124855760405162461bcd60e51b815260040161073a90613f82565b81428110156124a65760405162461bcd60e51b815260040161073a90613fc5565b6124bd33878760008181106119cf576119cf613ffc565b858560008181106124d0576124d0613ffc565b90506020020160208101906124e59190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125589190613ebf565b5085856000818110610b7257610b72613ffc565b612574612743565b6001600160a01b0316336001600160a01b0316146125a45760405162461bcd60e51b815260040161073a90613e6b565b806001600160a01b0316630d707df86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125df57600080fd5b505af1158015611d80573d6000803e3d6000fd5b50565b60005b8781101561269c5761268a338a8a8481811061261757612617613ffc565b905060200201602081019061262c9190613cdb565b89898581811061263e5761263e613ffc565b90506020020160208101906126539190613cdb565b88888681811061266557612665613ffc565b9050602002013587878781811061267e5761267e613ffc565b90506020020135612bdb565b80612694816140af565b9150506125f9565b505050505050505050565b6126eb338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b6001600160a01b0380841690339086167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a8546604080519283526020830191909152810186905260600160405180910390a450505050565b6000600254421061275e57506001546001600160a01b031690565b5060005461010090046001600160a01b031690565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f19906044016020604051808303816000875af11580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190614012565b50826001600160a01b0316846001600160a01b0316867faac9ce45fe3adf5143598c4f18a369591a20a3384aedaf1b525d29127e1fcd5585856128264690565b604080519384526020840192909252908201526060015b60405180910390a45050505050565b604080516000808252602082019092526001600160a01b0384169083906040516128769190614143565b60006040518083038185875af1925050503d80600081146128b3576040519150601f19603f3d011682016040523d82523d6000602084013e6128b8565b606091505b50509050806129185760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b606482015260840161073a565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c9590859061325c565b60008084116129cc5760405162461bcd60e51b815260206004820152602d602482015260008051602061427083398151915260448201526c17d25394155517d05353d55395609a1b606482015260840161073a565b6000831180156129dc5750600082115b6129f85760405162461bcd60e51b815260040161073a9061415f565b6000612a06856103e56133e3565b90506000612a1482856133e3565b90506000612a2e83612a28886103e86133e3565b90613447565b9050612a3a81836141ad565b979650505050505050565b6060600282511015612a995760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612ab357612ab3613754565b604051908082528060200260200182016040528015612adc578160200160208202803683370190505b509050828160018351612aef91906140ca565b81518110612aff57612aff613ffc565b602002602001018181525050600060018351612b1b91906140ca565b90505b8015612bd357600080612b6e8786612b376001876140ca565b81518110612b4757612b47613ffc565b6020026020010151878681518110612b6157612b61613ffc565b6020026020010151613491565b91509150612b96848481518110612b8757612b87613ffc565b60200260200101518383613103565b84612ba26001866140ca565b81518110612bb257612bb2613ffc565b60200260200101818152505050508080612bcb906141cf565b915050612b1e565b509392505050565b604051632770a7eb60e21b81526001600160a01b03868116600483015260248201849052851690639dc29fac906044016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614012565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a85612c964690565b604080519283526020830191909152810186905260600161283d565b6060600282511015612d065760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612d2057612d20613754565b604051908082528060200260200182016040528015612d49578160200160208202803683370190505b5090508281600081518110612d6057612d60613ffc565b60200260200101818152505060005b60018351612d7d91906140ca565b811015612bd357600080612dc387868581518110612d9d57612d9d613ffc565b602002602001015187866001612db3919061412b565b81518110612b6157612b61613ffc565b91509150612deb848481518110612ddc57612ddc613ffc565b60200260200101518383612977565b84612df785600161412b565b81518110612e0757612e07613ffc565b60200260200101818152505050508080612e20906140af565b915050612d6f565b6000806000612e37858561355b565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001612edf9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60005b60018351612f1291906140ca565b811015610c9557600080848381518110612f2e57612f2e613ffc565b602002602001015185846001612f44919061412b565b81518110612f5457612f54613ffc565b6020026020010151915091506000612f6c838361355b565b509050600087612f7d86600161412b565b81518110612f8d57612f8d613ffc565b60200260200101519050600080836001600160a01b0316866001600160a01b031614612fbb57826000612fbf565b6000835b91509150600060028a51612fd391906140ca565b8810612fdf578861302d565b61302d7f0000000000000000000000000000000000000000000000000000000000000000878c6130108c600261412b565b8151811061302057613020613ffc565b6020026020010151612e28565b905061305a7f00000000000000000000000000000000000000000000000000000000000000008888612e28565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613097576020820181803683370190505b506040518563ffffffff1660e01b81526004016130b794939291906141e6565b600060405180830381600087803b1580156130d157600080fd5b505af11580156130e5573d6000803e3d6000fd5b505050505050505050505080806130fb906140af565b915050612f04565b60008084116131595760405162461bcd60e51b815260206004820152602e602482015260008051602061427083398151915260448201526d17d3d55514155517d05353d5539560921b606482015260840161073a565b6000831180156131695750600082115b6131855760405162461bcd60e51b815260040161073a9061415f565b600061319d6103e861319786886133e3565b906133e3565b905060006131b16103e56131978689613655565b90506131c26001612a2883856141ad565b9695505050505050565b600080841161321b5760405162461bcd60e51b8152602060048201526027602482015260008051602061427083398151915260448201526617d05353d5539560ca1b606482015260840161073a565b60008311801561322b5750600082115b6132475760405162461bcd60e51b815260040161073a9061415f565b8261325285846133e3565b610ac991906141ad565b61326e826001600160a01b03166136a0565b6132ba5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161073a565b600080836001600160a01b0316836040516132d59190614143565b6000604051808303816000865af19150503d8060008114613312576040519150601f19603f3d011682016040523d82523d6000602084013e613317565b606091505b5091509150816133695760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161073a565b805115610c9557808060200190518101906133849190614012565b610c955760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161073a565b60008115806134045750508082028282828161340157613401614197565b04145b610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161073a565b80820182811015610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161073a565b60008060006134a0858561355b565b5090506000806134b1888888612e28565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613512919061422a565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461354957808261354c565b81815b90999098509650505050505050565b600080826001600160a01b0316846001600160a01b031614156135d05760405162461bcd60e51b815260206004820152602760248201527f53757368697377617056324c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b606482015260840161073a565b826001600160a01b0316846001600160a01b0316106135f05782846135f3565b83835b90925090506001600160a01b03821661364e5760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a205a45524f5f41444452455353604482015260640161073a565b9250929050565b80820382811115610c825760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161073a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610ac95750141592915050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146125f357600080fd5b600080600080600060a0868803121561371a57600080fd5b85359450602086013561372c816136ed565b9350604086013561373c816136ed565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379357613793613754565b604052919050565b600082601f8301126137ac57600080fd5b813567ffffffffffffffff8111156137c6576137c6613754565b6137d9601f8201601f191660200161376a565b8181528460208386010111156137ee57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561382157600080fd5b843561382c816136ed565b9350602085013567ffffffffffffffff81111561384857600080fd5b6138548782880161379b565b949794965050505060408301359260600135919050565b60008060006060848603121561388057600080fd5b505081359360208301359350604090920135919050565b80151581146125f357600080fd5b6000602082840312156138b757600080fd5b81356138c281613897565b9392505050565b60008083601f8401126138db57600080fd5b50813567ffffffffffffffff8111156138f357600080fd5b6020830191508360208260051b850101111561364e57600080fd5b600080600080600080600060c0888a03121561392957600080fd5b8735965060208801359550604088013567ffffffffffffffff81111561394e57600080fd5b61395a8a828b016138c9565b909650945050606088013561396e816136ed565b969995985093969295946080840135945060a09093013592915050565b6000806040838503121561399e57600080fd5b8235915060208084013567ffffffffffffffff808211156139be57600080fd5b818601915086601f8301126139d257600080fd5b8135818111156139e4576139e4613754565b8060051b91506139f584830161376a565b8181529183018401918481019089841115613a0f57600080fd5b938501935b83851015613a395784359250613a29836136ed565b8282529385019390850190613a14565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613a8157835183529284019291840191600101613a65565b50909695505050505050565b60008060008060808587031215613aa357600080fd5b8435613aae816136ed565b93506020850135613abe816136ed565b93969395505050506040820135916060013590565b60008060008060008060008060008060a08b8d031215613af257600080fd5b8a3567ffffffffffffffff80821115613b0a57600080fd5b613b168e838f016138c9565b909c509a5060208d0135915080821115613b2f57600080fd5b613b3b8e838f016138c9565b909a50985060408d0135915080821115613b5457600080fd5b613b608e838f016138c9565b909850965060608d0135915080821115613b7957600080fd5b613b858e838f016138c9565b909650945060808d0135915080821115613b9e57600080fd5b50613bab8d828e016138c9565b915080935050809150509295989b9194979a5092959850565b60008060008060008060008060e0898b031215613be057600080fd5b883597506020890135965060408901359550606089013567ffffffffffffffff811115613c0c57600080fd5b613c188b828c016138c9565b9096509450506080890135613c2c816136ed565b979a969950949793969295929450505060a08201359160c0013590565b60008060408385031215613c5c57600080fd5b8235613c67816136ed565b91506020830135613c77816136ed565b809150509250929050565b600080600060608486031215613c9757600080fd5b8335613ca2816136ed565b9250602084013567ffffffffffffffff811115613cbe57600080fd5b613cca8682870161379b565b925050604084013590509250925092565b600060208284031215613ced57600080fd5b81356138c2816136ed565b600080600060608486031215613d0d57600080fd5b8335613d18816136ed565b9250602084013591506040840135613d2f816136ed565b809150509250925092565b60008060408385031215613d4d57600080fd5b8235613d58816136ed565b946020939093013593505050565b600080600060608486031215613d7b57600080fd5b8335613d86816136ed565b92506020840135613d96816136ed565b929592945050506040919091013590565b6000806000806000806000806080898b031215613dc357600080fd5b883567ffffffffffffffff80821115613ddb57600080fd5b613de78c838d016138c9565b909a50985060208b0135915080821115613e0057600080fd5b613e0c8c838d016138c9565b909850965060408b0135915080821115613e2557600080fd5b613e318c838d016138c9565b909650945060608b0135915080821115613e4a57600080fd5b50613e578b828c016138c9565b999c989b5096995094979396929594505050565b6020808252601a908201527f416e79737761705633526f757465723a20464f5242494444454e000000000000604082015260600190565b600060208284031215613eb457600080fd5b81516138c2816136ed565b600060208284031215613ed157600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60005b83811015613f16578181015183820152602001613efe565b83811115610c955750506000910152565b60008151808452613f3f816020860160208601613efb565b601f01601f19169290920160200192915050565b608081526000613f666080830187613f27565b6020830195909552506040810192909252606090910152919050565b60208082526023908201527f416e79737761705636526f757465723a205377617054726164652064697361626040820152621b195960ea1b606082015260800190565b60208082526018908201527f416e79737761705633526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561402457600080fd5b81516138c281613897565b60a0808252810186905260008760c08301825b89811015614072578235614055816136ed565b6001600160a01b0316825260209283019290910190600101614042565b50602084019790975250506040810193909352606083019190915260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156140c3576140c3614099565b5060010190565b6000828210156140dc576140dc614099565b500390565b6020808252602a908201527f416e79737761705633526f757465723a20756e6465726c79696e67206973206e6040820152696f7420774e415449564560b01b606082015260800190565b6000821982111561413e5761413e614099565b500190565b60008251614155818460208701613efb565b9190910192915050565b6020808252602a908201526000805160206142708339815191526040820152695f4c495155494449545960b01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826141ca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816141de576141de614099565b506000190190565b84815283602082015260018060a01b03831660408201526080606082015260006131c26080830184613f27565b80516001600160701b038116811461185b57600080fd5b60008060006060848603121561423f57600080fd5b61424884614213565b925061425660208501614213565b9150604084015163ffffffff81168114613d2f57600080fdfe53757368697377617056324c6962726172793a20494e53554646494349454e54a2646970667358221220c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db3364736f6c634300080a0033000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

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

000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c

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

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c35dadb65012ec5796536bd9864ed8773abc74c4
Arg [1] : 000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7
Arg [2] : 000000000000000000000000f39fee2fdfe7db022591f4a82e3537fa0b55fb9c


Deployed ByteCode Sourcemap

10450:15628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11189:10;-1:-1:-1;;;;;11203:7:0;11189:21;;11182:29;;;;:::i;:::-;10450:15628;;;;;17487:718;;;;;;;;;;-1:-1:-1;17487:718:0;;;;;:::i;:::-;;:::i;15705:284::-;;;;;;;;;;-1:-1:-1;15705:284:0;;;;;:::i;:::-;;:::i;25086:246::-;;;;;;;;;;-1:-1:-1;25086:246:0;;;;;:::i;:::-;;:::i;:::-;;;2895:25:1;;;2883:2;2868:18;25086:246:0;;;;;;;;12747:101;;;;;;;;;;-1:-1:-1;12747:101:0;;;;;:::i;:::-;;:::i;20596:433::-;;;;;;;;;;-1:-1:-1;20596:433:0;;;;;:::i;:::-;;:::i;25838:237::-;;;;;;;;;;-1:-1:-1;25838:237:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14188:157::-;;;;;;;;;;-1:-1:-1;14188:157:0;;;;;:::i;:::-;;:::i;19322:319::-;;;;;;;;;;-1:-1:-1;19322:319:0;;;;;:::i;:::-;;:::i;21890:665::-;;;;;;;;;;-1:-1:-1;21890:665:0;;;;;:::i;:::-;;:::i;10636:27::-;;;;;;;;;;-1:-1:-1;10636:27:0;;;;;;;;;;;9596:14:1;;9589:22;9571:41;;9559:2;9544:18;10636:27:0;9431:187:1;17117:245:0;;;;;;;;;;-1:-1:-1;17117:245:0;;;;;:::i;:::-;;:::i;13221:228::-;;;;;;;;;;-1:-1:-1;13221:228:0;;;;;:::i;:::-;;:::i;23950:903::-;;;;;;;;;;-1:-1:-1;23950:903:0;;;;;:::i;:::-;;:::i;15997:411::-;;;;;;:::i;:::-;;:::i;12856:357::-;;;;;;;;;;-1:-1:-1;12856:357:0;;;;;:::i;:::-;;:::i;22656:433::-;;;;;;;;;;-1:-1:-1;22656:433:0;;;;;:::i;:::-;;:::i;23190:615::-;;;;;;;;;;-1:-1:-1;23190:615:0;;;;;:::i;:::-;;:::i;18213:407::-;;;;;;:::i;:::-;;:::i;16831:173::-;;;;;;;;;;-1:-1:-1;16831:173:0;;;;;:::i;:::-;;:::i;18628:413::-;;;;;;;;;;-1:-1:-1;18628:413:0;;;;;:::i;:::-;;:::i;25340:245::-;;;;;;;;;;-1:-1:-1;25340:245:0;;;;;:::i;:::-;;:::i;13717:136::-;;;;;;;;;;-1:-1:-1;13717:136:0;;;;;:::i;:::-;;:::i;19091:223::-;;;;;;;;;;-1:-1:-1;19091:223:0;;;;;:::i;:::-;;:::i;10595:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11743:32:1;;;11725:51;;11713:2;11698:18;10595:32:0;11579:203:1;12650:89:0;;;;;;;;;;-1:-1:-1;12722:9:0;12650:89;;13457:130;;;;;;;;;;-1:-1:-1;13457:130:0;;;;;:::i;:::-;;:::i;14756:405::-;;;;;;:::i;:::-;;:::i;24897:181::-;;;;;;;;;;-1:-1:-1;24897:181:0;;;;;:::i;:::-;;:::i;10556:32::-;;;;;;;;;;;;;;;15463:234;;;;;;;;;;-1:-1:-1;15463:234:0;;;;;:::i;:::-;;:::i;25593:237::-;;;;;;;;;;-1:-1:-1;25593:237:0;;;;;:::i;:::-;;:::i;21130:615::-;;;;;;;;;;-1:-1:-1;21130:615:0;;;;;:::i;:::-;;:::i;13595:114::-;;;;;;;;;;-1:-1:-1;13595:114:0;;;;;:::i;:::-;;:::i;15169:286::-;;;;;;;;;;-1:-1:-1;15169:286:0;;;;;:::i;:::-;;:::i;14470:278::-;;;;;;;;;;-1:-1:-1;14470:278:0;;;;;:::i;:::-;;:::i;12468:174::-;;;;;;;;;;;;;:::i;17487:718::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;;;;;;;;;17609:47:::1;17620:3;17625:5;17632:2;17636:6;17644:11;17609:10;:47::i;:::-;17667:24;17709:5;17667:48;;17726:19;17748:9;-1:-1:-1::0;;;;;17748:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17726:44:::0;-1:-1:-1;;;;;;17785:25:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;17814:36:0::1;::::0;-1:-1:-1;;;17814:36:0;;-1:-1:-1;;;;;11743:32:1;;;17814:36:0::1;::::0;::::1;11725:51:1::0;17854:6:0;;17814:29;;::::1;::::0;::::1;::::0;11698:18:1;;17814:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;17785:75;17781:417;;;17896:7;-1:-1:-1::0;;;;;17881:22:0::1;:11;-1:-1:-1::0;;;;;17881:22:0::1;;17877:310;;;17924:50;::::0;-1:-1:-1;;;17924:50:0;;-1:-1:-1;;;;;17924:23:0;::::1;::::0;::::1;::::0;:50:::1;::::0;17948:2;;17952:6;;17968:4:::1;::::0;17924:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17993:34:0::1;::::0;-1:-1:-1;;;17993:34:0;;::::1;::::0;::::1;2895:25:1::0;;;18002:7:0::1;-1:-1:-1::0;;;;;17993:26:0::1;::::0;::::1;::::0;2868:18:1;;17993:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18046:45;18080:2;18084:6;18046:33;:45::i;:::-;17877:310;;;18132:39;::::0;-1:-1:-1;;;18132:39:0;;-1:-1:-1;;;;;18132:23:0;::::1;::::0;::::1;::::0;:39:::1;::::0;18156:2;;18160:6;;18156:2;;18132:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17877:310;17598:607;;17487:718:::0;;;;;:::o;15705:284::-;15817:86;15877:10;15889:5;15896:6;15839:5;-1:-1:-1;;;;;15824:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15817:59:0;;:86;;:59;:86::i;:::-;15940:10;-1:-1:-1;;;;;15919:62:0;;;15952:2;15956:6;12722:9;15964:5;15971:9;15919:62;;;;;;;;;:::i;:::-;;;;;;;;15705:284;;;;:::o;25086:246::-;25221:14;25260:64;25292:8;25302:9;25313:10;25260:31;:64::i;:::-;25253:71;25086:246;-1:-1:-1;;;;25086:246:0:o;12747:101::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;12816:15:::1;:24:::0;;-1:-1:-1;;12816:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12747:101::o;20596:433::-;10717:15;;;;10709:63;;;;-1:-1:-1;;;10709:63:0;;;;;;;:::i;:::-;20840:8:::1;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::1;;;;;;;:::i;:::-;20876:4:::2;;20881:1;20876:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20861:50;::::0;-1:-1:-1;;;20861:50:0;;20890:10:::2;20861:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;20861:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;20861:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;20927:94:0;::::2;20964:10;20927:94;20958:4:::0;;20980:8;20990:12;12722:9;21004:5:::2;21011:9;20927:94;;;;;;;;;;;:::i;:::-;;;;;;;;10783:1:::1;20596:433:::0;;;;;;;:::o;25838:237::-;25964:21;26010:57;26042:7;26051:9;26062:4;26010:31;:57::i;:::-;26003:64;;25838:237;;;;;:::o;14188:157::-;14284:53;14296:10;14308:5;14315:2;14319:6;14327:9;14284:11;:53::i;:::-;14188:157;;;;:::o;19322:319::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;19506:6:::1;19501:133;19518:17:::0;;::::1;19501:133;;;19557:65;19568:3;;19572:1;19568:6;;;;;;;:::i;:::-;;;;;;;19576;;19583:1;19576:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19587:2;;19590:1;19587:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19594:7;;19602:1;19594:10;;;;;;;:::i;:::-;;;;;;;19606:12;;19619:1;19606:15;;;;;;;:::i;:::-;;;;;;;19557:10;:65::i;:::-;19537:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19501:133;;;;19322:319:::0;;;;;;;;;;:::o;21890:665::-;22184:21;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;10717:15:::1;::::0;::::1;;10709:63;;;;-1:-1:-1::0;;;10709:63:0::1;;;;;;;:::i;:::-;22165:8:::2;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::2;;;;;;;:::i;:::-;22228:57:::3;22261:7;22270:8;22280:4;;22228:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22228:32:0::3;::::0;-1:-1:-1;;;22228:57:0:i:3;:::-;22218:67;;22335:12;22304:7;22329:1;22312:7;:14;:18;;;;:::i;:::-;22304:27;;;;;;;;:::i;:::-;;;;;;;:43;;22296:101;;;::::0;-1:-1:-1;;;22296:101:0;;18831:2:1;22296: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;;22296:101:0::3;18629:409:1::0;22296:101:0::3;22408:104;22419:3;22424:4;;22429:1;22424:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22433:53;22460:7;22469:4;;22474:1;22469:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22478:4;;22483:1;22478:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22433:26;:53::i;:::-;22488:7;22496:1;22488:10;;;;;;;;:::i;:::-;;;;;;;22500:11;22408:10;:104::i;:::-;22523:24;22529:7;22538:4;;22523:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22544:2:0;;-1:-1:-1;22523:5:0::3;::::0;-1:-1:-1;;22523:24:0:i:3;:::-;10783:1:::2;21890:665:::0;;;;;;;;;;:::o;17117:245::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;17245:47:::1;17256:3;17261:5;17268:2;17272:6;17280:11;17245:10;:47::i;:::-;17303:51;::::0;-1:-1:-1;;;17303:51:0;;-1:-1:-1;;;;;17303:35:0;::::1;::::0;::::1;::::0;:51:::1;::::0;17339:2;;17343:6;;17339:2;;17303:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17117:245:::0;;;;;:::o;13221:228::-;13299:4;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13324:22:0;::::1;13316:64;;;::::0;-1:-1:-1;;;13316:64:0;;19245:2:1;13316:64:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13316:64:0::1;19043:353:1::0;13316:64:0::1;13398:43;::::0;-1:-1:-1;;;13398:43:0;;-1:-1:-1;;;;;11743:32:1;;;13398:43:0::1;::::0;::::1;11725:51:1::0;13398:33:0;::::1;::::0;::::1;::::0;11698:18:1;;13398:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23950:903::-:0;24244:21;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;10717:15:::1;::::0;::::1;;10709:63;;;;-1:-1:-1::0;;;10709:63:0::1;;;;;;;:::i;:::-;24225:8:::2;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24311:7:0::3;24286:32;:4:::0;;24291:15:::3;24305:1;24286:4:::0;24291:15:::3;:::i;:::-;24286:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24286:32:0::3;;24278:74;;;::::0;-1:-1:-1;;;24278:74:0;;19603:2:1;24278:74:0::3;::::0;::::3;19585:21:1::0;19642:2;19622:18;;;19615:30;19681:31;19661:18;;;19654:59;19730:18;;24278:74:0::3;19401:353:1::0;24278:74:0::3;24373:57;24406:7;24415:8;24425:4;;24373:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24373:32:0::3;::::0;-1:-1:-1;;;24373:57:0:i:3;:::-;24363:67;;24480:12;24449:7;24474:1;24457:7;:14;:18;;;;:::i;:::-;24449:27;;;;;;;;:::i;:::-;;;;;;;:43;;24441:99;;;::::0;-1:-1:-1;;;24441:99:0;;19961:2:1;24441: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;;24441:99:0::3;19759:407:1::0;24441:99:0::3;24551:105;24562:3;24567:4;;24572:1;24567:7;;;;;;;:::i;24551:105::-;24667:35;24673:7;24682:4;;24667:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24696:4:0::3;::::0;-1:-1:-1;24667:5:0::3;::::0;-1:-1:-1;;24667:35:0:i:3;:::-;24722:7;-1:-1:-1::0;;;;;24713:26:0::3;;24740:7;24765:1;24748:7;:14;:18;;;;:::i;:::-;24740:27;;;;;;;;:::i;:::-;;;;;;;24713:55;;;;;;;;;;;;;2895:25:1::0;;2883:2;2868:18;;2749:177;24713:55:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;24779:66;24813:2;24817:7;24842:1;24825:7;:14;:18;;;;:::i;:::-;24817:27;;;;;;;;:::i;:::-;;;;;;;24779:33;:66::i;15997:411::-:0;16146:7;-1:-1:-1;;;;;16108:45:0;16123:5;-1:-1:-1;;;;;16108:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16108:45:0;;16100:100;;;;-1:-1:-1;;;16100:100:0;;;;;;;:::i;:::-;16220:7;-1:-1:-1;;;;;16211:25:0;;16244:9;16211:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16274:44:0;;-1:-1:-1;;;16274:44:0;;-1:-1:-1;;;;;16884:32:1;;;16274:44:0;;;16866:51:1;16308:9:0;16933:18:1;;;16926:34;16283:7:0;16274:26;;-1:-1:-1;16274:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;16274:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16267:52;;;;:::i;:::-;16356:10;-1:-1:-1;;;;;16335:65:0;;;16368:2;16372:9;12722;16390;16335:65;;;;;;;;;:::i;:::-;;;;;;;;15997:411;;;:::o;12856:357::-;12915:4;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12940:20:0;::::1;12932:62;;;::::0;-1:-1:-1;;;12932:62:0;;19245:2:1;12932:62:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;12932:62:0::1;19043:353:1::0;12932:62:0::1;13015:5;:3;:5::i;:::-;13005:7;:15:::0;;-1:-1:-1;;;;;;13005:15:0::1;;-1:-1:-1::0;;;;;13005:15:0;;::::1;;;::::0;;-1:-1:-1;13031:16:0;;-1:-1:-1;;;;;;13031:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;;13081:27:::1;:15;13099:9;13081:27;:::i;:::-;13058:20;:50:::0;;;13146:7:::1;::::0;::::1;13137::::0;-1:-1:-1;;;;;13146:7:0;;::::1;::::0;::::1;13137::::0;;::::1;;13124:59;12722:9:::0;13124:59:::1;::::0;2895:25:1;;;2883:2;2868:18;13124:59:0::1;;;;;;;-1:-1:-1::0;13201:4:0::1;12451:1;12856:357:::0;;;:::o;22656:433::-;10717:15;;;;10709:63;;;;-1:-1:-1;;;10709:63:0;;;;;;;:::i;:::-;22900:8:::1;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::1;;;;;;;:::i;:::-;22936:4:::2;;22941:1;22936:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22921:50;::::0;-1:-1:-1;;;22921:50:0;;22950:10:::2;22921:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;22921:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;22921:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;22987:94:0;::::2;23024:10;22987:94;23018:4:::0;;23040:8;23050:12;12722:9;23064:5:::2;12650:89:::0;23190:615;10717:15;;;;10709:63;;;;-1:-1:-1;;;10709:63:0;;;;;;;:::i;:::-;23444:8:::1;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::1;;;;;;;:::i;:::-;23465:92:::2;23527:10;23539:4;;23544:1;23539:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23548:8;23487:4;;23492:1;23487:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23472:34:0::2;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;23465:92;23583:4;;23588:1;23583:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23568:58;::::0;-1:-1:-1;;;23568:58:0;;::::2;::::0;::::2;20889:25:1::0;;;23615:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;23568:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;23568:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23652:4;;23657:1;23652:7;;;;;;;:::i;18213:407::-:0;18289:4;18352:7;-1:-1:-1;;;;;18314:45:0;18329:5;-1:-1:-1;;;;;18314:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18314:45:0;;18306:100;;;;-1:-1:-1;;;18306:100:0;;;;;;;:::i;:::-;18426:7;-1:-1:-1;;;;;18417:25:0;;18450:9;18417:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18480:44:0;;-1:-1:-1;;;18480:44:0;;-1:-1:-1;;;;;16884:32:1;;;18480:44:0;;;16866:51:1;18514:9:0;16933:18:1;;;16926:34;18489:7:0;18480:26;;-1:-1:-1;18480:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;18480:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18473:52;;;;:::i;:::-;18536:49;;-1:-1:-1;;;18536:49:0;;18571:9;18536:49;;;20889:25:1;-1:-1:-1;;;;;20950:32:1;;;20930:18;;;20923:60;18536:34:0;;;;;20862:18:1;;18536:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18603:9:0;;18213:407;-1:-1:-1;;;18213:407:0:o;16831:173::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;16949:47:::1;16960:3;16965:5;16972:2;16976:6;16984:11;16949:10;:47::i;:::-;16831:173:::0;;;;;:::o;18628:413::-;18710:4;18773:7;-1:-1:-1;;;;;18735:45:0;18750:5;-1:-1:-1;;;;;18735:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18735:45:0;;18727:100;;;;-1:-1:-1;;;18727:100:0;;;;;;;:::i;:::-;18838:70;;-1:-1:-1;;;18838:70:0;;-1:-1:-1;;;;;18838:35:0;;;;;:70;;18874:10;;18886:6;;18902:4;;18838:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18919:34:0;;-1:-1:-1;;;18919:34:0;;;;;2895:25:1;;;18928:7:0;-1:-1:-1;;;;;18919:26:0;;;;2868:18:1;;18919:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18964:45;18998:2;19002:6;18964:33;:45::i;:::-;-1:-1:-1;19027:6:0;;18628:413;-1:-1:-1;;18628:413:0:o;25340:245::-;25475:13;25513:64;25544:9;25555;25566:10;25513:30;:64::i;13717:136::-;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;13804:41:::1;::::0;-1:-1:-1;;;13804:41:0;;-1:-1:-1;;;;;11743:32:1;;;13804:41:0::1;::::0;::::1;11725:51:1::0;13804:34:0;::::1;::::0;::::1;::::0;11698:18:1;;13804:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;19091:223:::0;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;19169:12:::1;19184:5;:3;:5::i;:::-;19200:40;::::0;-1:-1:-1;;;19200:40:0;;-1:-1:-1;;;;;16884:32:1;;;19200:40:0::1;::::0;::::1;16866:51:1::0;16933:18;;;16926:34;;;19169:20:0;;-1:-1:-1;19200:26:0;;::::1;::::0;::::1;::::0;16839:18:1;;19200:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19251:55:0::1;::::0;-1:-1:-1;;;19251:55:0;;-1:-1:-1;;;;;19251:35:0;::::1;::::0;::::1;::::0;:55:::1;::::0;19287:4;;19293:6;;19287:4;;19251:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13457:130::-:0;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;13541:38:::1;::::0;-1:-1:-1;;;13541:38:0;;-1:-1:-1;;;;;11743:32:1;;;13541:38:0::1;::::0;::::1;11725:51:1::0;13541:31:0;::::1;::::0;::::1;::::0;11698:18:1;;13541:38:0::1;11579:203:1::0;14756:405:0;14899:7;-1:-1:-1;;;;;14861:45:0;14876:5;-1:-1:-1;;;;;14861:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14861:45:0;;14853:100;;;;-1:-1:-1;;;14853:100:0;;;;;;;:::i;:::-;14973:7;-1:-1:-1;;;;;14964:25:0;;14997:9;14964:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15027:44:0;;-1:-1:-1;;;15027:44:0;;-1:-1:-1;;;;;16884:32:1;;;15027:44:0;;;16866:51:1;15061:9:0;16933:18:1;;;16926:34;15036:7:0;15027:26;;-1:-1:-1;15027:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;15027:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15020:52;;;;:::i;:::-;-1:-1:-1;;;;;15088:65:0;;;;15109:10;;15088:65;;;15125:9;12722;15088:65;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;15088:65:0;;;;;;;14756:405;;;:::o;24897:181::-;24985:12;25017:53;25042:7;25051:8;25061;25017:24;:53::i;15463:234::-;15565:46;;-1:-1:-1;;;15565:46:0;;15592:10;15565:46;;;16866:51:1;16933:18;;;16926:34;;;-1:-1:-1;;;;;15565:26:0;;;;;16839:18:1;;15565:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15648:10:0;-1:-1:-1;;;;;15627:62:0;;;15660:2;15664:6;12722:9;15672:5;12650:89;25593:237;25719:21;25765:57;25798:7;25807:8;25817:4;25765:32;:57::i;21130:615::-;10717:15;;;;10709:63;;;;-1:-1:-1;;;10709:63:0;;;;;;;:::i;:::-;21384:8:::1;10862:15;10850:8;:27;;10842:64;;;;-1:-1:-1::0;;;10842:64:0::1;;;;;;;:::i;:::-;21405:92:::2;21467:10;21479:4;;21484:1;21479:7;;;;;;;:::i;21405:92::-;21523:4;;21528:1;21523:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21508:58;::::0;-1:-1:-1;;;21508:58:0;;::::2;::::0;::::2;20889:25:1::0;;;21555:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;21508:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;21508:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21592:4;;21597:1;21592:7;;;;;;;:::i;13595:114::-:0;12404:5;:3;:5::i;:::-;-1:-1:-1;;;;;12390:19:0;:10;-1:-1:-1;;;;;12390:19:0;;12382:58;;;;-1:-1:-1;;;12382:58:0;;;;;;;:::i;:::-;13681:5:::1;-1:-1:-1::0;;;;;13666:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;12451:1;13595:114:::0;:::o;15169:286::-;15317:6;15312:136;15329:17;;;15312:136;;;15368:68;15380:10;15392:6;;15399:1;15392:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15403:2;;15406:1;15403:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15410:7;;15418:1;15410:10;;;;;;;:::i;:::-;;;;;;;15422;;15433:1;15422:13;;;;;;;:::i;:::-;;;;;;;15368:11;:68::i;:::-;15348:3;;;;:::i;:::-;;;;15312:136;;;;15169:286;;;;;;;;:::o;14470:278::-;14576:86;14636:10;14648:5;14655:6;14598:5;-1:-1:-1;;;;;14583:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14576:86;-1:-1:-1;;;;;14678:62:0;;;;14699:10;;14678:62;;;14715:6;12722:9;14678:62;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14678:62:0;;;;;;;14470:278;;;;:::o;12468:174::-;12504:7;12547:20;;12528:15;:39;12524:86;;-1:-1:-1;12591:7:0;;-1:-1:-1;;;;;12591:7:0;;12468:174::o;12524:86::-;-1:-1:-1;12627:7:0;;;;;-1:-1:-1;;;;;12627:7:0;;12468:174::o;16488:229::-;16599:38;;-1:-1:-1;;;16599:38:0;;-1:-1:-1;;;;;16884:32:1;;;16599:38:0;;;16866:51:1;16933:18;;;16926:34;;;16599:26:0;;;;;16839:18:1;;16599:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16678:2;-1:-1:-1;;;;;16653:56:0;16671:5;-1:-1:-1;;;;;16653:56:0;16666:3;16653:56;16682:6;16690:11;16703:5;12722:9;;12650:89;16703:5;16653:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;;21273:34;21184:2;21169:18;16653:56:0;;;;;;;;16488:229;;;;;:::o;6740:201::-;6851:12;;;6813;6851;;;;;;;;;-1:-1:-1;;;;;6830:7:0;;;6844:5;;6830:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6812:52;;;6883:7;6875:58;;;;-1:-1:-1;;;6875:58:0;;21799:2:1;6875: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;;6875:58:0;21597:402:1;6875:58:0;6801:140;6740:201;;:::o;9286:::-;9410:68;;;-1:-1:-1;;;;;22262:15:1;;;9410:68:0;;;22244:34:1;22314:15;;22294:18;;;22287:43;22346:18;;;;22339:34;;;9410:68:0;;;;;;;;;;22179:18:1;;;;9410:68:0;;;;;;;;-1:-1:-1;;;;;9410:68:0;-1:-1:-1;;;9410:68:0;;;9384:95;;9403:5;;9384:18;:95::i;3115:521::-;3208:14;3254:1;3243:8;:12;3235:70;;;;-1:-1:-1;;;3235:70:0;;22586:2:1;3235: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;;3235:70:0;22384:409:1;3235:70:0;3336:1;3324:9;:13;:31;;;;;3354:1;3341:10;:14;3324:31;3316:86;;;;-1:-1:-1;;;3316:86:0;;;;;;;:::i;:::-;3413:20;3436:17;:8;3449:3;3436:12;:17::i;:::-;3413:40;-1:-1:-1;3464:14:0;3481:31;3413:40;3501:10;3481:19;:31::i;:::-;3464:48;-1:-1:-1;3523:16:0;3542:40;3566:15;3542:19;:9;3556:4;3542:13;:19::i;:::-;:23;;:40::i;:::-;3523:59;-1:-1:-1;3605:23:0;3523:59;3605:9;:23;:::i;:::-;3593:35;3115:521;-1:-1:-1;;;;;;;3115:521:0:o;4909:534::-;5010:21;5067:1;5052:4;:11;:16;;5044:61;;;;-1:-1:-1;;;5044:61:0;;23765:2:1;5044:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;5044:61:0;23563:356:1;5044:61:0;5137:4;:11;5126:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5126:23:0;;5116:33;;5190:9;5160:7;5185:1;5168:7;:14;:18;;;;:::i;:::-;5160:27;;;;;;;;:::i;:::-;;;;;;:39;;;;;5215:6;5238:1;5224:4;:11;:15;;;;:::i;:::-;5215:24;;5210:226;5241:5;;5210:226;;5269:14;;5304:42;5316:7;5325:4;5330:5;5334:1;5330;:5;:::i;:::-;5325:11;;;;;;;;:::i;:::-;;;;;;;5338:4;5343:1;5338:7;;;;;;;;:::i;:::-;;;;;;;5304:11;:42::i;:::-;5268:78;;;;5378:46;5390:7;5398:1;5390:10;;;;;;;;:::i;:::-;;;;;;;5402:9;5413:10;5378:11;:46::i;:::-;5361:7;5369:5;5373:1;5369;:5;:::i;:::-;5361:14;;;;;;;;:::i;:::-;;;;;;:63;;;;;5253:183;;5248:3;;;;;:::i;:::-;;;;5210:226;;;;4909:534;;;;;:::o;13861:231::-;13972:40;;-1:-1:-1;;;13972:40:0;;-1:-1:-1;;;;;16884:32:1;;;13972:40:0;;;16866:51:1;16933:18;;;16926:34;;;13972:26:0;;;;;16839:18:1;;13972:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14055:2;-1:-1:-1;;;;;14028:56:0;14049:4;-1:-1:-1;;;;;14028:56:0;14042:5;-1:-1:-1;;;;;14028:56:0;;14059:6;14067:5;12722:9;;12650:89;14067:5;14028:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14028:56:0;20994:319:1;4315:513:0;4416:21;4473:1;4458:4;:11;:16;;4450:61;;;;-1:-1:-1;;;4450:61:0;;23765:2:1;4450:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;4450:61:0;23563:356:1;4450:61:0;4543:4;:11;4532:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4532:23:0;;4522:33;;4579:8;4566:7;4574:1;4566:10;;;;;;;;:::i;:::-;;;;;;:21;;;;;4603:6;4598:223;4629:1;4615:4;:11;:15;;;;:::i;:::-;4611:1;:19;4598:223;;;4653:14;4669:15;4688:42;4700:7;4709:4;4714:1;4709:7;;;;;;;;:::i;:::-;;;;;;;4718:4;4723:1;4727;4723:5;;;;:::i;:::-;4718:11;;;;;;;;:::i;4688:42::-;4652:78;;;;4762:47;4775:7;4783:1;4775:10;;;;;;;;:::i;:::-;;;;;;;4787:9;4798:10;4762:12;:47::i;:::-;4745:7;4753:5;:1;4757;4753:5;:::i;:::-;4745:14;;;;;;;;:::i;:::-;;;;;;:64;;;;;4637:184;;4632:3;;;;;:::i;:::-;;;;4598:223;;1614:490;1703:12;1729:14;1745;1763:26;1774:6;1782;1763:10;:26::i;:::-;1938:32;;-1:-1:-1;;24292:2:1;24288:15;;;24284:24;;1938:32:0;;;24272:37:1;24343:15;;;24339:24;24325:12;;;24318:46;1728:61:0;;-1:-1:-1;1728:61:0;-1:-1:-1;1902:7:0;;24380:12:1;;1938:32:0;;;;;;;;;;;;1928:43;;;;;;1841: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;1841:251:0;;;;-1:-1:-1;;1841:251:0;;;;;;;;;1831:262;;1841:251;1831:262;;;;;1614:490;-1:-1:-1;;;;;;1614:490:0:o;19752:743::-;19859:6;19854:634;19885:1;19871:4;:11;:15;;;;:::i;:::-;19867:1;:19;19854:634;;;19909:13;19924:14;19943:4;19948:1;19943:7;;;;;;;;:::i;:::-;;;;;;;19952:4;19957:1;19961;19957:5;;;;:::i;:::-;19952:11;;;;;;;;:::i;:::-;;;;;;;19908:56;;;;19980:14;19999:44;20029:5;20036:6;19999:29;:44::i;:::-;-1:-1:-1;19979:64:0;-1:-1:-1;20058:14:0;20075:7;20083:5;:1;20087;20083:5;:::i;:::-;20075:14;;;;;;;;:::i;:::-;;;;;;;20058:31;;20105:15;20122;20150:6;-1:-1:-1;;;;;20141:15:0;:5;-1:-1:-1;;;;;20141:15:0;;:61;;20183:9;20199:1;20141:61;;;20165:1;20169:9;20141:61;20104:98;;;;20217:10;20248:1;20234:4;:11;:15;;;;:::i;:::-;20230:1;:19;:84;;20311:3;20230:84;;;20252:56;20279:7;20288:6;20296:4;20301:5;:1;20305;20301:5;:::i;:::-;20296:11;;;;;;;;:::i;:::-;;;;;;;20252:26;:56::i;:::-;20217:97;;20346:50;20373:7;20382:5;20389:6;20346:26;:50::i;:::-;-1:-1:-1;;;;;20329:73:0;;20421:10;20433;20445:2;20459:1;20449:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20449:12:0;;20329:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19893:595;;;;;;;19888:3;;;;;:::i;:::-;;;;19854:634;;3757:476;3850:13;3896:1;3884:9;:13;3876:72;;;;-1:-1:-1;;;3876:72:0;;25710:2:1;3876: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;;3876:72:0;25508:410:1;3876:72:0;3979:1;3967:9;:13;:31;;;;;3997:1;3984:10;:14;3967:31;3959:86;;;;-1:-1:-1;;;3959:86:0;;;;;;;:::i;:::-;4056:14;4073:34;4102:4;4073:24;:9;4087;4073:13;:24::i;:::-;:28;;:34::i;:::-;4056:51;-1:-1:-1;4118:16:0;4137:34;4167:3;4137:25;:10;4152:9;4137:14;:25::i;:34::-;4118:53;-1:-1:-1;4193:32:0;4223:1;4194:23;4118:53;4194:9;:23;:::i;4193:32::-;4182:43;3757:476;-1:-1:-1;;;;;;3757:476:0:o;2668:325::-;2750:12;2793:1;2783:7;:11;2775:63;;;;-1:-1:-1;;;2775:63:0;;26125:2:1;2775: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;;2775:63:0;25923:403:1;2775:63:0;2868:1;2857:8;:12;:28;;;;;2884:1;2873:8;:12;2857:28;2849:83;;;;-1:-1:-1;;;2849:83:0;;;;;;;:::i;:::-;2977:8;2953:21;:7;2965:8;2953:11;:21::i;:::-;:32;;;;:::i;9845:598::-;9933:27;9941:5;-1:-1:-1;;;;;9933:25:0;;:27::i;:::-;9925:71;;;;-1:-1:-1;;;9925:71:0;;26533:2:1;9925:71:0;;;26515:21:1;26572:2;26552:18;;;26545:30;26611:33;26591:18;;;26584:61;26662:18;;9925:71:0;26331:355:1;9925:71:0;10070:12;10084:23;10119:5;-1:-1:-1;;;;;10111:19:0;10131:4;10111:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10069:67;;;;10155:7;10147:52;;;;-1:-1:-1;;;10147:52:0;;26893:2:1;10147:52:0;;;26875:21:1;;;26912:18;;;26905:30;26971:34;26951:18;;;26944:62;27023:18;;10147:52:0;26691:356:1;10147:52:0;10216:17;;:21;10212:224;;10358:10;10347:30;;;;;;;;;;;;:::i;:::-;10339:85;;;;-1:-1:-1;;;10339:85:0;;27254:2:1;10339: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;;10339:85:0;27052:406:1;808:178:0;860:6;912;;;:30;;-1:-1:-1;;927:5:0;;;941:1;936;927:5;936:1;922:15;;;;:::i;:::-;;:20;912:30;904:63;;;;-1:-1:-1;;;904:63:0;;27665:2:1;904:63:0;;;27647:21:1;27704:2;27684:18;;;27677:30;-1:-1:-1;;;27723:18:1;;;27716:50;27783:18;;904:63:0;27463:344:1;463:164:0;572:5;;;567:16;;;;559:49;;;;-1:-1:-1;;;559:49:0;;28014:2:1;559:49:0;;;27996:21:1;28053:2;28033:18;;;28026:30;-1:-1:-1;;;28072:18:1;;;28065:50;28132:18;;559:49:0;27812:344:1;2162:393:0;2255:13;2270;2297:14;2316:26;2327:6;2335;2316:10;:26::i;:::-;2296:46;;;2354:13;2369;2404:32;2412:7;2421:6;2429;2404:7;:32::i;:::-;-1:-1:-1;;;;;2387:62:0;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2353:98;-1:-1:-1;;;;;2353:98:0;;;-1:-1:-1;;;;;2353:98:0;;;2495:6;-1:-1:-1;;;;;2485:16:0;:6;-1:-1:-1;;;;;2485:16:0;;:62;;2528:8;2538;2485:62;;;2505:8;2515;2485:62;2462:85;;;;-1:-1:-1;2162:393:0;-1:-1:-1;;;;;;;2162:393:0:o;1169:353::-;1244:14;1260;1305:6;-1:-1:-1;;;;;1295:16:0;:6;-1:-1:-1;;;;;1295:16:0;;;1287:68;;;;-1:-1:-1;;;1287:68:0;;29011:2:1;1287: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;;1287:68:0;28809:403:1;1287:68:0;1394:6;-1:-1:-1;;;;;1385:15:0;:6;-1:-1:-1;;;;;1385:15:0;;:53;;1423:6;1431;1385:53;;;1404:6;1412;1385:53;1366:72;;-1:-1:-1;1366:72:0;-1:-1:-1;;;;;;1457:20:0;;1449:65;;;;-1:-1:-1;;;1449:65:0;;29419:2:1;1449:65:0;;;29401:21:1;;;29438:18;;;29431:30;29497:34;29477:18;;;29470:62;29549:18;;1449:65:0;29217:356:1;1449:65:0;1169:353;;;;;:::o;635:165::-;744:5;;;739:16;;;;731:50;;;;-1:-1:-1;;;731:50:0;;29780:2:1;731:50:0;;;29762:21:1;29819:2;29799:18;;;29792:30;-1:-1:-1;;;29838:18:1;;;29831:51;29899:18;;731:50:0;29578:345:1;8665:374:0;8725:4;8948:20;;8791:66;8988:15;;;;;:42;;-1:-1:-1;9007:23:0;;;8980:51;-1:-1:-1;;8665: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.