Token BagSwap

 

Overview [ERC-20]

Max Total Supply:
1,000,000,000,000 BSWAP

Holders:
366

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BagSwap

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-26
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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 SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract BagSwap is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "BagSwap";
    string private constant _symbol = "BSWAP";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _devTax = 4;
    uint256 private _marketingTax = 4;
    uint256 private _salesTax = 3;
    uint256 private _summedTax = _marketingTax+_salesTax;
    uint256 private _numOfTokensToExchangeForTeam = 500000 * 10**9;
    uint256 private _routermax = 5000000000 * 10**9;

    // Bot detection
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    address payable private _Marketingfund;
    address payable private _Deployer;
    address payable private _devWalletAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 public launchBlock;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor(address payable marketingTaxAddress, address payable devfeeAddr, address payable depAddr) {
        _Marketingfund = marketingTaxAddress;
        _Deployer = depAddr;
        _devWalletAddress = devfeeAddr;
        _rOwned[address(this)] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_Marketingfund] = true;
        _isExcludedFromFee[_devWalletAddress] = true;
        _isExcludedFromFee[_Deployer] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_devTax == 0 && _summedTax == 0) return;
        _devTax = 0;
        _summedTax = 0;
    }

    function restoreAllFee() private {
        _devTax = 4;
        _marketingTax = 4;
        _salesTax = 3;
        _summedTax = _marketingTax+_salesTax;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (
                    from != address(this) &&
                    to != address(this) &&
                    from != address(uniswapV2Router) &&
                    to != address(uniswapV2Router)
                ) {
                    require(
                        _msgSender() == address(uniswapV2Router) ||
                            _msgSender() == uniswapV2Pair,
                        "ERR: Uniswap only"
                    );
                }
            }
            if(from != address(this)){
                require(amount <= _maxTxAmount);
            }
            require(!bots[from] && !bots[to] && !bots[msg.sender]);

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (15 seconds);
            }
            
 
              // This is done to prevent the taxes from filling up in the router since compiled taxes emptying can impact the chart. 
              // This reduces the impact of taxes on the chart.
              
             uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _routermax)
            {
                contractTokenBalance = _routermax;
            }
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam;
            if (!inSwap && swapEnabled && overMinTokenBalance && from != uniswapV2Pair && from != address(uniswapV2Router)
            ) {
                // We need to swap the current tokens to ETH and send to the team wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isBlackListed(address account) public view returns (bool) {
        return bots[account];
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
            // generate the uniswap pair path of token -> weth
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            _approve(address(this), address(uniswapV2Router), tokenAmount);

            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of ETH
                path,
                address(this),
                block.timestamp
            );
    }

    function sendETHToFee(uint256 amount) private {
        _Marketingfund.transfer(amount.div(11).mul(4));
        _devWalletAddress.transfer(amount.div(11).mul(4));
        _Deployer.transfer(amount.div(11).mul(3));
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router =
            IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = false;
        _maxTxAmount = 25000000000 * 10**9;
        launchBlock = block.number;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }
    
    function setSwapEnabled(bool enabled) external {
        require(_msgSender() == _Deployer);
        swapEnabled = enabled;
    }
        

    function manualswap() external {
        require(_msgSender() == _Deployer);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _Deployer);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function setBots(address[] memory bots_) public {
        require(_msgSender() == _Deployer);
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address notbot) public {
        require(_msgSender() == _Deployer);
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _devTax, _summedTax);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setMaxTxPercent(uint256 maxTxPercent) external {
        require(_msgSender() == _Deployer);
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
    function setRouterPercent(uint256 maxRouterPercent) external {
        require(_msgSender() == _Deployer);
        require(maxRouterPercent > 0, "Amount must be greater than 0");
        _routermax = _tTotal.mul(maxRouterPercent).div(10**4);
    }
    
    function _setTeamFee(uint256 teamFee) external {
        require(_msgSender() == _Deployer);
        require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25');
        _summedTax = teamFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"marketingTaxAddress","type":"address"},{"internalType":"address payable","name":"devfeeAddr","type":"address"},{"internalType":"address payable","name":"depAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxRouterPercent","type":"uint256"}],"name":"setRouterPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620005d4565b6000196200002c91906200063b565b600655600460085560046009556003600a55600a5460095462000050919062000676565b600b556601c6bf52634000600c55674563918244f40000600d556000601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff021916908315150217905550683635c9adc5dea00000601555348015620000d557600080fd5b5060405162004569380380620045698339818101604052810190620000fb91906200073d565b60006200010d6200056a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002ca6200057260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004f16200056a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620005599190620007aa565b60405180910390a3505050620007c7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005e1826200059b565b9150620005ee836200059b565b925082620006015762000600620005a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000648826200059b565b915062000655836200059b565b9250828210156200066b576200066a6200060c565b5b828203905092915050565b600062000683826200059b565b915062000690836200059b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006c857620006c76200060c565b5b828201905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070582620006d8565b9050919050565b6200071781620006f8565b81146200072357600080fd5b50565b60008151905062000737816200070c565b92915050565b600080600060608486031215620007595762000758620006d3565b5b6000620007698682870162000726565b93505060206200077c8682870162000726565b92505060406200078f8682870162000726565b9150509250925092565b620007a4816200059b565b82525050565b6000602082019050620007c1600083018462000799565b92915050565b613d9280620007d76000396000f3fe60806040526004361061014f5760003560e01c806395d89b41116100b6578063cba0e9961161006f578063cba0e9961461044f578063d00efb2f1461048c578063d543dbeb146104b7578063dd62ed3e146104e0578063e01af92c1461051d578063e47d60601461054657610156565b806395d89b4114610367578063a9059cbb14610392578063b515566a146103cf578063c0e6b46e146103f8578063c3c8cd8014610421578063c9567bf91461043857610156565b8063313ce56711610108578063313ce5671461027d5780635932ead1146102a85780636fc3eaec146102d157806370a08231146102e8578063715018a6146103255780638da5cb5b1461033c57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c357806323b872dd146101ee578063273123b71461022b578063286671621461025457610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610583565b60405161017d9190612d25565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612def565b6105c0565b6040516101ba9190612e4a565b60405180910390f35b3480156101cf57600080fd5b506101d86105de565b6040516101e59190612e74565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190612e8f565b6105ef565b6040516102229190612e4a565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612ee2565b6106c8565b005b34801561026057600080fd5b5061027b60048036038101906102769190612f0f565b610784565b005b34801561028957600080fd5b50610292610840565b60405161029f9190612f58565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612f9f565b610849565b005b3480156102dd57600080fd5b506102e66108fb565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612ee2565b61096d565b60405161031c9190612e74565b60405180910390f35b34801561033157600080fd5b5061033a6109be565b005b34801561034857600080fd5b50610351610b11565b60405161035e9190612fdb565b60405180910390f35b34801561037357600080fd5b5061037c610b3a565b6040516103899190612d25565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190612def565b610b77565b6040516103c69190612e4a565b60405180910390f35b3480156103db57600080fd5b506103f660048036038101906103f1919061313e565b610b95565b005b34801561040457600080fd5b5061041f600480360381019061041a9190612f0f565b610c8b565b005b34801561042d57600080fd5b50610436610d68565b005b34801561044457600080fd5b5061044d610de2565b005b34801561045b57600080fd5b5061047660048036038101906104719190612ee2565b6112f8565b6040516104839190612e4a565b60405180910390f35b34801561049857600080fd5b506104a161134e565b6040516104ae9190612e74565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190612f0f565b611354565b005b3480156104ec57600080fd5b5061050760048036038101906105029190613187565b611469565b6040516105149190612e74565b60405180910390f35b34801561052957600080fd5b50610544600480360381019061053f9190612f9f565b6114f0565b005b34801561055257600080fd5b5061056d60048036038101906105689190612ee2565b61156e565b60405161057a9190612e4a565b60405180910390f35b60606040518060400160405280600781526020017f4261675377617000000000000000000000000000000000000000000000000000815250905090565b60006105d46105cd6115c4565b84846115cc565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105fc848484611797565b6106bd846106086115c4565b6106b885604051806060016040528060288152602001613d3560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061066e6115c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205d9092919063ffffffff16565b6115cc565b600190509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107096115c4565b73ffffffffffffffffffffffffffffffffffffffff161461072957600080fd5b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107c56115c4565b73ffffffffffffffffffffffffffffffffffffffff16146107e557600080fd5b600181101580156107f7575060198111155b610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90613213565b60405180910390fd5b80600b8190555050565b60006009905090565b6108516115c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d59061327f565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661093c6115c4565b73ffffffffffffffffffffffffffffffffffffffff161461095c57600080fd5b600047905061096a816120c1565b50565b60006109b7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612271565b9050919050565b6109c66115c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a9061327f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4253574150000000000000000000000000000000000000000000000000000000815250905090565b6000610b8b610b846115c4565b8484611797565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd66115c4565b73ffffffffffffffffffffffffffffffffffffffff1614610bf657600080fd5b60005b8151811015610c87576001600e6000848481518110610c1b57610c1a61329f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c7f906132fd565b915050610bf9565b5050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ccc6115c4565b73ffffffffffffffffffffffffffffffffffffffff1614610cec57600080fd5b60008111610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2690613392565b60405180910390fd5b610d5f612710610d5183683635c9adc5dea000006122df90919063ffffffff16565b61235a90919063ffffffff16565b600d8190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610da96115c4565b73ffffffffffffffffffffffffffffffffffffffff1614610dc957600080fd5b6000610dd43061096d565b9050610ddf816123a4565b50565b610dea6115c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6e9061327f565b60405180910390fd5b60148054906101000a900460ff1615610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc906133fe565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f5530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006115cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc49190613433565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104f9190613433565b6040518363ffffffff1660e01b815260040161106c929190613460565b6020604051808303816000875af115801561108b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110af9190613433565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111383061096d565b600080611143610b11565b426040518863ffffffff1660e01b8152600401611165969594939291906134ce565b60606040518083038185885af1158015611183573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a89190613544565b5050506001601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff02191690831515021790555068015af1d78b58c400006015819055504360168190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112b1929190613597565b6020604051808303816000875af11580156112d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f491906135d5565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60165481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113956115c4565b73ffffffffffffffffffffffffffffffffffffffff16146113b557600080fd5b600081116113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90613392565b60405180910390fd5b611427606461141983683635c9adc5dea000006122df90919063ffffffff16565b61235a90919063ffffffff16565b6015819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf60155460405161145e9190612e74565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115316115c4565b73ffffffffffffffffffffffffffffffffffffffff161461155157600080fd5b80601460166101000a81548160ff02191690831515021790555050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a390613706565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161178a9190612e74565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90613798565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e9061382a565b60405180910390fd5b600081116118ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b1906138bc565b60405180910390fd5b6118c2610b11565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119305750611900610b11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9a57601460179054906101000a900460ff1615611b63573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119b257503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a0c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a665750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b6257601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611aac6115c4565b73ffffffffffffffffffffffffffffffffffffffff161480611b225750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b0a6115c4565b73ffffffffffffffffffffffffffffffffffffffff16145b611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613928565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ba657601554811115611ba557600080fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c4a5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ca05750600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611ca957600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d545750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611daa5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dc25750601460179054906101000a900460ff165b15611e635742600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e1257600080fd5b600f42611e1f9190613948565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000611e6e3061096d565b9050600d548110611e7f57600d5490505b6000600c548210159050601460159054906101000a900460ff16158015611eb25750601460169054906101000a900460ff165b8015611ebb5750805b8015611f155750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f6f5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611f9757611f7d826123a4565b60004790506000811115611f9557611f94476120c1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120415750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561204b57600090505b6120578484848461261d565b50505050565b60008383111582906120a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209c9190612d25565b60405180910390fd5b50600083856120b4919061399e565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121246004612116600b8661235a90919063ffffffff16565b6122df90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561214f573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121b360046121a5600b8661235a90919063ffffffff16565b6122df90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121de573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6122426003612234600b8661235a90919063ffffffff16565b6122df90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561226d573d6000803e3d6000fd5b5050565b60006006548211156122b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122af90613a44565b60405180910390fd5b60006122c261264a565b90506122d7818461235a90919063ffffffff16565b915050919050565b6000808314156122f25760009050612354565b600082846123009190613a64565b905082848261230f9190613aed565b1461234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690613b90565b60405180910390fd5b809150505b92915050565b600061239c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612675565b905092915050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156123dc576123db612ffb565b5b60405190808252806020026020018201604052801561240a5781602001602082028036833780820191505090505b50905030816000815181106124225761242161329f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ed9190613433565b816001815181106125015761250061329f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061256830601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115cc565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125cc959493929190613c6e565b600060405180830381600087803b1580156125e657600080fd5b505af11580156125fa573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b8061262b5761262a6126d8565b5b612636848484612709565b80612644576126436128d4565b5b50505050565b6000806000612657612904565b9150915061266e818361235a90919063ffffffff16565b9250505090565b600080831182906126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b39190612d25565b60405180910390fd5b50600083856126cb9190613aed565b9050809150509392505050565b60006008541480156126ec57506000600b54145b156126f657612707565b60006008819055506000600b819055505b565b60008060008060008061271b87612966565b95509550955095509550955061277986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ce90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061280e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061285a81612a76565b6128648483612b33565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128c19190612e74565b60405180910390a3505050505050505050565b600460088190555060046009819055506003600a81905550600a546009546128fc9190613948565b600b81905550565b600080600060065490506000683635c9adc5dea00000905061293a683635c9adc5dea0000060065461235a90919063ffffffff16565b82101561295957600654683635c9adc5dea00000935093505050612962565b81819350935050505b9091565b60008060008060008060008060006129838a600854600b54612b6d565b925092509250600061299361264a565b905060008060006129a68e878787612c03565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612a1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061205d565b905092915050565b6000808284612a279190613948565b905083811015612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6390613d14565b60405180910390fd5b8091505092915050565b6000612a8061264a565b90506000612a9782846122df90919063ffffffff16565b9050612aeb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b48826006546129ce90919063ffffffff16565b600681905550612b6381600754612a1890919063ffffffff16565b6007819055505050565b600080600080612b996064612b8b888a6122df90919063ffffffff16565b61235a90919063ffffffff16565b90506000612bc36064612bb5888b6122df90919063ffffffff16565b61235a90919063ffffffff16565b90506000612bec82612bde858c6129ce90919063ffffffff16565b6129ce90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612c1c85896122df90919063ffffffff16565b90506000612c3386896122df90919063ffffffff16565b90506000612c4a87896122df90919063ffffffff16565b90506000612c7382612c6585876129ce90919063ffffffff16565b6129ce90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cc6578082015181840152602081019050612cab565b83811115612cd5576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cf782612c8c565b612d018185612c97565b9350612d11818560208601612ca8565b612d1a81612cdb565b840191505092915050565b60006020820190508181036000830152612d3f8184612cec565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d8682612d5b565b9050919050565b612d9681612d7b565b8114612da157600080fd5b50565b600081359050612db381612d8d565b92915050565b6000819050919050565b612dcc81612db9565b8114612dd757600080fd5b50565b600081359050612de981612dc3565b92915050565b60008060408385031215612e0657612e05612d51565b5b6000612e1485828601612da4565b9250506020612e2585828601612dda565b9150509250929050565b60008115159050919050565b612e4481612e2f565b82525050565b6000602082019050612e5f6000830184612e3b565b92915050565b612e6e81612db9565b82525050565b6000602082019050612e896000830184612e65565b92915050565b600080600060608486031215612ea857612ea7612d51565b5b6000612eb686828701612da4565b9350506020612ec786828701612da4565b9250506040612ed886828701612dda565b9150509250925092565b600060208284031215612ef857612ef7612d51565b5b6000612f0684828501612da4565b91505092915050565b600060208284031215612f2557612f24612d51565b5b6000612f3384828501612dda565b91505092915050565b600060ff82169050919050565b612f5281612f3c565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b612f7c81612e2f565b8114612f8757600080fd5b50565b600081359050612f9981612f73565b92915050565b600060208284031215612fb557612fb4612d51565b5b6000612fc384828501612f8a565b91505092915050565b612fd581612d7b565b82525050565b6000602082019050612ff06000830184612fcc565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303382612cdb565b810181811067ffffffffffffffff8211171561305257613051612ffb565b5b80604052505050565b6000613065612d47565b9050613071828261302a565b919050565b600067ffffffffffffffff82111561309157613090612ffb565b5b602082029050602081019050919050565b600080fd5b60006130ba6130b584613076565b61305b565b905080838252602082019050602084028301858111156130dd576130dc6130a2565b5b835b8181101561310657806130f28882612da4565b8452602084019350506020810190506130df565b5050509392505050565b600082601f83011261312557613124612ff6565b5b81356131358482602086016130a7565b91505092915050565b60006020828403121561315457613153612d51565b5b600082013567ffffffffffffffff81111561317257613171612d56565b5b61317e84828501613110565b91505092915050565b6000806040838503121561319e5761319d612d51565b5b60006131ac85828601612da4565b92505060206131bd85828601612da4565b9150509250929050565b7f7465616d4665652073686f756c6420626520696e2031202d2032350000000000600082015250565b60006131fd601b83612c97565b9150613208826131c7565b602082019050919050565b6000602082019050818103600083015261322c816131f0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613269602083612c97565b915061327482613233565b602082019050919050565b600060208201905081810360008301526132988161325c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330882612db9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561333b5761333a6132ce565b5b600182019050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061337c601d83612c97565b915061338782613346565b602082019050919050565b600060208201905081810360008301526133ab8161336f565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006133e8601783612c97565b91506133f3826133b2565b602082019050919050565b60006020820190508181036000830152613417816133db565b9050919050565b60008151905061342d81612d8d565b92915050565b60006020828403121561344957613448612d51565b5b60006134578482850161341e565b91505092915050565b60006040820190506134756000830185612fcc565b6134826020830184612fcc565b9392505050565b6000819050919050565b6000819050919050565b60006134b86134b36134ae84613489565b613493565b612db9565b9050919050565b6134c88161349d565b82525050565b600060c0820190506134e36000830189612fcc565b6134f06020830188612e65565b6134fd60408301876134bf565b61350a60608301866134bf565b6135176080830185612fcc565b61352460a0830184612e65565b979650505050505050565b60008151905061353e81612dc3565b92915050565b60008060006060848603121561355d5761355c612d51565b5b600061356b8682870161352f565b935050602061357c8682870161352f565b925050604061358d8682870161352f565b9150509250925092565b60006040820190506135ac6000830185612fcc565b6135b96020830184612e65565b9392505050565b6000815190506135cf81612f73565b92915050565b6000602082840312156135eb576135ea612d51565b5b60006135f9848285016135c0565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061365e602483612c97565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136f0602283612c97565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613782602583612c97565b915061378d82613726565b604082019050919050565b600060208201905081810360008301526137b181613775565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613814602383612c97565b915061381f826137b8565b604082019050919050565b6000602082019050818103600083015261384381613807565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006138a6602983612c97565b91506138b18261384a565b604082019050919050565b600060208201905081810360008301526138d581613899565b9050919050565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b6000613912601183612c97565b915061391d826138dc565b602082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b600061395382612db9565b915061395e83612db9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613993576139926132ce565b5b828201905092915050565b60006139a982612db9565b91506139b483612db9565b9250828210156139c7576139c66132ce565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a2e602a83612c97565b9150613a39826139d2565b604082019050919050565b60006020820190508181036000830152613a5d81613a21565b9050919050565b6000613a6f82612db9565b9150613a7a83612db9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ab357613ab26132ce565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613af882612db9565b9150613b0383612db9565b925082613b1357613b12613abe565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b7a602183612c97565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613be581612d7b565b82525050565b6000613bf78383613bdc565b60208301905092915050565b6000602082019050919050565b6000613c1b82613bb0565b613c258185613bbb565b9350613c3083613bcc565b8060005b83811015613c61578151613c488882613beb565b9750613c5383613c03565b925050600181019050613c34565b5085935050505092915050565b600060a082019050613c836000830188612e65565b613c9060208301876134bf565b8181036040830152613ca28186613c10565b9050613cb16060830185612fcc565b613cbe6080830184612e65565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cfe601b83612c97565b9150613d0982613cc8565b602082019050919050565b60006020820190508181036000830152613d2d81613cf1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122021c6dda6c1c8c2b029d994728594c657b7ba874efcbf67ee218f3588091f92b164736f6c634300080b0033000000000000000000000000bd3de395f0fe933c44ca628016596e27c6ea8ee4000000000000000000000000de0a076e5c5af8fa9ff39cb21ae27f16d760df670000000000000000000000005ed802d2c81fe592bc544860bcefc254758354fb

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

