ETH Price: $2,830.15 (-7.32%)
Gas: 8 Gwei

Token

Qfora (QUROZ)
 

Overview

Max Total Supply

1,200,000,000 QUROZ

Holders

1,552

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
flytsetse.eth
Balance
8 QUROZ

Value
$0.00
0xd7a4967a0f453ca2e1e61027d1cd754591dc7452
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
QUROZ

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-11
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.5;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function owner() public view virtual 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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract Freezable is Context {
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);

    mapping(address => bool) private _frozenAccount;

    modifier whenNotFrozen(address holder) {
        require(!_frozenAccount[holder]);
        _;
    }

    function isFrozen(address holder) public view virtual returns (bool frozen) {
        return _frozenAccount[holder];
    }

    function _freezeAccount(address holder) internal virtual returns (bool success) {
        require(!isFrozen(holder));
        _frozenAccount[holder] = true;
        emit Freeze(holder);
        success = true;
    }

    function _unfreezeAccount(address holder) internal virtual returns (bool success) {
        require(isFrozen(holder));
        _frozenAccount[holder] = false;
        emit Unfreeze(holder);
        success = true;
    }
}

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
    unchecked {
        _approve(account, _msgSender(), currentAllowance - amount);
    }
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        if (length > 0) {
            autoUnlock(from);
        }
        require(_balances[from] >= _totalLocked[from] + amount, "checkLock : balance exceed");
        _;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success)
    {
        require(
            _balances[from] >= amount + _totalLocked[from],
            "lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage info = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - info._amount;
        emit Unlock(from, info._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) public onlyOwner returns (bool success) {
        require(_balances[recipient] >= amount, "There is not enough balance of holder.");
        _lock(recipient, amount, releaseTime);

        success = true;
    }

    function autoUnlock(address from) public returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        success = true;
    }

    function unlock(address from, uint256 idx) public onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success){
        require(_locks[from].length > 0, "There is not lock info.");
        //        uint256 i = _locks[from].length - 1;
        //        _unlock(from, i);
        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success)
    {
        require(recipient != address(0));
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount)
    {
        LockInfo memory info = _locks[locked][index];
        releaseTime = info._releaseTime;
        amount = info._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

contract QUROZ is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("Qfora", "QUROZ") {
        _mint(msg.sender, 1200000000 * (10 ** decimals()));
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function freezeAccount(address holder) public onlyOwner {
        _freezeAccount(holder);
    }

    function unfreezeAccount(address holder) public onlyOwner {
        _unfreezeAccount(holder);
    }

    function transfer(address to, uint256 amount) public checkLock(msg.sender, amount) override returns (bool) {
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public checkLock(from, amount) override returns (bool) {
        return super.transferFrom(from, to, amount);
    }

    function balanceOf(address holder) public view override returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance);

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function balanceOfTotal(address holder) public view returns (uint256 balance) {
        balance = super.balanceOf(holder);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused whenNotFrozen(from) override {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"from","type":"address"}],"name":"autoUnlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOfTotal","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600581526020017f51666f72610000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5155524f5a00000000000000000000000000000000000000000000000000000081525081600390805190602001906200009692919062000420565b508060049080519060200190620000af92919062000420565b5050506000600560006101000a81548160ff0219169083151502179055506000620000df620001c460201b60201c565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001be3362000193620001cc60201b60201c565b600a620001a1919062000659565b6347868c00620001b2919062000796565b620001d560201b60201c565b62000901565b600033905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200023f9062000551565b60405180910390fd5b6200025c600083836200033a60201b60201c565b8060026000828254620002709190620005a1565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002c79190620005a1565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200032e919062000573565b60405180910390a35050565b6200034a6200040460201b60201c565b156200038d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000384906200052f565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615620003e657600080fd5b620003fe8484846200041b60201b620019af1760201c565b50505050565b6000600560009054906101000a900460ff16905090565b505050565b8280546200042e906200080e565b90600052602060002090601f0160209004810192826200045257600085556200049e565b82601f106200046d57805160ff19168380011785556200049e565b828001600101855582156200049e579182015b828111156200049d57825182559160200191906001019062000480565b5b509050620004ad9190620004b1565b5090565b5b80821115620004cc576000816000905550600101620004b2565b5090565b6000620004df60108362000590565b9150620004ec82620008af565b602082019050919050565b600062000506601f8362000590565b91506200051382620008d8565b602082019050919050565b6200052981620007f7565b82525050565b600060208201905081810360008301526200054a81620004d0565b9050919050565b600060208201905081810360008301526200056c81620004f7565b9050919050565b60006020820190506200058a60008301846200051e565b92915050565b600082825260208201905092915050565b6000620005ae82620007f7565b9150620005bb83620007f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005f357620005f262000844565b5b828201905092915050565b6000808291508390505b6001851115620006505780860481111562000628576200062762000844565b5b6001851615620006385780820291505b80810290506200064885620008a2565b945062000608565b94509492505050565b60006200066682620007f7565b9150620006738362000801565b9250620006a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006aa565b905092915050565b600082620006bc57600190506200078f565b81620006cc57600090506200078f565b8160018114620006e55760028114620006f05762000726565b60019150506200078f565b60ff84111562000705576200070462000844565b5b8360020a9150848211156200071f576200071e62000844565b5b506200078f565b5060208310610133831016604e8410600b8410161715620007605782820a9050838111156200075a576200075962000844565b5b6200078f565b6200076f8484846001620005fe565b9250905081840481111562000789576200078862000844565b5b81810290505b9392505050565b6000620007a382620007f7565b9150620007b083620007f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007ec57620007eb62000844565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200082757607f821691505b602082108114156200083e576200083d62000873565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61392980620009116000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612e8f565b60405180910390f35b61021760048036038101906102129190612aae565b6106d1565b6040516102249190612e74565b60405180910390f35b6102356106ef565b60405161024291906130f1565b60405180910390f35b61026560048036038101906102609190612a5b565b6106f9565b6040516102729190612e74565b60405180910390f35b61028361083a565b6040516102909190613135565b60405180910390f35b6102b360048036038101906102ae9190612aae565b610843565b6040516102c09190612e74565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612b41565b610975565b005b6102f7610989565b6040516103049190612e74565b60405180910390f35b610327600480360381019061032291906129ee565b6109a0565b60405161033491906130f1565b60405180910390f35b610345610a40565b005b610361600480360381019061035c91906129ee565b610b7d565b005b61037d60048036038101906103789190612aae565b610c06565b005b61039960048036038101906103949190612aae565b610c81565b6040516103a69190612e74565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612e59565b60405180910390f35b6103df610e48565b6040516103ec9190612e8f565b60405180910390f35b61040f600480360381019061040a9190612aae565b610eda565b60405161041c9190612e74565b60405180910390f35b61043f600480360381019061043a9190612aae565b610fc5565b60405161044c9190612e74565b60405180910390f35b61046f600480360381019061046a9190612aae565b611104565b60405161047d92919061310c565b60405180910390f35b6104a0600480360381019061049b91906129ee565b61119f565b6040516104ad9190612e74565b60405180910390f35b6104d060048036038101906104cb91906129ee565b611327565b6040516104dd91906130f1565b60405180910390f35b61050060048036038101906104fb91906129ee565b611339565b60405161050e92919061310c565b60405180910390f35b610531600480360381019061052c9190612a1b565b6113c8565b60405161053e91906130f1565b60405180910390f35b610561600480360381019061055c9190612aee565b61144f565b60405161056e9190612e74565b60405180910390f35b610591600480360381019061058c91906129ee565b611529565b60405161059e9190612e74565b60405180910390f35b6105c160048036038101906105bc9190612aee565b61160e565b6040516105ce9190612e74565b60405180910390f35b6105f160048036038101906105ec91906129ee565b611724565b6040516105fe9190612e74565b60405180910390f35b610621600480360381019061061c91906129ee565b61177a565b005b61063d600480360381019061063891906129ee565b611803565b005b60606003805461064e906132a8565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906132a8565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b4565b84846119bc565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a3919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612ef1565b60405180910390fd5b61082e878787611b87565b93505050509392505050565b60006012905090565b60006108e56108506119b4565b84846001600061085e6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e0919061316c565b6119bc565b6001905092915050565b6108f76119b4565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290613031565b60405180910390fd5b610973611c7f565b565b6109866109806119b4565b82611d21565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611eec565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a04919061316c565b95505b50508080610a14906132da565b9150506109d8565b505b828285610a2b91906131c2565b610a35919061316c565b945050505050919050565b610a486119b4565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613031565b60405180910390fd5b610c0281611f34565b5050565b6000610c1983610c146119b4565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613051565b60405180910390fd5b610c7283610c6a6119b4565b8484036119bc565b610c7c8383611d21565b505050565b6000610c8b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613031565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612f91565b60405180910390fd5b610d8d8383611fec565b506001905092915050565b610da06119b4565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90613031565b60405180910390fd5b610e1c6122da565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e57906132a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e83906132a8565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d1565b60405180910390fd5b610fba610fb16119b4565b858584036119bc565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612ef1565b60405180910390fd5b6110f9868661237d565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596133b0565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b4565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613031565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612f91565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d576113098360018361130491906131c2565b611fec565b5080806113159061327e565b9150506112ea565b5060019050919050565b600061133282611eec565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b4565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561150757600080fd5b61151233858561239b565b61151d848484612611565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116045742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cd576115cc6133b0565b5b90600052602060002090600202016000015410156115f1576115ef8382611fec565b505b80806115fc906132da565b915050611531565b5060019050919050565b60006116186119b4565b73ffffffffffffffffffffffffffffffffffffffff16611636610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613031565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612ff1565b60405180910390fd5b611718848484612611565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117826119b4565b73ffffffffffffffffffffffffffffffffffffffff166117a0610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90613031565b60405180910390fd5b6117ff8161285a565b5050565b61180b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16611829610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690612f51565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612f71565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7a91906130f1565b60405180910390a3505050565b6000611b9484848461239b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdf6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613011565b60405180910390fd5b611c7385611c6b6119b4565b8584036119bc565b60019150509392505050565b611c87610989565b611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90612ed1565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d0a6119b4565b604051611d179190612e59565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890613071565b60405180910390fd5b611d9d82600083612913565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90612f11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e7a91906131c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edf91906130f1565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3f82611724565b611f4857600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120405761203f6133b0565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209f91906131c2565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161212c91906130f1565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121c291906131c2565b815481106121d3576121d26133b0565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612232576122316133b0565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a6576122a5613381565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122e2610989565b15612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990612fd1565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123666119b4565b6040516123739190612e59565b60405180910390a1565b600061239161238a6119b4565b848461239b565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613091565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290612eb1565b60405180910390fd5b612486838383612913565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390612fb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f919061316c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260391906130f1565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361265e919061316c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590612f31565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612729919061316c565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161284792919061310c565b60405180910390a2600190509392505050565b600061286582611724565b1561286f57600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b61291b610989565b1561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290612fd1565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129b357600080fd5b6129be8484846119af565b50505050565b6000813590506129d3816138c5565b92915050565b6000813590506129e8816138dc565b92915050565b600060208284031215612a0457612a036133df565b5b6000612a12848285016129c4565b91505092915050565b60008060408385031215612a3257612a316133df565b5b6000612a40858286016129c4565b9250506020612a51858286016129c4565b9150509250929050565b600080600060608486031215612a7457612a736133df565b5b6000612a82868287016129c4565b9350506020612a93868287016129c4565b9250506040612aa4868287016129d9565b9150509250925092565b60008060408385031215612ac557612ac46133df565b5b6000612ad3858286016129c4565b9250506020612ae4858286016129d9565b9150509250929050565b600080600060608486031215612b0757612b066133df565b5b6000612b15868287016129c4565b9350506020612b26868287016129d9565b9250506040612b37868287016129d9565b9150509250925092565b600060208284031215612b5757612b566133df565b5b6000612b65848285016129d9565b91505092915050565b612b77816131f6565b82525050565b612b8681613208565b82525050565b6000612b9782613150565b612ba1818561315b565b9350612bb181856020860161324b565b612bba816133e4565b840191505092915050565b6000612bd260238361315b565b9150612bdd826133f5565b604082019050919050565b6000612bf560148361315b565b9150612c0082613444565b602082019050919050565b6000612c18601a8361315b565b9150612c238261346d565b602082019050919050565b6000612c3b60228361315b565b9150612c4682613496565b604082019050919050565b6000612c5e60328361315b565b9150612c69826134e5565b604082019050919050565b6000612c8160268361315b565b9150612c8c82613534565b604082019050919050565b6000612ca460228361315b565b9150612caf82613583565b604082019050919050565b6000612cc760178361315b565b9150612cd2826135d2565b602082019050919050565b6000612cea60268361315b565b9150612cf5826135fb565b604082019050919050565b6000612d0d60108361315b565b9150612d188261364a565b602082019050919050565b6000612d3060268361315b565b9150612d3b82613673565b604082019050919050565b6000612d5360288361315b565b9150612d5e826136c2565b604082019050919050565b6000612d7660208361315b565b9150612d8182613711565b602082019050919050565b6000612d9960248361315b565b9150612da48261373a565b604082019050919050565b6000612dbc60218361315b565b9150612dc782613789565b604082019050919050565b6000612ddf60258361315b565b9150612dea826137d8565b604082019050919050565b6000612e0260248361315b565b9150612e0d82613827565b604082019050919050565b6000612e2560258361315b565b9150612e3082613876565b604082019050919050565b612e4481613234565b82525050565b612e538161323e565b82525050565b6000602082019050612e6e6000830184612b6e565b92915050565b6000602082019050612e896000830184612b7d565b92915050565b60006020820190508181036000830152612ea98184612b8c565b905092915050565b60006020820190508181036000830152612eca81612bc5565b9050919050565b60006020820190508181036000830152612eea81612be8565b9050919050565b60006020820190508181036000830152612f0a81612c0b565b9050919050565b60006020820190508181036000830152612f2a81612c2e565b9050919050565b60006020820190508181036000830152612f4a81612c51565b9050919050565b60006020820190508181036000830152612f6a81612c74565b9050919050565b60006020820190508181036000830152612f8a81612c97565b9050919050565b60006020820190508181036000830152612faa81612cba565b9050919050565b60006020820190508181036000830152612fca81612cdd565b9050919050565b60006020820190508181036000830152612fea81612d00565b9050919050565b6000602082019050818103600083015261300a81612d23565b9050919050565b6000602082019050818103600083015261302a81612d46565b9050919050565b6000602082019050818103600083015261304a81612d69565b9050919050565b6000602082019050818103600083015261306a81612d8c565b9050919050565b6000602082019050818103600083015261308a81612daf565b9050919050565b600060208201905081810360008301526130aa81612dd2565b9050919050565b600060208201905081810360008301526130ca81612df5565b9050919050565b600060208201905081810360008301526130ea81612e18565b9050919050565b60006020820190506131066000830184612e3b565b92915050565b60006040820190506131216000830185612e3b565b61312e6020830184612e3b565b9392505050565b600060208201905061314a6000830184612e4a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061317782613234565b915061318283613234565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b7576131b6613323565b5b828201905092915050565b60006131cd82613234565b91506131d883613234565b9250828210156131eb576131ea613323565b5b828203905092915050565b600061320182613214565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561326957808201518184015260208101905061324e565b83811115613278576000848401525b50505050565b600061328982613234565b9150600082141561329d5761329c613323565b5b600182039050919050565b600060028204905060018216806132c057607f821691505b602082108114156132d4576132d3613352565b5b50919050565b60006132e582613234565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331857613317613323565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6138ce816131f6565b81146138d957600080fd5b50565b6138e581613234565b81146138f057600080fd5b5056fea26469706673582212202d1b773217e05733ecf3ab1f1e3a0870d6148f642b38f8d4a5a8ac733917497964736f6c63430008050033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d146105a7578063e5839836146105d7578063f26c159f14610607578063f2fde38b14610623576101da565b8063d8fb9337146104e6578063dd62ed3e14610517578063de6baccb14610547578063e20bc67b14610577576101da565b8063a9059cbb116100de578063a9059cbb14610425578063b2520a7c14610455578063d1c4691614610486578063d29dad83146104b6576101da565b80638da5cb5b146103b957806395d89b41146103d7578063a457c2d7146103f5576101da565b806342966c681161017c578063788649ea1161014b578063788649ea1461034757806379cc6790146103635780637eee288d1461037f5780638456cb59146103af576101da565b806342966c68146102d35780635c975abb146102ef57806370a082311461030d578063715018a61461033d576101da565b806323b872dd116101b857806323b872dd1461024b578063313ce5671461027b57806339509351146102995780633f4ba83a146102c9576101da565b806306fdde03146101df578063095ea7b3146101fd57806318160ddd1461022d575b600080fd5b6101e761063f565b6040516101f49190612e8f565b60405180910390f35b61021760048036038101906102129190612aae565b6106d1565b6040516102249190612e74565b60405180910390f35b6102356106ef565b60405161024291906130f1565b60405180910390f35b61026560048036038101906102609190612a5b565b6106f9565b6040516102729190612e74565b60405180910390f35b61028361083a565b6040516102909190613135565b60405180910390f35b6102b360048036038101906102ae9190612aae565b610843565b6040516102c09190612e74565b60405180910390f35b6102d16108ef565b005b6102ed60048036038101906102e89190612b41565b610975565b005b6102f7610989565b6040516103049190612e74565b60405180910390f35b610327600480360381019061032291906129ee565b6109a0565b60405161033491906130f1565b60405180910390f35b610345610a40565b005b610361600480360381019061035c91906129ee565b610b7d565b005b61037d60048036038101906103789190612aae565b610c06565b005b61039960048036038101906103949190612aae565b610c81565b6040516103a69190612e74565b60405180910390f35b6103b7610d98565b005b6103c1610e1e565b6040516103ce9190612e59565b60405180910390f35b6103df610e48565b6040516103ec9190612e8f565b60405180910390f35b61040f600480360381019061040a9190612aae565b610eda565b60405161041c9190612e74565b60405180910390f35b61043f600480360381019061043a9190612aae565b610fc5565b60405161044c9190612e74565b60405180910390f35b61046f600480360381019061046a9190612aae565b611104565b60405161047d92919061310c565b60405180910390f35b6104a0600480360381019061049b91906129ee565b61119f565b6040516104ad9190612e74565b60405180910390f35b6104d060048036038101906104cb91906129ee565b611327565b6040516104dd91906130f1565b60405180910390f35b61050060048036038101906104fb91906129ee565b611339565b60405161050e92919061310c565b60405180910390f35b610531600480360381019061052c9190612a1b565b6113c8565b60405161053e91906130f1565b60405180910390f35b610561600480360381019061055c9190612aee565b61144f565b60405161056e9190612e74565b60405180910390f35b610591600480360381019061058c91906129ee565b611529565b60405161059e9190612e74565b60405180910390f35b6105c160048036038101906105bc9190612aee565b61160e565b6040516105ce9190612e74565b60405180910390f35b6105f160048036038101906105ec91906129ee565b611724565b6040516105fe9190612e74565b60405180910390f35b610621600480360381019061061c91906129ee565b61177a565b005b61063d600480360381019061063891906129ee565b611803565b005b60606003805461064e906132a8565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906132a8565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b5050505050905090565b60006106e56106de6119b4565b84846119bc565b6001905092915050565b6000600254905090565b600083826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156107585761075683611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a3919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612ef1565b60405180910390fd5b61082e878787611b87565b93505050509392505050565b60006012905090565b60006108e56108506119b4565b84846001600061085e6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108e0919061316c565b6119bc565b6001905092915050565b6108f76119b4565b73ffffffffffffffffffffffffffffffffffffffff16610915610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290613031565b60405180910390fd5b610973611c7f565b565b6109866109806119b4565b82611d21565b50565b6000600560009054906101000a900460ff16905090565b6000806109ac83611eec565b9050600080806109bb86611339565b91509150818410156109cc57600080fd5b6000811115610a1e5760005b81811015610a1c576000806109ed8984611104565b91509150428211610a07578086610a04919061316c565b95505b50508080610a14906132da565b9150506109d8565b505b828285610a2b91906131c2565b610a35919061316c565b945050505050919050565b610a486119b4565b73ffffffffffffffffffffffffffffffffffffffff16610a66610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab390613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b856119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ba3610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf090613031565b60405180910390fd5b610c0281611f34565b5050565b6000610c1983610c146119b4565b6113c8565b905081811015610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613051565b60405180910390fd5b610c7283610c6a6119b4565b8484036119bc565b610c7c8383611d21565b505050565b6000610c8b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16610ca9610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf690613031565b60405180910390fd5b81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011610d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7a90612f91565b60405180910390fd5b610d8d8383611fec565b506001905092915050565b610da06119b4565b73ffffffffffffffffffffffffffffffffffffffff16610dbe610e1e565b73ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90613031565b60405180910390fd5b610e1c6122da565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e57906132a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610e83906132a8565b8015610ed05780601f10610ea557610100808354040283529160200191610ed0565b820191906000526020600020905b815481529060010190602001808311610eb357829003601f168201915b5050505050905090565b60008060016000610ee96119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9d906130d1565b60405180910390fd5b610fba610fb16119b4565b858584036119bc565b600191505092915050565b600033826000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060008111156110245761102283611529565b505b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106f919061316c565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e690612ef1565b60405180910390fd5b6110f9868661237d565b935050505092915050565b6000806000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061115a576111596133b0565b5b90600052602060002090600202016040518060400160405290816000820154815260200160018201548152505090508060000151925080602001519150509250929050565b60006111a96119b4565b73ffffffffffffffffffffffffffffffffffffffff166111c7610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461121d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121490613031565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129990612f91565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090505b600081111561131d576113098360018361130491906131c2565b611fec565b5080806113159061327e565b9150506112ea565b5060019050919050565b600061133282611eec565b9050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050915091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006114596119b4565b73ffffffffffffffffffffffffffffffffffffffff16611477610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561150757600080fd5b61151233858561239b565b61151d848484612611565b50600190509392505050565b600080600090505b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490508110156116045742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106115cd576115cc6133b0565b5b90600052602060002090600202016000015410156115f1576115ef8382611fec565b505b80806115fc906132da565b915050611531565b5060019050919050565b60006116186119b4565b73ffffffffffffffffffffffffffffffffffffffff16611636610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390613031565b60405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490612ff1565b60405180910390fd5b611718848484612611565b50600190509392505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117826119b4565b73ffffffffffffffffffffffffffffffffffffffff166117a0610e1e565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90613031565b60405180910390fd5b6117ff8161285a565b5050565b61180b6119b4565b73ffffffffffffffffffffffffffffffffffffffff16611829610e1e565b73ffffffffffffffffffffffffffffffffffffffff161461187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187690613031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e690612f51565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906130b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9390612f71565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7a91906130f1565b60405180910390a3505050565b6000611b9484848461239b565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611bdf6119b4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613011565b60405180910390fd5b611c7385611c6b6119b4565b8584036119bc565b60019150509392505050565b611c87610989565b611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90612ed1565b60405180910390fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d0a6119b4565b604051611d179190612e59565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890613071565b60405180910390fd5b611d9d82600083612913565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90612f11565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611e7a91906131c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edf91906130f1565b60405180910390a3505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000611f3f82611724565b611f4857600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee60405160405180910390a260019050919050565b600080600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106120405761203f6133b0565b5b906000526020600020906002020190508060010154600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209f91906131c2565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1826001015460405161212c91906130f1565b60405180910390a2600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506121c291906131c2565b815481106121d3576121d26133b0565b5b9060005260206000209060020201600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208481548110612232576122316133b0565b5b90600052602060002090600202016000820154816000015560018201548160010155905050600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806122a6576122a5613381565b5b6001900381819060005260206000209060020201600080820160009055600182016000905550509055600191505092915050565b6122e2610989565b15612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990612fd1565b60405180910390fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586123666119b4565b6040516123739190612e59565b60405180910390a1565b600061239161238a6119b4565b848461239b565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561240b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240290613091565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290612eb1565b60405180910390fd5b612486838383612913565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390612fb1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461259f919061316c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161260391906130f1565b60405180910390a350505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361265e919061316c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156126de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d590612f31565b60405180910390fd5b82600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612729919061316c565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280848152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508373ffffffffffffffffffffffffffffffffffffffff167f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b848460405161284792919061310c565b60405180910390a2600190509392505050565b600061286582611724565b1561286f57600080fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc32304960405160405180910390a260019050919050565b61291b610989565b1561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290612fd1565b60405180910390fd5b82600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129b357600080fd5b6129be8484846119af565b50505050565b6000813590506129d3816138c5565b92915050565b6000813590506129e8816138dc565b92915050565b600060208284031215612a0457612a036133df565b5b6000612a12848285016129c4565b91505092915050565b60008060408385031215612a3257612a316133df565b5b6000612a40858286016129c4565b9250506020612a51858286016129c4565b9150509250929050565b600080600060608486031215612a7457612a736133df565b5b6000612a82868287016129c4565b9350506020612a93868287016129c4565b9250506040612aa4868287016129d9565b9150509250925092565b60008060408385031215612ac557612ac46133df565b5b6000612ad3858286016129c4565b9250506020612ae4858286016129d9565b9150509250929050565b600080600060608486031215612b0757612b066133df565b5b6000612b15868287016129c4565b9350506020612b26868287016129d9565b9250506040612b37868287016129d9565b9150509250925092565b600060208284031215612b5757612b566133df565b5b6000612b65848285016129d9565b91505092915050565b612b77816131f6565b82525050565b612b8681613208565b82525050565b6000612b9782613150565b612ba1818561315b565b9350612bb181856020860161324b565b612bba816133e4565b840191505092915050565b6000612bd260238361315b565b9150612bdd826133f5565b604082019050919050565b6000612bf560148361315b565b9150612c0082613444565b602082019050919050565b6000612c18601a8361315b565b9150612c238261346d565b602082019050919050565b6000612c3b60228361315b565b9150612c4682613496565b604082019050919050565b6000612c5e60328361315b565b9150612c69826134e5565b604082019050919050565b6000612c8160268361315b565b9150612c8c82613534565b604082019050919050565b6000612ca460228361315b565b9150612caf82613583565b604082019050919050565b6000612cc760178361315b565b9150612cd2826135d2565b602082019050919050565b6000612cea60268361315b565b9150612cf5826135fb565b604082019050919050565b6000612d0d60108361315b565b9150612d188261364a565b602082019050919050565b6000612d3060268361315b565b9150612d3b82613673565b604082019050919050565b6000612d5360288361315b565b9150612d5e826136c2565b604082019050919050565b6000612d7660208361315b565b9150612d8182613711565b602082019050919050565b6000612d9960248361315b565b9150612da48261373a565b604082019050919050565b6000612dbc60218361315b565b9150612dc782613789565b604082019050919050565b6000612ddf60258361315b565b9150612dea826137d8565b604082019050919050565b6000612e0260248361315b565b9150612e0d82613827565b604082019050919050565b6000612e2560258361315b565b9150612e3082613876565b604082019050919050565b612e4481613234565b82525050565b612e538161323e565b82525050565b6000602082019050612e6e6000830184612b6e565b92915050565b6000602082019050612e896000830184612b7d565b92915050565b60006020820190508181036000830152612ea98184612b8c565b905092915050565b60006020820190508181036000830152612eca81612bc5565b9050919050565b60006020820190508181036000830152612eea81612be8565b9050919050565b60006020820190508181036000830152612f0a81612c0b565b9050919050565b60006020820190508181036000830152612f2a81612c2e565b9050919050565b60006020820190508181036000830152612f4a81612c51565b9050919050565b60006020820190508181036000830152612f6a81612c74565b9050919050565b60006020820190508181036000830152612f8a81612c97565b9050919050565b60006020820190508181036000830152612faa81612cba565b9050919050565b60006020820190508181036000830152612fca81612cdd565b9050919050565b60006020820190508181036000830152612fea81612d00565b9050919050565b6000602082019050818103600083015261300a81612d23565b9050919050565b6000602082019050818103600083015261302a81612d46565b9050919050565b6000602082019050818103600083015261304a81612d69565b9050919050565b6000602082019050818103600083015261306a81612d8c565b9050919050565b6000602082019050818103600083015261308a81612daf565b9050919050565b600060208201905081810360008301526130aa81612dd2565b9050919050565b600060208201905081810360008301526130ca81612df5565b9050919050565b600060208201905081810360008301526130ea81612e18565b9050919050565b60006020820190506131066000830184612e3b565b92915050565b60006040820190506131216000830185612e3b565b61312e6020830184612e3b565b9392505050565b600060208201905061314a6000830184612e4a565b92915050565b600081519050919050565b600082825260208201905092915050565b600061317782613234565b915061318283613234565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131b7576131b6613323565b5b828201905092915050565b60006131cd82613234565b91506131d883613234565b9250828210156131eb576131ea613323565b5b828203905092915050565b600061320182613214565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561326957808201518184015260208101905061324e565b83811115613278576000848401525b50505050565b600061328982613234565b9150600082141561329d5761329c613323565b5b600182039050919050565b600060028204905060018216806132c057607f821691505b602082108114156132d4576132d3613352565b5b50919050565b60006132e582613234565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331857613317613323565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f636865636b4c6f636b203a2062616c616e636520657863656564000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d60008201527f616c6c6572207468616e2062616c616e63650000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5468657265206973206e6f74206c6f636b20696e666f2e000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860008201527f6f6c6465722e0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6138ce816131f6565b81146138d957600080fd5b50565b6138e581613234565b81146138f057600080fd5b5056fea26469706673582212202d1b773217e05733ecf3ab1f1e3a0870d6148f642b38f8d4a5a8ac733917497964736f6c63430008050033

Deployed Bytecode Sourcemap

12644:1947:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5278:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4685:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13366:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4584:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5943:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12912:65;;;:::i;:::-;;8703:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2506:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13555:700;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1000:148;;;:::i;:::-;;13090:101;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8802:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11278:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12843:61;;;:::i;:::-;;777:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4472:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6166:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13199:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12202:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11503:379;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14263:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12459:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5119:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11890:304;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10984:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10691:285;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1709:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12985:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1156:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4364:100;4418:13;4451:5;4444:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4364:100;:::o;5278:169::-;5361:4;5378:39;5387:12;:10;:12::i;:::-;5401:7;5410:6;5378:8;:39::i;:::-;5435:4;5428:11;;5278:169;;;;:::o;4685:108::-;4746:7;4773:12;;4766:19;;4685:108;:::o;13366:181::-;13479:4;13447;13453:6;9617:14;9634:6;:12;9641:4;9634:12;;;;;;;;;;;;;;;:19;;;;9617:36;;9677:1;9668:6;:10;9664:59;;;9695:16;9706:4;9695:10;:16::i;:::-;;9664:59;9781:6;9760:12;:18;9773:4;9760:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9741:9;:15;9751:4;9741:15;;;;;;;;;;;;;;;;:46;;9733:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13503:36:::1;13522:4;13528:2;13532:6;13503:18;:36::i;:::-;13496:43;;9606:232:::0;13366:181;;;;;;;:::o;4584:93::-;4642:5;4667:2;4660:9;;4584:93;:::o;5943:215::-;6031:4;6048:80;6057:12;:10;:12::i;:::-;6071:7;6117:10;6080:11;:25;6092:12;:10;:12::i;:::-;6080:25;;;;;;;;;;;;;;;:34;6106:7;6080:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6048:8;:80::i;:::-;6146:4;6139:11;;5943:215;;;;:::o;12912:65::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12959:10:::1;:8;:10::i;:::-;12912:65::o:0;8703:91::-;8759:27;8765:12;:10;:12::i;:::-;8779:6;8759:5;:27::i;:::-;8703:91;:::o;2506:86::-;2553:4;2577:7;;;;;;;;;;;2570:14;;2506:86;:::o;13555:700::-;13620:15;13648:20;13671:23;13687:6;13671:15;:23::i;:::-;13648:46;;13705:24;13745:21;13768:20;13792:19;13804:6;13792:11;:19::i;:::-;13744:67;;;;13846:13;13830:12;:29;;13822:38;;;;;;13892:1;13877:12;:16;13873:305;;;13915:6;13910:257;13931:12;13927:1;:16;13910:257;;;13970:19;13991:14;14009:19;14018:6;14026:1;14009:8;:19::i;:::-;13969:59;;;;14066:15;14051:11;:30;14047:105;;14126:6;14106:26;;;;;:::i;:::-;;;14047:105;13950:217;;13945:3;;;;;:::i;:::-;;;;13910:257;;;;13873:305;14231:16;14215:13;14200:12;:28;;;;:::i;:::-;:47;;;;:::i;:::-;14190:57;;13637:618;;;;13555:700;;;:::o;1000:148::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1107:1:::1;1070:40;;1091:6;;;;;;;;;;;1070:40;;;;;;;;;;;;1138:1;1121:6;;:19;;;;;;;;;;;;;;;;;;1000:148::o:0;13090:101::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13159:24:::1;13176:6;13159:16;:24::i;:::-;;13090:101:::0;:::o;8802:356::-;8879:24;8906:32;8916:7;8925:12;:10;:12::i;:::-;8906:9;:32::i;:::-;8879:59;;8977:6;8957:16;:26;;8949:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9052:58;9061:7;9070:12;:10;:12::i;:::-;9103:6;9084:16;:25;9052:8;:58::i;:::-;9128:22;9134:7;9143:6;9128:5;:22::i;:::-;8868:290;8802:356;;:::o;11278:217::-;11347:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11402:3:::1;11380:6;:12;11387:4;11380:12;;;;;;;;;;;;;;;:19;;;;:25;11372:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11444:18;11452:4;11458:3;11444:7;:18::i;:::-;;11483:4;11473:14;;11278:217:::0;;;;:::o;12843:61::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12888:8:::1;:6;:8::i;:::-;12843:61::o:0;777:87::-;823:7;850:6;;;;;;;;;;;843:13;;777:87;:::o;4472:104::-;4528:13;4561:7;4554:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4472:104;:::o;6166:401::-;6259:4;6276:24;6303:11;:25;6315:12;:10;:12::i;:::-;6303:25;;;;;;;;;;;;;;;:34;6329:7;6303:34;;;;;;;;;;;;;;;;6276:61;;6376:15;6356:16;:35;;6348:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6461:67;6470:12;:10;:12::i;:::-;6484:7;6512:15;6493:16;:34;6461:8;:67::i;:::-;6555:4;6548:11;;;6166:401;;;;:::o;13199:159::-;13300:4;13262:10;13274:6;9617:14;9634:6;:12;9641:4;9634:12;;;;;;;;;;;;;;;:19;;;;9617:36;;9677:1;9668:6;:10;9664:59;;;9695:16;9706:4;9695:10;:16::i;:::-;;9664:59;9781:6;9760:12;:18;9773:4;9760:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9741:9;:15;9751:4;9741:15;;;;;;;;;;;;;;;;:46;;9733:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13324:26:::1;13339:2;13343:6;13324:14;:26::i;:::-;13317:33;;9606:232:::0;13199:159;;;;;;:::o;12202:249::-;12272:19;12293:14;12325:20;12348:6;:14;12355:6;12348:14;;;;;;;;;;;;;;;12363:5;12348:21;;;;;;;;:::i;:::-;;;;;;;;;;;;12325:44;;;;;;;;;;;;;;;;;;;;;;;;;;;12394:4;:17;;;12380:31;;12431:4;:12;;;12422:21;;12314:137;12202:249;;;;;:::o;11503:379::-;11566:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11620:1:::1;11598:6;:12;11605:4;11598:12;;;;;;;;;;;;;;;:19;;;;:23;11590:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11758:9;11770:6;:12;11777:4;11770:12;;;;;;;;;;;;;;;:19;;;;11758:31;;11753:97;11795:1;11791;:5;11753:97;;;11818:20;11826:4;11836:1;11832;:5;;;;:::i;:::-;11818:7;:20::i;:::-;;11798:3;;;;;:::i;:::-;;;;11753:97;;;;11870:4;11860:14;;11503:379:::0;;;:::o;14263:130::-;14324:15;14362:23;14378:6;14362:15;:23::i;:::-;14352:33;;14263:130;;;:::o;12459:178::-;12517:14;12533;12568:12;:20;12581:6;12568:20;;;;;;;;;;;;;;;;12559:29;;12608:6;:14;12615:6;12608:14;;;;;;;;;;;;;;;:21;;;;12599:30;;12459:178;;;:::o;5119:151::-;5208:7;5235:11;:18;5247:5;5235:18;;;;;;;;;;;;;;;:27;5254:7;5235:27;;;;;;;;;;;;;;;;5228:34;;5119:151;;;;:::o;11890:304::-;12000:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12059:1:::1;12038:23;;:9;:23;;;;12030:32;;;::::0;::::1;;12073:40;12083:10;12095:9;12106:6;12073:9;:40::i;:::-;12124:37;12130:9;12141:6;12149:11;12124:5;:37::i;:::-;;12182:4;12172:14;;11890:304:::0;;;;;:::o;10984:286::-;11034:12;11064:9;11076:1;11064:13;;11059:179;11083:6;:12;11090:4;11083:12;;;;;;;;;;;;;;;:19;;;;11079:1;:23;11059:179;;;11159:15;11128:6;:12;11135:4;11128:12;;;;;;;;;;;;;;;11141:1;11128:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:46;11124:103;;;11195:16;11203:4;11209:1;11195:7;:16::i;:::-;;11124:103;11104:3;;;;;:::i;:::-;;;;11059:179;;;;11258:4;11248:14;;10984:286;;;:::o;10691:285::-;10787:12;923;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10844:6:::1;10820:9;:20:::0;10830:9:::1;10820:20;;;;;;;;;;;;;;;;:30;;10812:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10904:37;10910:9;10921:6;10929:11;10904:5;:37::i;:::-;;10964:4;10954:14;;10691:285:::0;;;;;:::o;1709:124::-;1772:11;1803:14;:22;1818:6;1803:22;;;;;;;;;;;;;;;;;;;;;;;;;1796:29;;1709:124;;;:::o;12985:97::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13052:22:::1;13067:6;13052:14;:22::i;:::-;;12985:97:::0;:::o;1156:244::-;923:12;:10;:12::i;:::-;912:23;;:7;:5;:7::i;:::-;:23;;;904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1265:1:::1;1245:22;;:8;:22;;;;1237:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1355:8;1326:38;;1347:6;;;;;;;;;;;1326:38;;;;;;;;;;;;1384:8;1375:6;;:17;;;;;;;;;;;;;;;;;;1156:244:::0;:::o;8505:125::-;;;;:::o;92:98::-;145:7;172:10;165:17;;92:98;:::o;8117:380::-;8270:1;8253:19;;:5;:19;;;;8245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8351:1;8332:21;;:7;:21;;;;8324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8435:6;8405:11;:18;8417:5;8405:18;;;;;;;;;;;;;;;:27;8424:7;8405:27;;;;;;;;;;;;;;;:36;;;;8473:7;8457:32;;8466:5;8457:32;;;8482:6;8457:32;;;;;;:::i;:::-;;;;;;;;8117:380;;;:::o;5455:480::-;5595:4;5612:36;5622:6;5630:9;5641:6;5612:9;:36::i;:::-;5661:24;5688:11;:19;5700:6;5688:19;;;;;;;;;;;;;;;:33;5708:12;:10;:12::i;:::-;5688:33;;;;;;;;;;;;;;;;5661:60;;5760:6;5740:16;:26;;5732:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5839:57;5848:6;5856:12;:10;:12::i;:::-;5889:6;5870:16;:25;5839:8;:57::i;:::-;5923:4;5916:11;;;5455:480;;;;;:::o;2930:120::-;2743:8;:6;:8::i;:::-;2735:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;2999:5:::1;2989:7;;:15;;;;;;;;;;;;;;;;;;3020:22;3029:12;:10;:12::i;:::-;3020:22;;;;;;:::i;:::-;;;;;;;;2930:120::o:0;7591:518::-;7694:1;7675:21;;:7;:21;;;;7667:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7747:49;7768:7;7785:1;7789:6;7747:20;:49::i;:::-;7809:22;7834:9;:18;7844:7;7834:18;;;;;;;;;;;;;;;;7809:43;;7889:6;7871:14;:24;;7863:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8000:6;7983:14;:23;7962:9;:18;7972:7;7962:18;;;;;;;;;;;;;;;:44;;;;8040:6;8024:12;;:22;;;;;;;:::i;:::-;;;;;;;;8090:1;8064:37;;8073:7;8064:37;;;8094:6;8064:37;;;;;;:::i;:::-;;;;;;;;7656:453;7591:518;;:::o;4801:127::-;4875:7;4902:9;:18;4912:7;4902:18;;;;;;;;;;;;;;;;4895:25;;4801:127;;;:::o;2069:224::-;2137:12;2170:16;2179:6;2170:8;:16::i;:::-;2162:25;;;;;;2223:5;2198:14;:22;2213:6;2198:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2253:6;2244:16;;;;;;;;;;;;2281:4;2271:14;;2069:224;;;:::o;10312:371::-;10376:12;10401:21;10425:6;:12;10432:4;10425:12;;;;;;;;;;;;;;;10438:5;10425:19;;;;;;;;:::i;:::-;;;;;;;;;;;;10401:43;;10497:4;:12;;;10476;:18;10489:4;10476:18;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;10455:12;:18;10468:4;10455:18;;;;;;;;;;;;;;;:54;;;;10532:4;10525:26;;;10538:4;:12;;;10525:26;;;;;;:::i;:::-;;;;;;;;10584:6;:12;10591:4;10584:12;;;;;;;;;;;;;;;10619:1;10597:6;:12;10604:4;10597:12;;;;;;;;;;;;;;;:19;;;;:23;;;;:::i;:::-;10584:37;;;;;;;;:::i;:::-;;;;;;;;;;;;10562:6;:12;10569:4;10562:12;;;;;;;;;;;;;;;10575:5;10562:19;;;;;;;;:::i;:::-;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;;10632:6;:12;10639:4;10632:12;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10671:4;10661:14;;10390:293;10312:371;;;;:::o;2804:118::-;2645:8;:6;:8::i;:::-;2644:9;2636:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2874:4:::1;2864:7;;:14;;;;;;;;;;;;;;;;;;2894:20;2901:12;:10;:12::i;:::-;2894:20;;;;;;:::i;:::-;;;;;;;;2804:118::o:0;4936:175::-;5022:4;5039:42;5049:12;:10;:12::i;:::-;5063:9;5074:6;5039:9;:42::i;:::-;5099:4;5092:11;;4936:175;;;;:::o;6575:662::-;6733:1;6715:20;;:6;:20;;;;6707:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6817:1;6796:23;;:9;:23;;;;6788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6872:47;6893:6;6901:9;6912:6;6872:20;:47::i;:::-;6932:21;6956:9;:17;6966:6;6956:17;;;;;;;;;;;;;;;;6932:41;;7009:6;6992:13;:23;;6984:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7122:6;7106:13;:22;7086:9;:17;7096:6;7086:17;;;;;;;;;;;;;;;:42;;;;7170:6;7146:9;:20;7156:9;7146:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7211:9;7194:35;;7203:6;7194:35;;;7222:6;7194:35;;;;;;:::i;:::-;;;;;;;;6696:541;6575:662;;;:::o;9846:458::-;9930:12;10010;:18;10023:4;10010:18;;;;;;;;;;;;;;;;10001:6;:27;;;;:::i;:::-;9982:9;:15;9992:4;9982:15;;;;;;;;;;;;;;;;:46;;9960:146;;;;;;;;;;;;:::i;:::-;;;;;;;;;10159:6;10138:12;:18;10151:4;10138:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10117:12;:18;10130:4;10117:18;;;;;;;;;;;;;;;:48;;;;10176:6;:12;10183:4;10176:12;;;;;;;;;;;;;;;10194:29;;;;;;;;10203:11;10194:29;;;;10216:6;10194:29;;;10176:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10245:4;10240:31;;;10251:6;10259:11;10240:31;;;;;;;:::i;:::-;;;;;;;;10292:4;10282:14;;9846:458;;;;;:::o;1841:220::-;1907:12;1941:16;1950:6;1941:8;:16::i;:::-;1940:17;1932:26;;;;;;1994:4;1969:14;:22;1984:6;1969:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;2021:6;2014:14;;;;;;;;;;;;2049:4;2039:14;;1841:220;;;:::o;14401:187::-;2645:8;:6;:8::i;:::-;2644:9;2636:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14510:4:::1;1658:14;:22;1673:6;1658:22;;;;;;;;;;;;;;;;;;;;;;;;;1657:23;1649:32;;;::::0;::::1;;14536:44:::2;14563:4;14569:2;14573:6;14536:26;:44::i;:::-;2685:1:::1;14401:187:::0;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;198:5;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:329::-;356:6;405:2;393:9;384:7;380:23;376:32;373:2;;;411:79;;:::i;:::-;373:2;531:1;556:53;601:7;592:6;581:9;577:22;556:53;:::i;:::-;546:63;;502:117;363:263;;;;:::o;632:474::-;700:6;708;757:2;745:9;736:7;732:23;728:32;725:2;;;763:79;;:::i;:::-;725:2;883:1;908:53;953:7;944:6;933:9;929:22;908:53;:::i;:::-;898:63;;854:117;1010:2;1036:53;1081:7;1072:6;1061:9;1057:22;1036:53;:::i;:::-;1026:63;;981:118;715:391;;;;;:::o;1112:619::-;1189:6;1197;1205;1254:2;1242:9;1233:7;1229:23;1225:32;1222:2;;;1260:79;;:::i;:::-;1222:2;1380:1;1405:53;1450:7;1441:6;1430:9;1426:22;1405:53;:::i;:::-;1395:63;;1351:117;1507:2;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1478:118;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1212:519;;;;;:::o;1737:474::-;1805:6;1813;1862:2;1850:9;1841:7;1837:23;1833:32;1830:2;;;1868:79;;:::i;:::-;1830:2;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;2115:2;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2086:118;1820:391;;;;;:::o;2217:619::-;2294:6;2302;2310;2359:2;2347:9;2338:7;2334:23;2330:32;2327:2;;;2365:79;;:::i;:::-;2327:2;2485:1;2510:53;2555:7;2546:6;2535:9;2531:22;2510:53;:::i;:::-;2500:63;;2456:117;2612:2;2638:53;2683:7;2674:6;2663:9;2659:22;2638:53;:::i;:::-;2628:63;;2583:118;2740:2;2766:53;2811:7;2802:6;2791:9;2787:22;2766:53;:::i;:::-;2756:63;;2711:118;2317:519;;;;;:::o;2842:329::-;2901:6;2950:2;2938:9;2929:7;2925:23;2921:32;2918:2;;;2956:79;;:::i;:::-;2918:2;3076:1;3101:53;3146:7;3137:6;3126:9;3122:22;3101:53;:::i;:::-;3091:63;;3047:117;2908:263;;;;:::o;3177:118::-;3264:24;3282:5;3264:24;:::i;:::-;3259:3;3252:37;3242:53;;:::o;3301:109::-;3382:21;3397:5;3382:21;:::i;:::-;3377:3;3370:34;3360:50;;:::o;3416:364::-;3504:3;3532:39;3565:5;3532:39;:::i;:::-;3587:71;3651:6;3646:3;3587:71;:::i;:::-;3580:78;;3667:52;3712:6;3707:3;3700:4;3693:5;3689:16;3667:52;:::i;:::-;3744:29;3766:6;3744:29;:::i;:::-;3739:3;3735:39;3728:46;;3508:272;;;;;:::o;3786:366::-;3928:3;3949:67;4013:2;4008:3;3949:67;:::i;:::-;3942:74;;4025:93;4114:3;4025:93;:::i;:::-;4143:2;4138:3;4134:12;4127:19;;3932:220;;;:::o;4158:366::-;4300:3;4321:67;4385:2;4380:3;4321:67;:::i;:::-;4314:74;;4397:93;4486:3;4397:93;:::i;:::-;4515:2;4510:3;4506:12;4499:19;;4304:220;;;:::o;4530:366::-;4672:3;4693:67;4757:2;4752:3;4693:67;:::i;:::-;4686:74;;4769:93;4858:3;4769:93;:::i;:::-;4887:2;4882:3;4878:12;4871:19;;4676:220;;;:::o;4902:366::-;5044:3;5065:67;5129:2;5124:3;5065:67;:::i;:::-;5058:74;;5141:93;5230:3;5141:93;:::i;:::-;5259:2;5254:3;5250:12;5243:19;;5048:220;;;:::o;5274:366::-;5416:3;5437:67;5501:2;5496:3;5437:67;:::i;:::-;5430:74;;5513:93;5602:3;5513:93;:::i;:::-;5631:2;5626:3;5622:12;5615:19;;5420:220;;;:::o;5646:366::-;5788:3;5809:67;5873:2;5868:3;5809:67;:::i;:::-;5802:74;;5885:93;5974:3;5885:93;:::i;:::-;6003:2;5998:3;5994:12;5987:19;;5792:220;;;:::o;6018:366::-;6160:3;6181:67;6245:2;6240:3;6181:67;:::i;:::-;6174:74;;6257:93;6346:3;6257:93;:::i;:::-;6375:2;6370:3;6366:12;6359:19;;6164:220;;;:::o;6390:366::-;6532:3;6553:67;6617:2;6612:3;6553:67;:::i;:::-;6546:74;;6629:93;6718:3;6629:93;:::i;:::-;6747:2;6742:3;6738:12;6731:19;;6536:220;;;:::o;6762:366::-;6904:3;6925:67;6989:2;6984:3;6925:67;:::i;:::-;6918:74;;7001:93;7090:3;7001:93;:::i;:::-;7119:2;7114:3;7110:12;7103:19;;6908:220;;;:::o;7134:366::-;7276:3;7297:67;7361:2;7356:3;7297:67;:::i;:::-;7290:74;;7373:93;7462:3;7373:93;:::i;:::-;7491:2;7486:3;7482:12;7475:19;;7280:220;;;:::o;7506:366::-;7648:3;7669:67;7733:2;7728:3;7669:67;:::i;:::-;7662:74;;7745:93;7834:3;7745:93;:::i;:::-;7863:2;7858:3;7854:12;7847:19;;7652:220;;;:::o;7878:366::-;8020:3;8041:67;8105:2;8100:3;8041:67;:::i;:::-;8034:74;;8117:93;8206:3;8117:93;:::i;:::-;8235:2;8230:3;8226:12;8219:19;;8024:220;;;:::o;8250:366::-;8392:3;8413:67;8477:2;8472:3;8413:67;:::i;:::-;8406:74;;8489:93;8578:3;8489:93;:::i;:::-;8607:2;8602:3;8598:12;8591:19;;8396:220;;;:::o;8622:366::-;8764:3;8785:67;8849:2;8844:3;8785:67;:::i;:::-;8778:74;;8861:93;8950:3;8861:93;:::i;:::-;8979:2;8974:3;8970:12;8963:19;;8768:220;;;:::o;8994:366::-;9136:3;9157:67;9221:2;9216:3;9157:67;:::i;:::-;9150:74;;9233:93;9322:3;9233:93;:::i;:::-;9351:2;9346:3;9342:12;9335:19;;9140:220;;;:::o;9366:366::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9512:220;;;:::o;9738:366::-;9880:3;9901:67;9965:2;9960:3;9901:67;:::i;:::-;9894:74;;9977:93;10066:3;9977:93;:::i;:::-;10095:2;10090:3;10086:12;10079:19;;9884:220;;;:::o;10110:366::-;10252:3;10273:67;10337:2;10332:3;10273:67;:::i;:::-;10266:74;;10349:93;10438:3;10349:93;:::i;:::-;10467:2;10462:3;10458:12;10451:19;;10256:220;;;:::o;10482:118::-;10569:24;10587:5;10569:24;:::i;:::-;10564:3;10557:37;10547:53;;:::o;10606:112::-;10689:22;10705:5;10689:22;:::i;:::-;10684:3;10677:35;10667:51;;:::o;10724:222::-;10817:4;10855:2;10844:9;10840:18;10832:26;;10868:71;10936:1;10925:9;10921:17;10912:6;10868:71;:::i;:::-;10822:124;;;;:::o;10952:210::-;11039:4;11077:2;11066:9;11062:18;11054:26;;11090:65;11152:1;11141:9;11137:17;11128:6;11090:65;:::i;:::-;11044:118;;;;:::o;11168:313::-;11281:4;11319:2;11308:9;11304:18;11296:26;;11368:9;11362:4;11358:20;11354:1;11343:9;11339:17;11332:47;11396:78;11469:4;11460:6;11396:78;:::i;:::-;11388:86;;11286:195;;;;:::o;11487:419::-;11653:4;11691:2;11680:9;11676:18;11668:26;;11740:9;11734:4;11730:20;11726:1;11715:9;11711:17;11704:47;11768:131;11894:4;11768:131;:::i;:::-;11760:139;;11658:248;;;:::o;11912:419::-;12078:4;12116:2;12105:9;12101:18;12093:26;;12165:9;12159:4;12155:20;12151:1;12140:9;12136:17;12129:47;12193:131;12319:4;12193:131;:::i;:::-;12185:139;;12083:248;;;:::o;12337:419::-;12503:4;12541:2;12530:9;12526:18;12518:26;;12590:9;12584:4;12580:20;12576:1;12565:9;12561:17;12554:47;12618:131;12744:4;12618:131;:::i;:::-;12610:139;;12508:248;;;:::o;12762:419::-;12928:4;12966:2;12955:9;12951:18;12943:26;;13015:9;13009:4;13005:20;13001:1;12990:9;12986:17;12979:47;13043:131;13169:4;13043:131;:::i;:::-;13035:139;;12933:248;;;:::o;13187:419::-;13353:4;13391:2;13380:9;13376:18;13368:26;;13440:9;13434:4;13430:20;13426:1;13415:9;13411:17;13404:47;13468:131;13594:4;13468:131;:::i;:::-;13460:139;;13358:248;;;:::o;13612:419::-;13778:4;13816:2;13805:9;13801:18;13793:26;;13865:9;13859:4;13855:20;13851:1;13840:9;13836:17;13829:47;13893:131;14019:4;13893:131;:::i;:::-;13885:139;;13783:248;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14208:248;;;:::o;14462:419::-;14628:4;14666:2;14655:9;14651:18;14643:26;;14715:9;14709:4;14705:20;14701:1;14690:9;14686:17;14679:47;14743:131;14869:4;14743:131;:::i;:::-;14735:139;;14633:248;;;:::o;14887:419::-;15053:4;15091:2;15080:9;15076:18;15068:26;;15140:9;15134:4;15130:20;15126:1;15115:9;15111:17;15104:47;15168:131;15294:4;15168:131;:::i;:::-;15160:139;;15058:248;;;:::o;15312:419::-;15478:4;15516:2;15505:9;15501:18;15493:26;;15565:9;15559:4;15555:20;15551:1;15540:9;15536:17;15529:47;15593:131;15719:4;15593:131;:::i;:::-;15585:139;;15483:248;;;:::o;15737:419::-;15903:4;15941:2;15930:9;15926:18;15918:26;;15990:9;15984:4;15980:20;15976:1;15965:9;15961:17;15954:47;16018:131;16144:4;16018:131;:::i;:::-;16010:139;;15908:248;;;:::o;16162:419::-;16328:4;16366:2;16355:9;16351:18;16343:26;;16415:9;16409:4;16405:20;16401:1;16390:9;16386:17;16379:47;16443:131;16569:4;16443:131;:::i;:::-;16435:139;;16333:248;;;:::o;16587:419::-;16753:4;16791:2;16780:9;16776:18;16768:26;;16840:9;16834:4;16830:20;16826:1;16815:9;16811:17;16804:47;16868:131;16994:4;16868:131;:::i;:::-;16860:139;;16758:248;;;:::o;17012:419::-;17178:4;17216:2;17205:9;17201:18;17193:26;;17265:9;17259:4;17255:20;17251:1;17240:9;17236:17;17229:47;17293:131;17419:4;17293:131;:::i;:::-;17285:139;;17183:248;;;:::o;17437:419::-;17603:4;17641:2;17630:9;17626:18;17618:26;;17690:9;17684:4;17680:20;17676:1;17665:9;17661:17;17654:47;17718:131;17844:4;17718:131;:::i;:::-;17710:139;;17608:248;;;:::o;17862:419::-;18028:4;18066:2;18055:9;18051:18;18043:26;;18115:9;18109:4;18105:20;18101:1;18090:9;18086:17;18079:47;18143:131;18269:4;18143:131;:::i;:::-;18135:139;;18033:248;;;:::o;18287:419::-;18453:4;18491:2;18480:9;18476:18;18468:26;;18540:9;18534:4;18530:20;18526:1;18515:9;18511:17;18504:47;18568:131;18694:4;18568:131;:::i;:::-;18560:139;;18458:248;;;:::o;18712:419::-;18878:4;18916:2;18905:9;18901:18;18893:26;;18965:9;18959:4;18955:20;18951:1;18940:9;18936:17;18929:47;18993:131;19119:4;18993:131;:::i;:::-;18985:139;;18883:248;;;:::o;19137:222::-;19230:4;19268:2;19257:9;19253:18;19245:26;;19281:71;19349:1;19338:9;19334:17;19325:6;19281:71;:::i;:::-;19235:124;;;;:::o;19365:332::-;19486:4;19524:2;19513:9;19509:18;19501:26;;19537:71;19605:1;19594:9;19590:17;19581:6;19537:71;:::i;:::-;19618:72;19686:2;19675:9;19671:18;19662:6;19618:72;:::i;:::-;19491:206;;;;;:::o;19703:214::-;19792:4;19830:2;19819:9;19815:18;19807:26;;19843:67;19907:1;19896:9;19892:17;19883:6;19843:67;:::i;:::-;19797:120;;;;:::o;20004:99::-;20056:6;20090:5;20084:12;20074:22;;20063:40;;;:::o;20109:169::-;20193:11;20227:6;20222:3;20215:19;20267:4;20262:3;20258:14;20243:29;;20205:73;;;;:::o;20284:305::-;20324:3;20343:20;20361:1;20343:20;:::i;:::-;20338:25;;20377:20;20395:1;20377:20;:::i;:::-;20372:25;;20531:1;20463:66;20459:74;20456:1;20453:81;20450:2;;;20537:18;;:::i;:::-;20450:2;20581:1;20578;20574:9;20567:16;;20328:261;;;;:::o;20595:191::-;20635:4;20655:20;20673:1;20655:20;:::i;:::-;20650:25;;20689:20;20707:1;20689:20;:::i;:::-;20684:25;;20728:1;20725;20722:8;20719:2;;;20733:18;;:::i;:::-;20719:2;20778:1;20775;20771:9;20763:17;;20640:146;;;;:::o;20792:96::-;20829:7;20858:24;20876:5;20858:24;:::i;:::-;20847:35;;20837:51;;;:::o;20894:90::-;20928:7;20971:5;20964:13;20957:21;20946:32;;20936:48;;;:::o;20990:126::-;21027:7;21067:42;21060:5;21056:54;21045:65;;21035:81;;;:::o;21122:77::-;21159:7;21188:5;21177:16;;21167:32;;;:::o;21205:86::-;21240:7;21280:4;21273:5;21269:16;21258:27;;21248:43;;;:::o;21297:307::-;21365:1;21375:113;21389:6;21386:1;21383:13;21375:113;;;21474:1;21469:3;21465:11;21459:18;21455:1;21450:3;21446:11;21439:39;21411:2;21408:1;21404:10;21399:15;;21375:113;;;21506:6;21503:1;21500:13;21497:2;;;21586:1;21577:6;21572:3;21568:16;21561:27;21497:2;21346:258;;;;:::o;21610:171::-;21649:3;21672:24;21690:5;21672:24;:::i;:::-;21663:33;;21718:4;21711:5;21708:15;21705:2;;;21726:18;;:::i;:::-;21705:2;21773:1;21766:5;21762:13;21755:20;;21653:128;;;:::o;21787:320::-;21831:6;21868:1;21862:4;21858:12;21848:22;;21915:1;21909:4;21905:12;21936:18;21926:2;;21992:4;21984:6;21980:17;21970:27;;21926:2;22054;22046:6;22043:14;22023:18;22020:38;22017:2;;;22073:18;;:::i;:::-;22017:2;21838:269;;;;:::o;22113:233::-;22152:3;22175:24;22193:5;22175:24;:::i;:::-;22166:33;;22221:66;22214:5;22211:77;22208:2;;;22291:18;;:::i;:::-;22208:2;22338:1;22331:5;22327:13;22320:20;;22156:190;;;:::o;22352:180::-;22400:77;22397:1;22390:88;22497:4;22494:1;22487:15;22521:4;22518:1;22511:15;22538:180;22586:77;22583:1;22576:88;22683:4;22680:1;22673:15;22707:4;22704:1;22697:15;22724:180;22772:77;22769:1;22762:88;22869:4;22866:1;22859:15;22893:4;22890:1;22883:15;22910:180;22958:77;22955:1;22948:88;23055:4;23052:1;23045:15;23079:4;23076:1;23069:15;23219:117;23328:1;23325;23318:12;23342:102;23383:6;23434:2;23430:7;23425:2;23418:5;23414:14;23410:28;23400:38;;23390:54;;;:::o;23450:222::-;23590:34;23586:1;23578:6;23574:14;23567:58;23659:5;23654:2;23646:6;23642:15;23635:30;23556:116;:::o;23678:170::-;23818:22;23814:1;23806:6;23802:14;23795:46;23784:64;:::o;23854:176::-;23994:28;23990:1;23982:6;23978:14;23971:52;23960:70;:::o;24036:221::-;24176:34;24172:1;24164:6;24160:14;24153:58;24245:4;24240:2;24232:6;24228:15;24221:29;24142:115;:::o;24263:237::-;24403:34;24399:1;24391:6;24387:14;24380:58;24472:20;24467:2;24459:6;24455:15;24448:45;24369:131;:::o;24506:225::-;24646:34;24642:1;24634:6;24630:14;24623:58;24715:8;24710:2;24702:6;24698:15;24691:33;24612:119;:::o;24737:221::-;24877:34;24873:1;24865:6;24861:14;24854:58;24946:4;24941:2;24933:6;24929:15;24922:29;24843:115;:::o;24964:173::-;25104:25;25100:1;25092:6;25088:14;25081:49;25070:67;:::o;25143:225::-;25283:34;25279:1;25271:6;25267:14;25260:58;25352:8;25347:2;25339:6;25335:15;25328:33;25249:119;:::o;25374:166::-;25514:18;25510:1;25502:6;25498:14;25491:42;25480:60;:::o;25546:225::-;25686:34;25682:1;25674:6;25670:14;25663:58;25755:8;25750:2;25742:6;25738:15;25731:33;25652:119;:::o;25777:227::-;25917:34;25913:1;25905:6;25901:14;25894:58;25986:10;25981:2;25973:6;25969:15;25962:35;25883:121;:::o;26010:182::-;26150:34;26146:1;26138:6;26134:14;26127:58;26116:76;:::o;26198:223::-;26338:34;26334:1;26326:6;26322:14;26315:58;26407:6;26402:2;26394:6;26390:15;26383:31;26304:117;:::o;26427:220::-;26567:34;26563:1;26555:6;26551:14;26544:58;26636:3;26631:2;26623:6;26619:15;26612:28;26533:114;:::o;26653:224::-;26793:34;26789:1;26781:6;26777:14;26770:58;26862:7;26857:2;26849:6;26845:15;26838:32;26759:118;:::o;26883:223::-;27023:34;27019:1;27011:6;27007:14;27000:58;27092:6;27087:2;27079:6;27075:15;27068:31;26989:117;:::o;27112:224::-;27252:34;27248:1;27240:6;27236:14;27229:58;27321:7;27316:2;27308:6;27304:15;27297:32;27218:118;:::o;27342:122::-;27415:24;27433:5;27415:24;:::i;:::-;27408:5;27405:35;27395:2;;27454:1;27451;27444:12;27395:2;27385:79;:::o;27470:122::-;27543:24;27561:5;27543:24;:::i;:::-;27536:5;27533:35;27523:2;;27582:1;27579;27572:12;27523:2;27513:79;:::o

Swarm Source

ipfs://2d1b773217e05733ecf3ab1f1e3a0870d6148f642b38f8d4a5a8ac7339174979
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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