000000000000000000000000bd3de395f0fe933c44ca628016596e27c6ea8ee4000000000000000000000000de0a076e5c5af8fa9ff39cb21ae27f16d760df670000000000000000000000005ed802d2c81fe592bc544860bcefc254758354fb

-----Decoded View---------------
Arg [0] : marketingTaxAddress (address): 0xbd3de395f0fe933c44ca628016596e27c6ea8ee4
Arg [1] : devfeeAddr (address): 0xde0a076e5c5af8fa9ff39cb21ae27f16d760df67
Arg [2] : depAddr (address): 0x5ed802d2c81fe592bc544860bcefc254758354fb

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000bd3de395f0fe933c44ca628016596e27c6ea8ee4
Arg [1] : 000000000000000000000000de0a076e5c5af8fa9ff39cb21ae27f16d760df67
Arg [2] : 0000000000000000000000005ed802d2c81fe592bc544860bcefc254758354fb


Deployed ByteCode Sourcemap

3852:14910:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6104:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7029:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6381:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7230:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14463:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18548:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6290:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7684:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14057:188;;;;;;;;;;;;;:::i;:::-;;6484:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2804:148;;;;;;;;;;;;;:::i;:::-;;2590:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6195:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6630:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14253:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18285:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13860:189;;;;;;;;;;;;;:::i;:::-;;12682:1016;;;;;;;;;;;;;:::i;:::-;;11552:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5330:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17991:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6837:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13710:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11677:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6104:83;6141:13;6174:5;;;;;;;;;;;;;;;;;6167:12;;6104:83;:::o;7029:193::-;7131:4;7153:39;7162:12;:10;:12::i;:::-;7176:7;7185:6;7153:8;:39::i;:::-;7210:4;7203:11;;7029:193;;;;:::o;6381:95::-;6434:7;4392:21;6454:14;;6381:95;:::o;7230:446::-;7362:4;7379:36;7389:6;7397:9;7408:6;7379:9;:36::i;:::-;7426:220;7449:6;7470:12;:10;:12::i;:::-;7497:138;7553:6;7497:138;;;;;;;;;;;;;;;;;:11;:19;7509:6;7497:19;;;;;;;;;;;;;;;:33;7517:12;:10;:12::i;:::-;7497:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7426:8;:220::i;:::-;7664:4;7657:11;;7230:446;;;;;:::o;14463:123::-;14537:9;;;;;;;;;;;14521:25;;:12;:10;:12::i;:::-;:25;;;14513:34;;;;;;14573:5;14558:4;:12;14563:6;14558:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14463:123;:::o;18548:211::-;18630:9;;;;;;;;;;;18614:25;;:12;:10;:12::i;:::-;:25;;;18606:34;;;;;;18670:1;18659:7;:12;;:29;;;;;18686:2;18675:7;:13;;18659:29;18651:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18744:7;18731:10;:20;;;;18548:211;:::o;6290:83::-;6331:5;4068:1;6349:16;;6290:83;:::o;7684:103::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7774:5:::1;7756:15;;:23;;;;;;;;;;;;;;;;;;7684:103:::0;:::o;14057:188::-;14123:9;;;;;;;;;;;14107:25;;:12;:10;:12::i;:::-;:25;;;14099:34;;;;;;14144:26;14173:21;14144:50;;14205:32;14218:18;14205:12;:32::i;:::-;14088:157;14057:188::o;6484:138::-;6550:7;6577:37;6597:7;:16;6605:7;6597:16;;;;;;;;;;;;;;;;6577:19;:37::i;:::-;6570:44;;6484:138;;;:::o;2804:148::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2911:1:::1;2874:40;;2895:6;::::0;::::1;;;;;;;;2874:40;;;;;;;;;;;;2942:1;2925:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2804:148::o:0;2590:79::-;2628:7;2655:6;;;;;;;;;;;2648:13;;2590:79;:::o;6195:87::-;6234:13;6267:7;;;;;;;;;;;;;;;;;6260:14;;6195:87;:::o;6630:199::-;6735:4;6757:42;6767:12;:10;:12::i;:::-;6781:9;6792:6;6757:9;:42::i;:::-;6817:4;6810:11;;6630:199;;;;:::o;14253:202::-;14336:9;;;;;;;;;;;14320:25;;:12;:10;:12::i;:::-;:25;;;14312:34;;;;;;14362:9;14357:91;14381:5;:12;14377:1;:16;14357:91;;;14432:4;14415;:14;14420:5;14426:1;14420:8;;;;;;;;:::i;:::-;;;;;;;;14415:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14395:3;;;;;:::i;:::-;;;;14357:91;;;;14253:202;:::o;18285:251::-;18381:9;;;;;;;;;;;18365:25;;:12;:10;:12::i;:::-;:25;;;18357:34;;;;;;18429:1;18410:16;:20;18402:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18488:40;18522:5;18488:29;18500:16;4392:21;18488:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;18475:10;:53;;;;18285:251;:::o;13860:189::-;13926:9;;;;;;;;;;;13910:25;;:12;:10;:12::i;:::-;:25;;;13902:34;;;;;;13947:23;13973:24;13991:4;13973:9;:24::i;:::-;13947:50;;14008:33;14025:15;14008:16;:33::i;:::-;13891:158;13860:189::o;12682:1016::-;2727:12;:10;:12::i;:::-;2717:22;;:6;;;;;;;;;;:22;;;2709:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12746:11:::1;::::0;::::1;;;;;;;;12745:12;12737:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12796:35;12866:42;12796:113;;12938:16;12920:15;;:34;;;;;;;;;;;;;;;;;;12965:58;12982:4;12997:15;;;;;;;;;;;4392:21;12965:8;:58::i;:::-;13068:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13050:70;;;13129:4;13136:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13050:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13034:13;;:126;;;;;;;;;;;;;;;;;;13171:15;;;;;;;;;;;:31;;;13210:21;13255:4;13275:24;13293:4;13275:9;:24::i;:::-;13314:1;13330::::0;13346:7:::1;:5;:7::i;:::-;13368:15;13171:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13419:4;13405:11;;:18;;;;;;;;;;;;;;;;;;13452:5;13434:15;;:23;;;;;;;;;;;;;;;;;;13483:19;13468:12;:34;;;;13527:12;13513:11;:26;;;;13564:4;13550:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;13586:13;;;;;;;;;;;13579:29;;;13631:15;;;;;;;;;;;13662:17;13579:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12726:972;12682:1016::o:0;11552:117::-;11610:4;11634:18;:27;11653:7;11634:27;;;;;;;;;;;;;;;;;;;;;;;;;11627:34;;11552:117;;;:::o;5330:26::-;;;;:::o;17991:288::-;18082:9;;;;;;;;;;;18066:25;;:12;:10;:12::i;:::-;:25;;;18058:34;;;;;;18126:1;18111:12;:16;18103:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18187:36;18217:5;18187:25;18199:12;4392:21;18187:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;18172:12;:51;;;;18239:32;18258:12;;18239:32;;;;;;:::i;:::-;;;;;;;;17991:288;:::o;6837:184::-;6954:7;6986:11;:18;6998:5;6986:18;;;;;;;;;;;;;;;:27;7005:7;6986:27;;;;;;;;;;;;;;;;6979:34;;6837:184;;;;:::o;13710:132::-;13792:9;;;;;;;;;;;13776:25;;:12;:10;:12::i;:::-;:25;;;13768:34;;;;;;13827:7;13813:11;;:21;;;;;;;;;;;;;;;;;;13710:132;:::o;11677:106::-;11738:4;11762;:13;11767:7;11762:13;;;;;;;;;;;;;;;;;;;;;;;;;11755:20;;11677:106;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;8445:369::-;8589:1;8572:19;;:5;:19;;;;8564:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8670:1;8651:21;;:7;:21;;;;8643:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8752:6;8722:11;:18;8734:5;8722:18;;;;;;;;;;;;;;;:27;8741:7;8722:27;;;;;;;;;;;;;;;:36;;;;8790:7;8774:32;;8783:5;8774:32;;;8799:6;8774:32;;;;;;:::i;:::-;;;;;;;;8445:369;;;:::o;8822:2722::-;8960:1;8944:18;;:4;:18;;;;8936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9037:1;9023:16;;:2;:16;;;;9015:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9107:1;9098:6;:10;9090:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9187:7;:5;:7::i;:::-;9179:15;;:4;:15;;;;:32;;;;;9204:7;:5;:7::i;:::-;9198:13;;:2;:13;;;;9179:32;9175:2168;;;9232:15;;;;;;;;;;;9228:526;;;9310:4;9294:21;;:4;:21;;;;:65;;;;;9354:4;9340:19;;:2;:19;;;;9294:65;:122;;;;;9400:15;;;;;;;;;;;9384:32;;:4;:32;;;;9294:122;:177;;;;;9455:15;;;;;;;;;;;9441:30;;:2;:30;;;;9294:177;9268:471;;;9572:15;;;;;;;;;;;9548:40;;:12;:10;:12::i;:::-;:40;;;:102;;;;9637:13;;;;;;;;;;;9621:29;;:12;:10;:12::i;:::-;:29;;;9548:102;9514:205;;;;;;;;;;;;:::i;:::-;;;;;;;;;9268:471;9228:526;9787:4;9771:21;;:4;:21;;;9768:91;;9830:12;;9820:6;:22;;9812:31;;;;;;9768:91;9882:4;:10;9887:4;9882:10;;;;;;;;;;;;;;;;;;;;;;;;;9881:11;:24;;;;;9897:4;:8;9902:2;9897:8;;;;;;;;;;;;;;;;;;;;;;;;;9896:9;9881:24;:45;;;;;9910:4;:16;9915:10;9910:16;;;;;;;;;;;;;;;;;;;;;;;;;9909:17;9881:45;9873:54;;;;;;9974:13;;;;;;;;;;;9966:21;;:4;:21;;;:72;;;;;10022:15;;;;;;;;;;;10008:30;;:2;:30;;;;9966:72;:116;;;;;10060:18;:22;10079:2;10060:22;;;;;;;;;;;;;;;;;;;;;;;;;10059:23;9966:116;:152;;;;;10103:15;;;;;;;;;;;9966:152;9944:328;;;10176:15;10161:8;:12;10170:2;10161:12;;;;;;;;;;;;;;;;:30;10153:39;;;;;;10245:10;10226:15;:30;;;;:::i;:::-;10211:8;:12;10220:2;10211:12;;;;;;;;;;;;;;;:45;;;;9944:328;10520:28;10551:24;10569:4;10551:9;:24::i;:::-;10520:55;;10631:10;;10607:20;:34;10604:120;;10698:10;;10675:33;;10604:120;10738:24;10789:29;;10765:20;:53;;10738:80;;10838:6;;;;;;;;;;;10837:7;:22;;;;;10848:11;;;;;;;;;;;10837:22;:45;;;;;10863:19;10837:45;:70;;;;;10894:13;;;;;;;;;;;10886:21;;:4;:21;;;;10837:70;:106;;;;;10927:15;;;;;;;;;;;10911:32;;:4;:32;;;;10837:106;10833:499;;;11068:38;11085:20;11068:16;:38::i;:::-;11143:26;11172:21;11143:50;;11236:1;11215:18;:22;11212:105;;;11262:35;11275:21;11262:12;:35::i;:::-;11212:105;10959:373;10833:499;9213:2130;;9175:2168;11353:12;11368:4;11353:19;;11389:18;:24;11408:4;11389:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11417:18;:22;11436:2;11417:22;;;;;;;;;;;;;;;;;;;;;;;;;11389:50;11385:98;;;11466:5;11456:15;;11385:98;11495:41;11510:4;11516:2;11520:6;11528:7;11495:14;:41::i;:::-;8925:2619;8822:2722;;;:::o;1355:224::-;1475:7;1508:1;1503;:6;;1511:12;1495:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1535:9;1551:1;1547;:5;;;;:::i;:::-;1535:17;;1570:1;1563:8;;;1355:224;;;;;:::o;12451:223::-;12508:14;;;;;;;;;;;:23;;:46;12532:21;12551:1;12532:14;12543:2;12532:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;12508:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12565:17;;;;;;;;;;;:26;;:49;12592:21;12611:1;12592:14;12603:2;12592:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;12565:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12625:9;;;;;;;;;;;:18;;:41;12644:21;12663:1;12644:14;12655:2;12644:6;:10;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;12625:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12451:223;:::o;7795:323::-;7890:7;7948;;7937;:18;;7915:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8036:19;8058:10;:8;:10::i;:::-;8036:32;;8086:24;8098:11;8086:7;:11;;:24;;;;:::i;:::-;8079:31;;;7795:323;;;:::o;1587:246::-;1645:7;1674:1;1669;:6;1665:47;;;1699:1;1692:8;;;;1665:47;1722:9;1738:1;1734;:5;;;;:::i;:::-;1722:17;;1767:1;1762;1758;:5;;;;:::i;:::-;:10;1750:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1824:1;1817:8;;;1587:246;;;;;:::o;1841:132::-;1899:7;1926:39;1930:1;1933;1926:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1919:46;;1841:132;;;;:::o;11791:652::-;5459:4;5450:6;;:13;;;;;;;;;;;;;;;;;;11936:21:::1;11974:1;11960:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11936:40;;12009:4;11991;11996:1;11991:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12039:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12029:4;12034:1;12029:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12078:62;12095:4;12110:15;;;;;;;;;;;12128:11;12078:8;:62::i;:::-;12187:15;;;;;;;;;;;:66;;;12272:11;12302:1;12350:4;12381;12405:15;12187:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11857:586;5495:5:::0;5486:6;;:14;;;;;;;;;;;;;;;;;;11791:652;:::o;14594:282::-;14750:7;14745:28;;14759:14;:12;:14::i;:::-;14745:28;14784:44;14802:6;14810:9;14821:6;14784:17;:44::i;:::-;14844:7;14839:29;;14853:15;:13;:15::i;:::-;14839:29;14594:282;;;;:::o;17554:164::-;17596:7;17617:15;17634;17653:19;:17;:19::i;:::-;17616:56;;;;17690:20;17702:7;17690;:11;;:20;;;;:::i;:::-;17683:27;;;;17554:164;:::o;1981:223::-;2101:7;2133:1;2129;:5;2136:12;2121:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2160:9;2176:1;2172;:5;;;;:::i;:::-;2160:17;;2195:1;2188:8;;;1981:223;;;;;:::o;8126:141::-;8184:1;8173:7;;:12;:31;;;;;8203:1;8189:10;;:15;8173:31;8169:44;;;8206:7;;8169:44;8233:1;8223:7;:11;;;;8258:1;8245:10;:14;;;;8126:141;:::o;14884:610::-;15031:15;15061:23;15099:12;15126:23;15164:12;15191:13;15218:19;15229:7;15218:10;:19::i;:::-;15016:221;;;;;;;;;;;;15266:28;15286:7;15266;:15;15274:6;15266:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;15248:7;:15;15256:6;15248:15;;;;;;;;;;;;;;;:46;;;;15326:39;15349:15;15326:7;:18;15334:9;15326:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;15305:7;:18;15313:9;15305:18;;;;;;;;;;;;;;;:60;;;;15376:16;15386:5;15376:9;:16::i;:::-;15403:23;15415:4;15421;15403:11;:23::i;:::-;15459:9;15442:44;;15451:6;15442:44;;;15470:15;15442:44;;;;;;:::i;:::-;;;;;;;;15005:489;;;;;;14884:610;;;:::o;8275:162::-;8329:1;8319:7;:11;;;;8357:1;8341:13;:17;;;;8381:1;8369:9;:13;;;;8420:9;;8406:13;;:23;;;;:::i;:::-;8393:10;:36;;;;8275:162::o;17726:257::-;17777:7;17786;17806:15;17824:7;;17806:25;;17842:15;4392:21;17842:25;;17892:20;4392:21;17892:7;;:11;;:20;;;;:::i;:::-;17882:7;:30;17878:61;;;17922:7;;4392:21;17914:25;;;;;;;;17878:61;17958:7;17967;17950:25;;;;;;17726:257;;;:::o;15913:616::-;16013:7;16035;16057;16079;16101;16123;16159:23;16184:12;16198:13;16228:41;16240:7;16249;;16258:10;;16228:11;:41::i;:::-;16158:111;;;;;;16280:19;16302:10;:8;:10::i;:::-;16280:32;;16324:15;16341:23;16366:12;16395:46;16407:7;16416:4;16422:5;16429:11;16395;:46::i;:::-;16323:118;;;;;;16460:7;16469:15;16486:4;16492:15;16509:4;16515:5;16452:69;;;;;;;;;;;;;;;;;;;15913:616;;;;;;;:::o;1211:136::-;1269:7;1296:43;1300:1;1303;1296:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1289:50;;1211:136;;;;:::o;1024:179::-;1082:7;1102:9;1118:1;1114;:5;;;;:::i;:::-;1102:17;;1143:1;1138;:6;;1130:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1194:1;1187:8;;;1024:179;;;;:::o;15502:211::-;15555:19;15577:10;:8;:10::i;:::-;15555:32;;15598:13;15614:22;15624:11;15614:5;:9;;:22;;;;:::i;:::-;15598:38;;15672:33;15699:5;15672:7;:22;15688:4;15672:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15647:7;:22;15663:4;15647:22;;;;;;;;;;;;;;;:58;;;;15544:169;;15502:211;:::o;15721:147::-;15799:17;15811:4;15799:7;;:11;;:17;;;;:::i;:::-;15789:7;:27;;;;15840:20;15855:4;15840:10;;:14;;:20;;;;:::i;:::-;15827:10;:33;;;;15721:147;;:::o;16537:467::-;16705:7;16727;16749;16784:12;16799:28;16823:3;16799:19;16811:6;16799:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16784:43;;16838:13;16854:29;16879:3;16854:20;16866:7;16854;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;16838:45;;16894:23;16920:28;16942:5;16920:17;16932:4;16920:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16894:54;;16967:15;16984:4;16990:5;16959:37;;;;;;;;;16537:467;;;;;;;:::o;17012:534::-;17206:7;17228;17250;17285:15;17303:24;17315:11;17303:7;:11;;:24;;;;:::i;:::-;17285:42;;17338:12;17353:21;17362:11;17353:4;:8;;:21;;;;:::i;:::-;17338:36;;17385:13;17401:22;17411:11;17401:5;:9;;:22;;;;:::i;:::-;17385:38;;17434:23;17460:28;17482:5;17460:17;17472:4;17460:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17434:54;;17507:7;17516:15;17533:4;17499:39;;;;;;;;;;17012:534;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:116::-;5641:21;5656:5;5641:21;:::i;:::-;5634:5;5631:32;5621:60;;5677:1;5674;5667:12;5621:60;5571:116;:::o;5693:133::-;5736:5;5774:6;5761:20;5752:29;;5790:30;5814:5;5790:30;:::i;:::-;5693:133;;;;:::o;5832:323::-;5888:6;5937:2;5925:9;5916:7;5912:23;5908:32;5905:119;;;5943:79;;:::i;:::-;5905:119;6063:1;6088:50;6130:7;6121:6;6110:9;6106:22;6088:50;:::i;:::-;6078:60;;6034:114;5832:323;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:117::-;6622:1;6619;6612:12;6636:180;6684:77;6681:1;6674:88;6781:4;6778:1;6771:15;6805:4;6802:1;6795:15;6822:281;6905:27;6927:4;6905:27;:::i;:::-;6897:6;6893:40;7035:6;7023:10;7020:22;6999:18;6987:10;6984:34;6981:62;6978:88;;;7046:18;;:::i;:::-;6978:88;7086:10;7082:2;7075:22;6865:238;6822:281;;:::o;7109:129::-;7143:6;7170:20;;:::i;:::-;7160:30;;7199:33;7227:4;7219:6;7199:33;:::i;:::-;7109:129;;;:::o;7244:311::-;7321:4;7411:18;7403:6;7400:30;7397:56;;;7433:18;;:::i;:::-;7397:56;7483:4;7475:6;7471:17;7463:25;;7543:4;7537;7533:15;7525:23;;7244:311;;;:::o;7561:117::-;7670:1;7667;7660:12;7701:710;7797:5;7822:81;7838:64;7895:6;7838:64;:::i;:::-;7822:81;:::i;:::-;7813:90;;7923:5;7952:6;7945:5;7938:21;7986:4;7979:5;7975:16;7968:23;;8039:4;8031:6;8027:17;8019:6;8015:30;8068:3;8060:6;8057:15;8054:122;;;8087:79;;:::i;:::-;8054:122;8202:6;8185:220;8219:6;8214:3;8211:15;8185:220;;;8294:3;8323:37;8356:3;8344:10;8323:37;:::i;:::-;8318:3;8311:50;8390:4;8385:3;8381:14;8374:21;;8261:144;8245:4;8240:3;8236:14;8229:21;;8185:220;;;8189:21;7803:608;;7701:710;;;;;:::o;8434:370::-;8505:5;8554:3;8547:4;8539:6;8535:17;8531:27;8521:122;;8562:79;;:::i;:::-;8521:122;8679:6;8666:20;8704:94;8794:3;8786:6;8779:4;8771:6;8767:17;8704:94;:::i;:::-;8695:103;;8511:293;8434:370;;;;:::o;8810:539::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9097:1;9086:9;9082:17;9069:31;9127:18;9119:6;9116:30;9113:117;;;9149:79;;:::i;:::-;9113:117;9254:78;9324:7;9315:6;9304:9;9300:22;9254:78;:::i;:::-;9244:88;;9040:302;8810:539;;;;:::o;9355:474::-;9423:6;9431;9480:2;9468:9;9459:7;9455:23;9451:32;9448:119;;;9486:79;;:::i;:::-;9448:119;9606:1;9631:53;9676:7;9667:6;9656:9;9652:22;9631:53;:::i;:::-;9621:63;;9577:117;9733:2;9759:53;9804:7;9795:6;9784:9;9780:22;9759:53;:::i;:::-;9749:63;;9704:118;9355:474;;;;;:::o;9835:177::-;9975:29;9971:1;9963:6;9959:14;9952:53;9835:177;:::o;10018:366::-;10160:3;10181:67;10245:2;10240:3;10181:67;:::i;:::-;10174:74;;10257:93;10346:3;10257:93;:::i;:::-;10375:2;10370:3;10366:12;10359:19;;10018:366;;;:::o;10390:419::-;10556:4;10594:2;10583:9;10579:18;10571:26;;10643:9;10637:4;10633:20;10629:1;10618:9;10614:17;10607:47;10671:131;10797:4;10671:131;:::i;:::-;10663:139;;10390:419;;;:::o;10815:182::-;10955:34;10951:1;10943:6;10939:14;10932:58;10815:182;:::o;11003:366::-;11145:3;11166:67;11230:2;11225:3;11166:67;:::i;:::-;11159:74;;11242:93;11331:3;11242:93;:::i;:::-;11360:2;11355:3;11351:12;11344:19;;11003:366;;;:::o;11375:419::-;11541:4;11579:2;11568:9;11564:18;11556:26;;11628:9;11622:4;11618:20;11614:1;11603:9;11599:17;11592:47;11656:131;11782:4;11656:131;:::i;:::-;11648:139;;11375:419;;;:::o;11800:180::-;11848:77;11845:1;11838:88;11945:4;11942:1;11935:15;11969:4;11966:1;11959:15;11986:180;12034:77;12031:1;12024:88;12131:4;12128:1;12121:15;12155:4;12152:1;12145:15;12172:233;12211:3;12234:24;12252:5;12234:24;:::i;:::-;12225:33;;12280:66;12273:5;12270:77;12267:103;;;12350:18;;:::i;:::-;12267:103;12397:1;12390:5;12386:13;12379:20;;12172:233;;;:::o;12411:179::-;12551:31;12547:1;12539:6;12535:14;12528:55;12411:179;:::o;12596:366::-;12738:3;12759:67;12823:2;12818:3;12759:67;:::i;:::-;12752:74;;12835:93;12924:3;12835:93;:::i;:::-;12953:2;12948:3;12944:12;12937:19;;12596:366;;;:::o;12968:419::-;13134:4;13172:2;13161:9;13157:18;13149:26;;13221:9;13215:4;13211:20;13207:1;13196:9;13192:17;13185:47;13249:131;13375:4;13249:131;:::i;:::-;13241:139;;12968:419;;;:::o;13393:173::-;13533:25;13529:1;13521:6;13517:14;13510:49;13393:173;:::o;13572:366::-;13714:3;13735:67;13799:2;13794:3;13735:67;:::i;:::-;13728:74;;13811:93;13900:3;13811:93;:::i;:::-;13929:2;13924:3;13920:12;13913:19;;13572:366;;;:::o;13944:419::-;14110:4;14148:2;14137:9;14133:18;14125:26;;14197:9;14191:4;14187:20;14183:1;14172:9;14168:17;14161:47;14225:131;14351:4;14225:131;:::i;:::-;14217:139;;13944:419;;;:::o;14369:143::-;14426:5;14457:6;14451:13;14442:22;;14473:33;14500:5;14473:33;:::i;:::-;14369:143;;;;:::o;14518:351::-;14588:6;14637:2;14625:9;14616:7;14612:23;14608:32;14605:119;;;14643:79;;:::i;:::-;14605:119;14763:1;14788:64;14844:7;14835:6;14824:9;14820:22;14788:64;:::i;:::-;14778:74;;14734:128;14518:351;;;;:::o;14875:332::-;14996:4;15034:2;15023:9;15019:18;15011:26;;15047:71;15115:1;15104:9;15100:17;15091:6;15047:71;:::i;:::-;15128:72;15196:2;15185:9;15181:18;15172:6;15128:72;:::i;:::-;14875:332;;;;;:::o;15213:85::-;15258:7;15287:5;15276:16;;15213:85;;;:::o;15304:60::-;15332:3;15353:5;15346:12;;15304:60;;;:::o;15370:158::-;15428:9;15461:61;15479:42;15488:32;15514:5;15488:32;:::i;:::-;15479:42;:::i;:::-;15461:61;:::i;:::-;15448:74;;15370:158;;;:::o;15534:147::-;15629:45;15668:5;15629:45;:::i;:::-;15624:3;15617:58;15534:147;;:::o;15687:807::-;15936:4;15974:3;15963:9;15959:19;15951:27;;15988:71;16056:1;16045:9;16041:17;16032:6;15988:71;:::i;:::-;16069:72;16137:2;16126:9;16122:18;16113:6;16069:72;:::i;:::-;16151:80;16227:2;16216:9;16212:18;16203:6;16151:80;:::i;:::-;16241;16317:2;16306:9;16302:18;16293:6;16241:80;:::i;:::-;16331:73;16399:3;16388:9;16384:19;16375:6;16331:73;:::i;:::-;16414;16482:3;16471:9;16467:19;16458:6;16414:73;:::i;:::-;15687:807;;;;;;;;;:::o;16500:143::-;16557:5;16588:6;16582:13;16573:22;;16604:33;16631:5;16604:33;:::i;:::-;16500:143;;;;:::o;16649:663::-;16737:6;16745;16753;16802:2;16790:9;16781:7;16777:23;16773:32;16770:119;;;16808:79;;:::i;:::-;16770:119;16928:1;16953:64;17009:7;17000:6;16989:9;16985:22;16953:64;:::i;:::-;16943:74;;16899:128;17066:2;17092:64;17148:7;17139:6;17128:9;17124:22;17092:64;:::i;:::-;17082:74;;17037:129;17205:2;17231:64;17287:7;17278:6;17267:9;17263:22;17231:64;:::i;:::-;17221:74;;17176:129;16649:663;;;;;:::o;17318:332::-;17439:4;17477:2;17466:9;17462:18;17454:26;;17490:71;17558:1;17547:9;17543:17;17534:6;17490:71;:::i;:::-;17571:72;17639:2;17628:9;17624:18;17615:6;17571:72;:::i;:::-;17318:332;;;;;:::o;17656:137::-;17710:5;17741:6;17735:13;17726:22;;17757:30;17781:5;17757:30;:::i;:::-;17656:137;;;;:::o;17799:345::-;17866:6;17915:2;17903:9;17894:7;17890:23;17886:32;17883:119;;;17921:79;;:::i;:::-;17883:119;18041:1;18066:61;18119:7;18110:6;18099:9;18095:22;18066:61;:::i;:::-;18056:71;;18012:125;17799:345;;;;:::o;18150:223::-;18290:34;18286:1;18278:6;18274:14;18267:58;18359:6;18354:2;18346:6;18342:15;18335:31;18150:223;:::o;18379:366::-;18521:3;18542:67;18606:2;18601:3;18542:67;:::i;:::-;18535:74;;18618:93;18707:3;18618:93;:::i;:::-;18736:2;18731:3;18727:12;18720:19;;18379:366;;;:::o;18751:419::-;18917:4;18955:2;18944:9;18940:18;18932:26;;19004:9;18998:4;18994:20;18990:1;18979:9;18975:17;18968:47;19032:131;19158:4;19032:131;:::i;:::-;19024:139;;18751:419;;;:::o;19176:221::-;19316:34;19312:1;19304:6;19300:14;19293:58;19385:4;19380:2;19372:6;19368:15;19361:29;19176:221;:::o;19403:366::-;19545:3;19566:67;19630:2;19625:3;19566:67;:::i;:::-;19559:74;;19642:93;19731:3;19642:93;:::i;:::-;19760:2;19755:3;19751:12;19744:19;;19403:366;;;:::o;19775:419::-;19941:4;19979:2;19968:9;19964:18;19956:26;;20028:9;20022:4;20018:20;20014:1;20003:9;19999:17;19992:47;20056:131;20182:4;20056:131;:::i;:::-;20048:139;;19775:419;;;:::o;20200:224::-;20340:34;20336:1;20328:6;20324:14;20317:58;20409:7;20404:2;20396:6;20392:15;20385:32;20200:224;:::o;20430:366::-;20572:3;20593:67;20657:2;20652:3;20593:67;:::i;:::-;20586:74;;20669:93;20758:3;20669:93;:::i;:::-;20787:2;20782:3;20778:12;20771:19;;20430:366;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:222::-;21367:34;21363:1;21355:6;21351:14;21344:58;21436:5;21431:2;21423:6;21419:15;21412:30;21227:222;:::o;21455:366::-;21597:3;21618:67;21682:2;21677:3;21618:67;:::i;:::-;21611:74;;21694:93;21783:3;21694:93;:::i;:::-;21812:2;21807:3;21803:12;21796:19;;21455:366;;;:::o;21827:419::-;21993:4;22031:2;22020:9;22016:18;22008:26;;22080:9;22074:4;22070:20;22066:1;22055:9;22051:17;22044:47;22108:131;22234:4;22108:131;:::i;:::-;22100:139;;21827:419;;;:::o;22252:228::-;22392:34;22388:1;22380:6;22376:14;22369:58;22461:11;22456:2;22448:6;22444:15;22437:36;22252:228;:::o;22486:366::-;22628:3;22649:67;22713:2;22708:3;22649:67;:::i;:::-;22642:74;;22725:93;22814:3;22725:93;:::i;:::-;22843:2;22838:3;22834:12;22827:19;;22486:366;;;:::o;22858:419::-;23024:4;23062:2;23051:9;23047:18;23039:26;;23111:9;23105:4;23101:20;23097:1;23086:9;23082:17;23075:47;23139:131;23265:4;23139:131;:::i;:::-;23131:139;;22858:419;;;:::o;23283:167::-;23423:19;23419:1;23411:6;23407:14;23400:43;23283:167;:::o;23456:366::-;23598:3;23619:67;23683:2;23678:3;23619:67;:::i;:::-;23612:74;;23695:93;23784:3;23695:93;:::i;:::-;23813:2;23808:3;23804:12;23797:19;;23456:366;;;:::o;23828:419::-;23994:4;24032:2;24021:9;24017:18;24009:26;;24081:9;24075:4;24071:20;24067:1;24056:9;24052:17;24045:47;24109:131;24235:4;24109:131;:::i;:::-;24101:139;;23828:419;;;:::o;24253:305::-;24293:3;24312:20;24330:1;24312:20;:::i;:::-;24307:25;;24346:20;24364:1;24346:20;:::i;:::-;24341:25;;24500:1;24432:66;24428:74;24425:1;24422:81;24419:107;;;24506:18;;:::i;:::-;24419:107;24550:1;24547;24543:9;24536:16;;24253:305;;;;:::o;24564:191::-;24604:4;24624:20;24642:1;24624:20;:::i;:::-;24619:25;;24658:20;24676:1;24658:20;:::i;:::-;24653:25;;24697:1;24694;24691:8;24688:34;;;24702:18;;:::i;:::-;24688:34;24747:1;24744;24740:9;24732:17;;24564:191;;;;:::o;24761:229::-;24901:34;24897:1;24889:6;24885:14;24878:58;24970:12;24965:2;24957:6;24953:15;24946:37;24761:229;:::o;24996:366::-;25138:3;25159:67;25223:2;25218:3;25159:67;:::i;:::-;25152:74;;25235:93;25324:3;25235:93;:::i;:::-;25353:2;25348:3;25344:12;25337:19;;24996:366;;;:::o;25368:419::-;25534:4;25572:2;25561:9;25557:18;25549:26;;25621:9;25615:4;25611:20;25607:1;25596:9;25592:17;25585:47;25649:131;25775:4;25649:131;:::i;:::-;25641:139;;25368:419;;;:::o;25793:348::-;25833:7;25856:20;25874:1;25856:20;:::i;:::-;25851:25;;25890:20;25908:1;25890:20;:::i;:::-;25885:25;;26078:1;26010:66;26006:74;26003:1;26000:81;25995:1;25988:9;25981:17;25977:105;25974:131;;;26085:18;;:::i;:::-;25974:131;26133:1;26130;26126:9;26115:20;;25793:348;;;;:::o;26147:180::-;26195:77;26192:1;26185:88;26292:4;26289:1;26282:15;26316:4;26313:1;26306:15;26333:185;26373:1;26390:20;26408:1;26390:20;:::i;:::-;26385:25;;26424:20;26442:1;26424:20;:::i;:::-;26419:25;;26463:1;26453:35;;26468:18;;:::i;:::-;26453:35;26510:1;26507;26503:9;26498:14;;26333:185;;;;:::o;26524:220::-;26664:34;26660:1;26652:6;26648:14;26641:58;26733:3;26728:2;26720:6;26716:15;26709:28;26524:220;:::o;26750:366::-;26892:3;26913:67;26977:2;26972:3;26913:67;:::i;:::-;26906:74;;26989:93;27078:3;26989:93;:::i;:::-;27107:2;27102:3;27098:12;27091:19;;26750:366;;;:::o;27122:419::-;27288:4;27326:2;27315:9;27311:18;27303:26;;27375:9;27369:4;27365:20;27361:1;27350:9;27346:17;27339:47;27403:131;27529:4;27403:131;:::i;:::-;27395:139;;27122:419;;;:::o;27547:114::-;27614:6;27648:5;27642:12;27632:22;;27547:114;;;:::o;27667:184::-;27766:11;27800:6;27795:3;27788:19;27840:4;27835:3;27831:14;27816:29;;27667:184;;;;:::o;27857:132::-;27924:4;27947:3;27939:11;;27977:4;27972:3;27968:14;27960:22;;27857:132;;;:::o;27995:108::-;28072:24;28090:5;28072:24;:::i;:::-;28067:3;28060:37;27995:108;;:::o;28109:179::-;28178:10;28199:46;28241:3;28233:6;28199:46;:::i;:::-;28277:4;28272:3;28268:14;28254:28;;28109:179;;;;:::o;28294:113::-;28364:4;28396;28391:3;28387:14;28379:22;;28294:113;;;:::o;28443:732::-;28562:3;28591:54;28639:5;28591:54;:::i;:::-;28661:86;28740:6;28735:3;28661:86;:::i;:::-;28654:93;;28771:56;28821:5;28771:56;:::i;:::-;28850:7;28881:1;28866:284;28891:6;28888:1;28885:13;28866:284;;;28967:6;28961:13;28994:63;29053:3;29038:13;28994:63;:::i;:::-;28987:70;;29080:60;29133:6;29080:60;:::i;:::-;29070:70;;28926:224;28913:1;28910;28906:9;28901:14;;28866:284;;;28870:14;29166:3;29159:10;;28567:608;;;28443:732;;;;:::o;29181:831::-;29444:4;29482:3;29471:9;29467:19;29459:27;;29496:71;29564:1;29553:9;29549:17;29540:6;29496:71;:::i;:::-;29577:80;29653:2;29642:9;29638:18;29629:6;29577:80;:::i;:::-;29704:9;29698:4;29694:20;29689:2;29678:9;29674:18;29667:48;29732:108;29835:4;29826:6;29732:108;:::i;:::-;29724:116;;29850:72;29918:2;29907:9;29903:18;29894:6;29850:72;:::i;:::-;29932:73;30000:3;29989:9;29985:19;29976:6;29932:73;:::i;:::-;29181:831;;;;;;;;:::o;30018:177::-;30158:29;30154:1;30146:6;30142:14;30135:53;30018:177;:::o;30201:366::-;30343:3;30364:67;30428:2;30423:3;30364:67;:::i;:::-;30357:74;;30440:93;30529:3;30440:93;:::i;:::-;30558:2;30553:3;30549:12;30542:19;;30201:366;;;:::o;30573:419::-;30739:4;30777:2;30766:9;30762:18;30754:26;;30826:9;30820:4;30816:20;30812:1;30801:9;30797:17;30790:47;30854:131;30980:4;30854:131;:::i;:::-;30846:139;;30573:419;;;:::o

Swarm Source

ipfs://21c6dda6c1c8c2b029d994728594c657b7ba874efcbf67ee218f3588091f92b1

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