Contract 0x124b06c5ce47de7a6e9efda71a946717130079e6 1

Contract Overview

SoulSwap: SEANCE Token
Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd2cd54792e7c720e00fdc314945065f505b95ee001f706475d6069dd8d636ff1Approve382929612022-05-15 11:59:351 day 23 hrs ago0x9f08966f7219b83d650e4ba980f9740a325598be IN  SoulSwap: SEANCE Token0 FTM0.024240852002
0x4408c1b9de8fb9c147b397a21bdb6bb4efcccca1c0a424daf4ad718d7013a859Approve382929142022-05-15 11:58:111 day 23 hrs ago0x9f08966f7219b83d650e4ba980f9740a325598be IN  SoulSwap: SEANCE Token0 FTM0.015601865102
0x4b589cf06c9fa8642d7ca6aaeea8b19ef7b771e5e83e0ca339b6894da00c17feApprove382929042022-05-15 11:57:551 day 23 hrs ago0x9f08966f7219b83d650e4ba980f9740a325598be IN  SoulSwap: SEANCE Token0 FTM0.024682883706
0xccdd7592de875bbd304171e3db61c02cbc3f23dcfa97347c8fb8e4ed11ce0905Approve382052402022-05-14 6:47:183 days 4 hrs ago0x8fe3a6b02251fb737ac308544a3dd8cae0f016b7 IN  SoulSwap: SEANCE Token0 FTM0.015223168313
0x3d1b501f6a905ff4ac366277b50feb4fe89db12eb81a380e43bdd78088709ceeApprove382009962022-05-14 5:26:073 days 5 hrs ago0x7ffd93d70067adf71e4f43caa4997d2690c1afbe IN  SoulSwap: SEANCE Token0 FTM0.01776112477
0xe3341d053915758e88993e9b5f17413adc4d837d030e85e1505955c130545167Approve377510392022-05-07 10:11:4910 days 58 mins ago0xd5c784d40f9f5e37c3086e78e1902f2284af82b8 IN  SoulSwap: SEANCE Token0 FTM0.01093685831
0x30ac71c813a4eaaf7a792a7fdb29ec9c2b1bf16e610a10f60c647d263ba73232Approve376375882022-05-05 21:57:1611 days 13 hrs ago0x7ffd93d70067adf71e4f43caa4997d2690c1afbe IN  SoulSwap: SEANCE Token0 FTM0.016401353469
0xa7dc2d4750420573e0a05b661ce9b7f3e48731a55a13cb9ce1af7250e5f3f21bApprove376031132022-05-05 10:21:1112 days 49 mins ago0x118ff8c787239fda45603253adcab53652d6e6c1 IN  SoulSwap: SEANCE Token0 FTM0.003352837667
0x80a83966a795e15c27d47a8de100c98c49c4f7dcd2346bcfefbdfcef4d15f42cApprove376031002022-05-05 10:20:5712 days 49 mins ago0x118ff8c787239fda45603253adcab53652d6e6c1 IN  SoulSwap: SEANCE Token0 FTM0.003352837667
0x1d8d7360e0dd5aa7e1eb8d847c3714f29fba5a0d26165a6690c2d920a96bd8e5Approve376026072022-05-05 10:12:4512 days 57 mins ago0x118ff8c787239fda45603253adcab53652d6e6c1 IN  SoulSwap: SEANCE Token0 FTM0.003526413532
0x4aab598689ffbfb67dec8f06b58bfe9b5c4cf92c5dce3de25beac0fc9f06c65aApprove374957882022-05-04 1:10:1113 days 10 hrs ago0xff1fc55b3b5d2cc62b82d1f77da88355e8175254 IN  SoulSwap: SEANCE Token0 FTM0.005345934109
0xc33f23c55d8e2e18e4e1077c9ff67ecf48aa893541987e3a89f9240383155918Approve374386822022-05-03 6:09:0914 days 5 hrs ago0xfed7477754236cefa09507c2ea96a425d4c033e8 IN  SoulSwap: SEANCE Token0 FTM0.016120763971
0x150472641c41646d8adec5d014dcf1f1392f5b227419718da1a9d2d74b5bbf60Approve374082292022-05-02 19:25:5314 days 15 hrs ago0x24b08e5fb037bf6ed5a43dd175cc50fb349c4030 IN  SoulSwap: SEANCE Token0 FTM0.017655632328
0xfbd5d9bdb65d8410e124a3fb2044c94dc9ce963efab6e5d8383f026c215db8feApprove372286132022-04-29 17:29:2017 days 17 hrs ago0x7f9fe499b630f49500e3fe39523b8e02a79be501 IN  SoulSwap: SEANCE Token0 FTM0.087079206854
0xaa8bf4de53d3ca3bc8ef23b10bab05d2045e197e06c61885bb332653648650a2Approve370739312022-04-27 13:30:3119 days 21 hrs ago0x69cd1c2e13113c09a22ff98cbd2db3f682f716b4 IN  SoulSwap: SEANCE Token0 FTM0.002288700825
0xe1c61af184d027c24a269083325db19503cea4c6708f10773930dfe157a38c32Approve369300832022-04-25 12:54:3921 days 22 hrs ago0x6de67de04a609294d5455ebc6f031f5c7d74bc92 IN  SoulSwap: SEANCE Token0 FTM0.015222167502
0x037b960dcbbe4046ac4e3d529d04e12c74bb0a57ad1f9f34e44f789b272bd911Approve369256772022-04-25 11:14:2921 days 23 hrs ago0xdda78cf5c44c6f01fbce9a7fe78cc71e07d185ef IN  SoulSwap: SEANCE Token0 FTM0.008455848623
0xc469f3d88442572bdd712c1f38dacf3ef4a35d3fbf3146a8d4c2d79e1dd235edApprove368746712022-04-24 18:07:5522 days 17 hrs ago0x0879b5aaae9033dafb5380ad32c9619698fe99da IN  SoulSwap: SEANCE Token0 FTM0.011584472696
0xafb85fe14eca543097d1c486b273e11992ca4048aa57f45efc6327fd1f3a1878Approve368719102022-04-24 17:15:4122 days 17 hrs ago0x7ffd93d70067adf71e4f43caa4997d2690c1afbe IN  SoulSwap: SEANCE Token0 FTM0.003698571117
0x420b7e6fe043a00da4041589046904beac2852ffbc991b41cf9261020f6b22faApprove368659722022-04-24 15:21:4222 days 19 hrs ago0x093599e111a14aaefef98573f26a7aa2cc58ebff IN  SoulSwap: SEANCE Token0 FTM0.004649353702
0xa9c77c1b2faa990dfd3d3f871022e285a5608d5c523ab081f9897ff2cb1304fdApprove368659652022-04-24 15:21:3522 days 19 hrs ago0x093599e111a14aaefef98573f26a7aa2cc58ebff IN  SoulSwap: SEANCE Token0 FTM0.007442748646
0xa2c3078b8271070976a006b54be5f1a9dc6d852e2c71f5e870fd1600824c3857Approve367852992022-04-23 14:19:0823 days 20 hrs ago0xbe9090c10129e2f41fe4d4dc5375d49d7574da11 IN  SoulSwap: SEANCE Token0 FTM0.003006087226
0x5f39c25d7879784374c5c60e6b1fca5a080cd5f5bec74e8fbd3a260aa466441eApprove367852802022-04-23 14:18:5023 days 20 hrs ago0xbe9090c10129e2f41fe4d4dc5375d49d7574da11 IN  SoulSwap: SEANCE Token0 FTM0.003256062975
0xbc4ab7bb197e7125baf3205d762869c3bf6705f4b7a4732e0c4e19ef067de657Approve367851292022-04-23 14:16:1023 days 20 hrs ago0xa6cdfe49fb25987d45e8b04773e3974f0820edcb IN  SoulSwap: SEANCE Token0 FTM0.009177642588
0x9a4937620ef63e1e6aac27d24c9263280f489ddc94614c7c033516884a06818dApprove366813952022-04-22 6:47:2625 days 4 hrs ago0x8cbd386cdd54fe9f6dd5e7371cf83aedb642c066 IN  SoulSwap: SEANCE Token0 FTM0.006150023261
[ Download CSV Export 

OVERVIEW

SEANCE represents staked SOUL and is required collateral for unlocking your staked SOUL. Namely, the only way to unstake SOUL is by burning SEANCE.

Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xd85846c4c255d5eef85a66f1af40400edffff7ba83575aa910cf09649dcf1bd8157710912021-08-28 23:15:31261 days 11 hrs ago Soul: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SeanceCircle

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-08-28
*/

/*--------------------------------------------------------------------------------------------------
====================================================================================================
*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~
*~~~*~~~*~~* SeanceCircle.sol |*| SPDX-License-Identifier: MIT |*||*| 0xBuns + DeGatchi ~~~*~~~*~~~*
*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~
====================================================================================================
----------------------------------------------------------------------------------------------------
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy//yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-..-yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-.oo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo..sNNs..sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMNy:`+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh+`:yMMMMMMMMy:`+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/`/hMMMMMMMMMMh\`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy:./hMMMMMMMMMMMMd\.:hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy:.+dMMMMMMMMMMMMMMd+.:yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMms-.omMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMMMMMMMMMMMMMMMMMMMMMNy:.+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd/.:hMMMMMNMMMMMMMMMNNMMMMMMMMMMMh:`/dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/`/hMMNdho/:-..--::::-..--:+shmMMMh\`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMy:`/dNho:-```-/shdmNNNmmdy+:.``.-/ydMd\`:hMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMNy:`/yy\.-/:.-odNMMMMMMMMMMMMNh/./y+../yy\`:yMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMNs-./:.-yhs:`+dMMMMMNdhyhhmNMMMMNs-.yhs:.-/\.-sNMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMsm.`:.:sdNd:`+dMMMdo.s.p.e.l.l.dMMMdo-.sNNh+-.:`msNMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMmo.`/.ymMMNo`:hMMMM-y.-sdmmds-.y-MMMMh`:hMMMdo:\`.omMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMd+../hMMMMMs.`yMMMMMm+/d(soul)b\+sMMMMMy`.sMMMMMh\-`+dmMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMd+..-+dMMMd/`+`uMMMMM.`/6\/.6.\/6\`.MOMMMy`-.dMMMd/`-.+dMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMh/./:`.ooyMMMy`-MOMMM`..`XOXOXOXO`..`MMMOM-`yMMMyoo.`:\.\hMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMh/./hNmy/.-ohNMy-.oNMMMNy/--:/:\:--\odMMMMh:`+mMNms\hNmy\.\hMhMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMNy:.+dMMMMmy+--/who-.omMMMMN.fantom.NMMMNmo.-who\--+yMMMMmd+.:yNMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMNy:.+dMMMMMMMNds/--/+:./yNMMMMMMMMMMMMMNdo-.//:--+ymMMMMMMMMb+.:yNMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMNdo/--.`.:shmNNNMMNNNdy+-``--:+ymNMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMms-.omMMMMMMMMMMMMMMMNmyo/-...-:/++++/:-..-:+shmNMMMMMMMMMMMMMMMmo.-smMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMmo.-sNMMMMMMMMMMMMMMMMMMMMNmdhso++////++sydmNMMMMMMMMMMMMMMMMMMMMMNs-.omMMMMMMMMMMMMMM
MMMMMMMMMMMMMm+.-yNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy-.+mMMMMMMMMMMMMM
MMMMMMMMMMMMd+`:yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy:`+dMMMMMMMMMMMM
MMMMMMMMMMMh/`/hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh\`/hMMMMMMMMMMM
MMMMMMMMMMh:`/dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd\`:hMMMMMMMMMM
MMMMMMMMNy:.+dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd+.:yNMMMMMMMM
MMMMMMNy-`:+seancessssssoooooooooooooooooooooooooooooooooooooooooooooooooooooooosscircle+:`-yNMMMMMM
MMMMMMMNs::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::sNMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
====================================================================================================
~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*~~~*
====================================================================================================
--------------------------------------------------------------------------------------------------*/

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address account) external view returns (uint);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint 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);
}

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint) private _balances;
    mapping(address => mapping(address => uint)) private _allowances;
    uint 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 (uint) { return _totalSupply; }
    function balanceOf(address account) public view virtual override returns (uint) { return _balances[account]; }
    function transfer(address recipient, uint amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, 'ERC20: transfer amount exceeds allowance');
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

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

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

    function _transfer(address sender, address recipient, uint 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);
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, 'ERC20: transfer amount exceeds balance');
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint 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);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint amount) internal virtual {
        require(account != address(0), 'ERC20: burn from the zero address');
        _beforeTokenTransfer(account, address(0), amount);
        uint accountBalance = _balances[account];
        require(accountBalance >= amount, 'ERC20: burn amount exceeds balance');
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

library Strings {
    bytes16 private constant _HEX_SYMBOLS = '0123456789abcdef';

    function toString(uint value) internal pure returns (string memory) {
        if (value == 0) { return '0'; }
        uint temp = value;
        uint digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint value) internal pure returns (string memory) {
        if (value == 0) { return '0x00'; }
        uint temp = value;
        uint length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint value, uint length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = '0';
        buffer[1] = 'x';
        for (uint i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, 'Strings: hex length insufficient');
        return string(buffer);
    }
}

interface IERC165 { 
    function supportsInterface(bytes4 interfaceId) external view returns (bool); 
}

abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {  mapping(address => bool) members; bytes32 adminRole; }
    mapping(bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(string(abi.encodePacked(
                'AccessControl: account ', Strings.toHexString(uint160(account), 20),
                ' is missing role ', Strings.toHexString(uint(role), 32)))
            );
        }
    }

    function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), 'AccessControl: can only renounce roles for self');
        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

contract SoulPower is ERC20('SoulPower', 'SOUL'), AccessControl {

    address public supreme;     // supreme divine
    bytes32 public anunnaki;   // admin role
    bytes32 public thoth;     // minter role

    bytes32 public constant DOMAIN_TYPEHASH = // EIP-712 typehash for the contract's domain
        keccak256('EIP712Domain(string name,uint chainId,address verifyingContract)');
    bytes32 public constant DELEGATION_TYPEHASH = // EIP-712 typehash for the delegation struct used by the contract
        keccak256('Delegation(address delegatee,uint nonce,uint expiry)'); 

    // mappings for user accounts (address)
    mapping(address => mapping(uint => Checkpoint)) public checkpoints;   // vote checkpoints
    mapping(address => uint) public numCheckpoints;                      // checkpoint count
    mapping(address => uint) public nonces;                             // signing / validating states
    mapping(address => address) internal _delegates;                   // each accounts' delegate

    struct Checkpoint {  // checkpoint for marking number of votes from a given timestamp
        uint fromTime;
        uint votes;
    }

    event NewSupreme(address supreme);
    event Rethroned(bytes32 role, address oldAccount, address newAccount);
    event DelegateChanged( // emitted when an account changes its delegate
        address indexed delegator,
        address indexed fromDelegate,
        address indexed toDelegate
    );
    event DelegateVotesChanged( // emitted when a delegate account's vote balance changes
        address indexed delegate,
        uint previousBalance,
        uint newBalance
    );

    // restricted to the house of the role passed as an object to obey
    modifier obey(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    // channels the authority vested in anunnaki and thoth to the supreme
    constructor(address _supreme) {
        supreme = _supreme;
        anunnaki = keccak256('anunnaki'); // alpha supreme
        thoth = keccak256('thoth');      // god of wisdom and magic

        _divinationRitual(DEFAULT_ADMIN_ROLE, DEFAULT_ADMIN_ROLE, supreme); // supreme as root admin
        _divinationRitual(anunnaki, anunnaki, supreme);                    // anunnaki as admin of anunnaki
        _divinationRitual(thoth, anunnaki, supreme);                      // anunnaki as admin of thoth

        mint(supreme, 50000000 * 1e18); // mints initial supply of 50M
    }

    // solidifies roles (internal)
    function _divinationRitual(bytes32 _role, bytes32 _adminRole, address _account) internal {
        _setupRole(_role, _account);
        _setRoleAdmin(_role, _adminRole);
    }

    // grants `role` to `newAccount` && renounces `role` from `oldAccount` (public role)
    function rethroneRitual(bytes32 role, address oldAccount, address newAccount) public obey(role) {
        require(oldAccount != newAccount, 'must be a new address');
        grantRole(role, newAccount);     // grants new account
        renounceRole(role, oldAccount); //  removes old account of role
        
        emit Rethroned(role, oldAccount, newAccount);
    }

    // updates supreme address (public anunnaki)
    function newSupreme(address _supreme) public obey(anunnaki) {
        require(supreme != _supreme, 'make a change, be the change');  //  prevents self-destruct
        rethroneRitual(DEFAULT_ADMIN_ROLE, supreme, _supreme);        //   empowers new supreme
        supreme = _supreme;
        
        emit NewSupreme(supreme);
    }

    // checks whether sender has divine role (public view)
    function hasDivineRole(bytes32 role) public view returns (bool) {
        return hasRole(role, msg.sender);
    }

    // mints soul power as the house of thoth so wills (public thoth)
    function mint(address _to, uint _amount) public obey(thoth) {
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    // destroys `amount` tokens from the caller (public)
    function burn(uint amount) public {
        _burn(_msgSender(), amount);
        _moveDelegates(_delegates[_msgSender()], address(0), amount);
    }

    // destroys `amount` tokens from the `account` (public)
    function burnFrom(address account, uint amount) public {
        uint currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, 'burn amount exceeds allowance');

        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
        _moveDelegates(_delegates[account], address(0), amount);
    }

    // returns the address delegated by a given delegator (external view)
    function delegates(address delegator) external view returns (address) {
        return _delegates[delegator];
    }

    // delegates to the `delegatee` (external)
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    // delegates votes from signatory to `delegatee` (external)
    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        bytes32 domainSeparator = keccak256(
            abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name())), getChainId(), address(this))
        );

        bytes32 structHash = keccak256(
            abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)
        );

        bytes32 digest = keccak256(
            abi.encodePacked('\x19\x01', domainSeparator, structHash)
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), 'delegateBySig: invalid signature');
        require(nonce == nonces[signatory]++, 'delegateBySig: invalid nonce');
        require(block.timestamp <= expiry, 'delegateBySig: signature expired');
        return _delegate(signatory, delegatee);
    }

    // returns current votes balance for `account` (external view)
    function getCurrentVotes(address account) external view returns (uint) {
        uint nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    // returns an account's prior vote count as of a given timestamp (external view)
    function getPriorVotes(address account, uint blockTimestamp) external view returns (uint) {
        require(blockTimestamp < block.timestamp, 'getPriorVotes: not yet determined');
        
        uint nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) { return 0; }

        // checks most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromTime <= blockTimestamp) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // checks implicit zero balance
        if (checkpoints[account][0].fromTime > blockTimestamp) {
            return 0;
        }

        uint lower = 0;
        uint upper = nCheckpoints - 1;
        while (upper > lower) {
            uint center = upper - (upper - lower) / 2; // avoids overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromTime == blockTimestamp) {
                return cp.votes;
            } else if (cp.fromTime < blockTimestamp) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }

        return checkpoints[account][lower].votes;
    }

    function safe256(uint n, string memory errorMessage) internal pure returns (uint) {
        require(n < type(uint).max, errorMessage);
        return uint(n);
    }

    function getChainId() internal view returns (uint) {
        uint chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint delegatorBalance = balanceOf(delegator); // balance of underlying SOUL (not scaled)
        _delegates[delegator] = delegatee;
        emit DelegateChanged(delegator, currentDelegate, delegatee);
        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(address srcRep, address dstRep, uint amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decreases old representative
                uint srcRepNum = numCheckpoints[srcRep];
                uint srcRepOld = srcRepNum > 0
                    ? checkpoints[srcRep][srcRepNum - 1].votes
                    : 0;
                uint srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increases new representative
                uint dstRepNum = numCheckpoints[dstRep];
                uint dstRepOld = dstRepNum > 0
                    ? checkpoints[dstRep][dstRepNum - 1].votes
                    : 0;
                uint dstRepNew = dstRepOld + amount;
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint nCheckpoints,
        uint oldVotes,
        uint newVotes
    ) internal {
        uint blockTimestamp = safe256(block.timestamp, 'block timestamp exceeds 256 bits');

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromTime == blockTimestamp) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else { 
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockTimestamp, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract Operable is Context, Ownable {

    address[] public operators;
    mapping(address => bool) public operator;

    event OperatorUpdated(address indexed operator, bool indexed access);
    constructor () {
        address msgSender = _msgSender();
        operator[msgSender] = true;
        operators.push(msgSender);
        emit OperatorUpdated(msgSender, true);
    }

    modifier onlyOperator() {
        address msgSender = _msgSender();
        require(operator[msgSender], "Operator: caller is not an operator");
        _;
    }

    function removeOperator(address removingOperator) public virtual onlyOperator {
        require(operator[removingOperator], 'Operable: address is not an operator');
        operator[removingOperator] = false;
        for (uint8 i; i < operators.length; i++) {
            if (operators[i] == removingOperator) {
                operators[i] = operators[i+1];
                operators.pop();
                emit OperatorUpdated(removingOperator, false);
                return;
            }
        }
    }

    function addOperator(address newOperator) public virtual onlyOperator {
        require(newOperator != address(0), "Operable: new operator is the zero address");
        require(!operator[newOperator], 'Operable: address is already an operator');
        operator[newOperator] = true;
        operators.push(newOperator);
        emit OperatorUpdated(newOperator, true);
    }
}

// SeanceCircle with Governance.
contract SeanceCircle is ERC20('SeanceCircle', 'SEANCE'), Ownable, Operable {

    SoulPower public soul;
    bool isInitialized;

    function mint(address _to, uint256 _amount) public onlyOperator {
        require(isInitialized, 'the circle has not yet begun');
        _mint(_to, _amount);
        _moveDelegates(address(0), _delegates[_to], _amount);
    }

    function burn(address _from ,uint256 _amount) public onlyOperator {
        _burn(_from, _amount);
        _moveDelegates(_delegates[_from], address(0), _amount);
    }

    function initialize(SoulPower _soul) external onlyOwner {
        require(!isInitialized, 'the circle has already begun');
        soul = _soul;
        isInitialized = true;
    }

    // safe soul transfer function, just in case if rounding error causes pool to not have enough SOUL.
    function safeSoulTransfer(address _to, uint256 _amount) public onlyOperator {
        uint256 soulBal = soul.balanceOf(address(this));
        if (_amount > soulBal) {
            soul.transfer(_to, soulBal);
        } else {
            soul.transfer(_to, _amount);
        }
    }

    // record of each accounts delegate
    mapping (address => address) internal _delegates;

    // checkpoint for marking number of votes from a given block timestamp
    struct Checkpoint {
        uint256 fromTime;
        uint256 votes;
    }

    // record of votes checkpoints for each account, by index
    mapping (address => mapping (uint256 => Checkpoint)) public checkpoints;

    // number of checkpoints for each account
    mapping (address => uint256) public numCheckpoints;

    // EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    // EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    // record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    // emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    // emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    // returns the address delegated by a given delegator (external view)
    function delegates(address delegator) external view returns (address) { return _delegates[delegator]; }

    // delegates to the `delegatee` (external)
    function delegate(address delegatee) external { return _delegate(msg.sender, delegatee); }

    // delegates votes from signatory to `delegatee` (external)
    function delegateBySig(
        address delegatee,
        uint nonce,
        uint expiry,
        uint8 v,
        bytes32 r,
        bytes32 s
    )
        external
    {
        bytes32 domainSeparator = keccak256(
            abi.encode(
                DOMAIN_TYPEHASH,
                keccak256(bytes(name())),
                getChainId(),
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                DELEGATION_TYPEHASH,
                delegatee,
                nonce,
                expiry
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                "\x19\x01",
                domainSeparator,
                structHash
            )
        );

        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "SOUL::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "SOUL::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "SOUL::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    // returns current votes balance for `account` (external view)
    function getCurrentVotes(address account) external view returns (uint) {
        uint nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    // returns an account's prior vote count as of a given timestamp (external view)
    function getPriorVotes(address account, uint blockTimestamp) external view returns (uint256) {
        require(blockTimestamp < block.timestamp, "SOUL::getPriorVotes: not yet determined");

        uint256 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // checks most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromTime <= blockTimestamp) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // checks implicit zero balance
        if (checkpoints[account][0].fromTime > blockTimestamp) {
            return 0;
        }

        uint256 lower = 0;
        uint256 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint256 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromTime == blockTimestamp) {
                return cp.votes;
            } else if (cp.fromTime < blockTimestamp) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator); // balance of underlying SOUL (not scaled);
        _delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint256 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increase new representative
                uint256 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld + amount;
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint256 nCheckpoints,
        uint256 oldVotes,
        uint256 newVotes
    )
        internal
    {
        uint256 blockTimestamp = safe256(block.timestamp, "SOUL::_writeCheckpoint: block timestamp exceeds 256 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromTime == blockTimestamp) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockTimestamp, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe256(uint n, string memory errorMessage) internal pure returns (uint256) {
        require(n < type(uint256).max, errorMessage);
        return uint256(n);
    }

    function getChainId() internal view returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }

    function newSoul(SoulPower _soul) external onlyOperator {
        require(soul != _soul, 'must be a new address');
        soul = _soul;
    }
}

Contract Security Audit

Contract ABI

[{"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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"bool","name":"access","type":"bool"}],"name":"OperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"checkpoints","outputs":[{"internalType":"uint256","name":"fromTime","type":"uint256"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"contract SoulPower","name":"_soul","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract SoulPower","name":"_soul","type":"address"}],"name":"newSoul","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"operator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"operators","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"removingOperator","type":"address"}],"name":"removeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"safeSoulTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soul","outputs":[{"internalType":"contract SoulPower","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f5365616e6365436972636c6500000000000000000000000000000000000000008152506040518060400160405280600681526020017f5345414e43450000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620002bd565b508060049080519060200190620000af929190620002bd565b505050620000d2620000c6620001ef60201b60201c565b620001f760201b60201c565b6000620000e4620001ef60201b60201c565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600115158173ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a350620003d2565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002cb906200036d565b90600052602060002090601f016020900481019282620002ef57600085556200033b565b82601f106200030a57805160ff19168380011785556200033b565b828001600101855582156200033b579182015b828111156200033a5782518255916020019190600101906200031d565b5b5090506200034a91906200034e565b5090565b5b80821115620003695760008160009055506001016200034f565b5090565b600060028204905060018216806200038657607f821691505b602082108114156200039d576200039c620003a3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61491b80620003e26000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063815b7a8c1161011a578063ac8a584a116100ad578063c4d66de81161007c578063c4d66de814610638578063dd62ed3e14610654578063e28d490614610684578063e7a324dc146106b4578063f2fde38b146106d257610206565b8063ac8a584a146105b4578063b2a142aa146105d0578063b4b5ea57146105ec578063c3cda5201461061c57610206565b80639a307391116100e95780639a307391146105085780639dc29fac14610538578063a457c2d714610554578063a9059cbb1461058457610206565b8063815b7a8c146104925780638da5cb5b146104b057806395d89b41146104ce5780639870d7fe146104ec57610206565b8063395093511161019d5780636fcfff451161016c5780636fcfff45146103c857806370a08231146103f8578063715018a614610428578063782d6fe1146104325780637ecebe001461046257610206565b8063395093511461033057806340c10f1914610360578063587cde1e1461037c5780635c19a95c146103ac57610206565b806320606b70116101d957806320606b70146102a857806323b872dd146102c6578063260cf996146102f6578063313ce5671461031257610206565b806306fdde031461020b578063095ea7b3146102295780630cdfebfa1461025957806318160ddd1461028a575b600080fd5b6102136106ee565b6040516102209190613b10565b60405180910390f35b610243600480360381019061023e919061341a565b610780565b60405161025091906139f0565b60405180910390f35b610273600480360381019061026e919061341a565b61079e565b604051610281929190613e2d565b60405180910390f35b6102926107cf565b60405161029f9190613e12565b60405180910390f35b6102b06107d9565b6040516102bd9190613a0b565b60405180910390f35b6102e060048036038101906102db91906133cb565b6107fd565b6040516102ed91906139f0565b60405180910390f35b610310600480360381019061030b9190613508565b6108fe565b005b61031a610a6c565b6040516103279190613e56565b60405180910390f35b61034a6004803603810190610345919061341a565b610a75565b60405161035791906139f0565b60405180910390f35b61037a6004803603810190610375919061341a565b610b21565b005b61039660048036038101906103919190613366565b610c82565b6040516103a391906139ac565b60405180910390f35b6103c660048036038101906103c19190613366565b610ceb565b005b6103e260048036038101906103dd9190613366565b610cf8565b6040516103ef9190613e12565b60405180910390f35b610412600480360381019061040d9190613366565b610d10565b60405161041f9190613e12565b60405180910390f35b610430610d58565b005b61044c6004803603810190610447919061341a565b610de0565b6040516104599190613e12565b60405180910390f35b61047c60048036038101906104779190613366565b61110b565b6040516104899190613e12565b60405180910390f35b61049a611123565b6040516104a79190613af5565b60405180910390f35b6104b8611149565b6040516104c591906139ac565b60405180910390f35b6104d6611173565b6040516104e39190613b10565b60405180910390f35b61050660048036038101906105019190613366565b611205565b005b610522600480360381019061051d9190613366565b6114a0565b60405161052f91906139f0565b60405180910390f35b610552600480360381019061054d919061341a565b6114c0565b005b61056e6004803603810190610569919061341a565b6115d2565b60405161057b91906139f0565b60405180910390f35b61059e6004803603810190610599919061341a565b6116c6565b6040516105ab91906139f0565b60405180910390f35b6105ce60048036038101906105c99190613366565b6116e4565b005b6105ea60048036038101906105e5919061341a565b611ada565b005b61060660048036038101906106019190613366565b611d95565b6040516106139190613e12565b60405180910390f35b61063660048036038101906106319190613456565b611e52565b005b610652600480360381019061064d9190613508565b6120e7565b005b61066e6004803603810190610669919061338f565b612212565b60405161067b9190613e12565b60405180910390f35b61069e60048036038101906106999190613531565b612299565b6040516106ab91906139ac565b60405180910390f35b6106bc6122d8565b6040516106c99190613a0b565b60405180910390f35b6106ec60048036038101906106e79190613366565b6122fc565b005b6060600380546106fd90614052565b80601f016020809104026020016040519081016040528092919081815260200182805461072990614052565b80156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b5050505050905090565b600061079461078d6123f4565b84846123fc565b6001905092915050565b600a602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600061080a8484846125c7565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108556123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90613c52565b60405180910390fd5b6108f2856108e16123f4565b85846108ed9190613f56565b6123fc565b60019150509392505050565b60006109086123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90613d52565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1e90613cb2565b60405180910390fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006012905090565b6000610b17610a826123f4565b848460016000610a906123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b129190613e98565b6123fc565b6001905092915050565b6000610b2b6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb090613d52565b60405180910390fd5b600860149054906101000a900460ff16610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613d72565b60405180910390fd5b610c128383612851565b610c7d6000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846129b1565b505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610cf53382612c0e565b50565b600b6020528060005260406000206000915090505481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d606123f4565b73ffffffffffffffffffffffffffffffffffffffff16610d7e611149565b73ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb90613c92565b60405180910390fd5b610dde6000612d7f565b565b6000428210610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b90613c72565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415610e7b576000915050611105565b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184610eca9190613f56565b81526020019081526020016000206000015411610f4957600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610f2f9190613f56565b815260200190815260200160002060010154915050611105565b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020600001541115610fae576000915050611105565b600080600183610fbe9190613f56565b90505b818111156110ab57600060028383610fd99190613f56565b610fe39190613f25565b82610fee9190613f56565b90506000600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050868160000151141561108057806020015195505050505050611105565b8681600001511015611094578193506110a4565b6001826110a19190613f56565b92505b5050610fc1565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015493505050505b92915050565b600c6020528060005260406000206000915090505481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461118290614052565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae90614052565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b5050505050905090565b600061120f6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129490613d52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613bb2565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190613cd2565b60405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600115158273ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a35050565b60076020528060005260406000206000915054906101000a900460ff1681565b60006114ca6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154f90613d52565b60405180910390fd5b6115628383612e45565b6115cd600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000846129b1565b505050565b600080600160006115e16123f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561169e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169590613dd2565b60405180910390fd5b6116bb6116a96123f4565b8585846116b69190613f56565b6123fc565b600191505092915050565b60006116da6116d36123f4565b84846125c7565b6001905092915050565b60006116ee6123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661177c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177390613d52565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ff90613c12565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b6006805490508160ff161015611ad4578273ffffffffffffffffffffffffffffffffffffffff1660068260ff16815481106118c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ac157600660018261191d9190613eee565b60ff1681548110611957577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068260ff16815481106119bf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006805480611a3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600015158373ffffffffffffffffffffffffffffffffffffffff167f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d60405160405180910390a350611ad6565b8080611acc906140cd565b915050611863565b505b5050565b6000611ae46123f4565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990613d52565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bcf91906139ac565b60206040518083038186803b158015611be757600080fd5b505afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f919061355a565b905080831115611cde57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401611c869291906139c7565b602060405180830381600087803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd891906134df565b50611d8f565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b8152600401611d3b9291906139c7565b602060405180830381600087803b158015611d5557600080fd5b505af1158015611d69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8d91906134df565b505b50505050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111611de9576000611e4a565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183611e379190613f56565b8152602001908152602001600020600101545b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611e7d6106ee565b80519060200120611e8c613025565b30604051602001611ea09493929190613a6b565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001611ef19493929190613a26565b60405160208183030381529060405280519060200120905060008282604051602001611f1e929190613975565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611f5b9493929190613ab0565b6020604051602081039080840390855afa158015611f7d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090613c32565b60405180910390fd5b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061204990614084565b91905055891461208e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208590613bd2565b60405180910390fd5b874211156120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613db2565b60405180910390fd5b6120db818b612c0e565b50505050505050505050565b6120ef6123f4565b73ffffffffffffffffffffffffffffffffffffffff1661210d611149565b73ffffffffffffffffffffffffffffffffffffffff1614612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a90613c92565b60405180910390fd5b600860149054906101000a900460ff16156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613d12565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600681815481106122a957600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6123046123f4565b73ffffffffffffffffffffffffffffffffffffffff16612322611149565b73ffffffffffffffffffffffffffffffffffffffff1614612378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236f90613c92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123df90613b72565b60405180910390fd5b6123f181612d7f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561246c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246390613d92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d390613b92565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125ba9190613e12565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262e90613d32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90613b32565b60405180910390fd5b6126b2838383613032565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613bf2565b60405180910390fd5b81816127449190613f56565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d49190613e98565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128389190613e12565b60405180910390a361284b848484613037565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b890613df2565b60405180910390fd5b6128cd60008383613032565b80600260008282546128df9190613e98565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129349190613e98565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129999190613e12565b60405180910390a36129ad60008383613037565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ed5750600081115b15612c0957600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612afd576000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808211612a7a576000612adb565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184612ac89190613f56565b8152602001908152602001600020600101545b905060008382612aeb9190613f56565b9050612af98684848461303c565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612c08576000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000808211612b85576000612be6565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600184612bd39190613f56565b8152602001908152602001600020600101545b905060008382612bf69190613e98565b9050612c048584848461303c565b5050505b5b505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612c7d84610d10565b905082600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612d798284836129b1565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eac90613cf2565b60405180910390fd5b612ec182600083613032565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e90613b52565b60405180910390fd5b8181612f539190613f56565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612fa79190613f56565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300c9190613e12565b60405180910390a361302083600084613037565b505050565b6000804690508091505090565b505050565b505050565b6000613060426040518060600160405280603881526020016148ae60389139613262565b90506000841180156130d0575080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876130bc9190613f56565b815260200190815260200160002060000154145b1561313e5781600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876131249190613f56565b81526020019081526020016000206001018190555061320b565b604051806040016040528082815260200183815250600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008201518160000155602082015181600101559050506001846131c79190613e98565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051613253929190613e2d565b60405180910390a25050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831082906132c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132c09190613b10565b60405180910390fd5b5082905092915050565b6000813590506132e281614823565b92915050565b6000815190506132f78161483a565b92915050565b60008135905061330c81614851565b92915050565b60008135905061332181614868565b92915050565b6000813590506133368161487f565b92915050565b60008151905061334b8161487f565b92915050565b60008135905061336081614896565b92915050565b60006020828403121561337857600080fd5b6000613386848285016132d3565b91505092915050565b600080604083850312156133a257600080fd5b60006133b0858286016132d3565b92505060206133c1858286016132d3565b9150509250929050565b6000806000606084860312156133e057600080fd5b60006133ee868287016132d3565b93505060206133ff868287016132d3565b925050604061341086828701613327565b9150509250925092565b6000806040838503121561342d57600080fd5b600061343b858286016132d3565b925050602061344c85828601613327565b9150509250929050565b60008060008060008060c0878903121561346f57600080fd5b600061347d89828a016132d3565b965050602061348e89828a01613327565b955050604061349f89828a01613327565b94505060606134b089828a01613351565b93505060806134c189828a016132fd565b92505060a06134d289828a016132fd565b9150509295509295509295565b6000602082840312156134f157600080fd5b60006134ff848285016132e8565b91505092915050565b60006020828403121561351a57600080fd5b600061352884828501613312565b91505092915050565b60006020828403121561354357600080fd5b600061355184828501613327565b91505092915050565b60006020828403121561356c57600080fd5b600061357a8482850161333c565b91505092915050565b61358c81613f8a565b82525050565b61359b81613f9c565b82525050565b6135aa81613fa8565b82525050565b6135c16135bc82613fa8565b6140f7565b82525050565b6135d081613ffb565b82525050565b60006135e182613e71565b6135eb8185613e7c565b93506135fb81856020860161401f565b6136048161418e565b840191505092915050565b600061361c602383613e7c565b91506136278261419f565b604082019050919050565b600061363f602283613e7c565b915061364a826141ee565b604082019050919050565b6000613662602683613e7c565b915061366d8261423d565b604082019050919050565b6000613685602283613e7c565b91506136908261428c565b604082019050919050565b60006136a8602a83613e7c565b91506136b3826142db565b604082019050919050565b60006136cb600283613e8d565b91506136d68261432a565b600282019050919050565b60006136ee602283613e7c565b91506136f982614353565b604082019050919050565b6000613711602683613e7c565b915061371c826143a2565b604082019050919050565b6000613734602483613e7c565b915061373f826143f1565b604082019050919050565b6000613757602683613e7c565b915061376282614440565b604082019050919050565b600061377a602883613e7c565b91506137858261448f565b604082019050919050565b600061379d602783613e7c565b91506137a8826144de565b604082019050919050565b60006137c0602083613e7c565b91506137cb8261452d565b602082019050919050565b60006137e3601583613e7c565b91506137ee82614556565b602082019050919050565b6000613806602883613e7c565b91506138118261457f565b604082019050919050565b6000613829602183613e7c565b9150613834826145ce565b604082019050919050565b600061384c601c83613e7c565b91506138578261461d565b602082019050919050565b600061386f602583613e7c565b915061387a82614646565b604082019050919050565b6000613892602383613e7c565b915061389d82614695565b604082019050919050565b60006138b5601c83613e7c565b91506138c0826146e4565b602082019050919050565b60006138d8602483613e7c565b91506138e38261470d565b604082019050919050565b60006138fb602683613e7c565b91506139068261475c565b604082019050919050565b600061391e602583613e7c565b9150613929826147ab565b604082019050919050565b6000613941601f83613e7c565b915061394c826147fa565b602082019050919050565b61396081613fe4565b82525050565b61396f81613fee565b82525050565b6000613980826136be565b915061398c82856135b0565b60208201915061399c82846135b0565b6020820191508190509392505050565b60006020820190506139c16000830184613583565b92915050565b60006040820190506139dc6000830185613583565b6139e96020830184613957565b9392505050565b6000602082019050613a056000830184613592565b92915050565b6000602082019050613a2060008301846135a1565b92915050565b6000608082019050613a3b60008301876135a1565b613a486020830186613583565b613a556040830185613957565b613a626060830184613957565b95945050505050565b6000608082019050613a8060008301876135a1565b613a8d60208301866135a1565b613a9a6040830185613957565b613aa76060830184613583565b95945050505050565b6000608082019050613ac560008301876135a1565b613ad26020830186613966565b613adf60408301856135a1565b613aec60608301846135a1565b95945050505050565b6000602082019050613b0a60008301846135c7565b92915050565b60006020820190508181036000830152613b2a81846135d6565b905092915050565b60006020820190508181036000830152613b4b8161360f565b9050919050565b60006020820190508181036000830152613b6b81613632565b9050919050565b60006020820190508181036000830152613b8b81613655565b9050919050565b60006020820190508181036000830152613bab81613678565b9050919050565b60006020820190508181036000830152613bcb8161369b565b9050919050565b60006020820190508181036000830152613beb816136e1565b9050919050565b60006020820190508181036000830152613c0b81613704565b9050919050565b60006020820190508181036000830152613c2b81613727565b9050919050565b60006020820190508181036000830152613c4b8161374a565b9050919050565b60006020820190508181036000830152613c6b8161376d565b9050919050565b60006020820190508181036000830152613c8b81613790565b9050919050565b60006020820190508181036000830152613cab816137b3565b9050919050565b60006020820190508181036000830152613ccb816137d6565b9050919050565b60006020820190508181036000830152613ceb816137f9565b9050919050565b60006020820190508181036000830152613d0b8161381c565b9050919050565b60006020820190508181036000830152613d2b8161383f565b9050919050565b60006020820190508181036000830152613d4b81613862565b9050919050565b60006020820190508181036000830152613d6b81613885565b9050919050565b60006020820190508181036000830152613d8b816138a8565b9050919050565b60006020820190508181036000830152613dab816138cb565b9050919050565b60006020820190508181036000830152613dcb816138ee565b9050919050565b60006020820190508181036000830152613deb81613911565b9050919050565b60006020820190508181036000830152613e0b81613934565b9050919050565b6000602082019050613e276000830184613957565b92915050565b6000604082019050613e426000830185613957565b613e4f6020830184613957565b9392505050565b6000602082019050613e6b6000830184613966565b92915050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613ea382613fe4565b9150613eae83613fe4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ee357613ee2614101565b5b828201905092915050565b6000613ef982613fee565b9150613f0483613fee565b92508260ff03821115613f1a57613f19614101565b5b828201905092915050565b6000613f3082613fe4565b9150613f3b83613fe4565b925082613f4b57613f4a614130565b5b828204905092915050565b6000613f6182613fe4565b9150613f6c83613fe4565b925082821015613f7f57613f7e614101565b5b828203905092915050565b6000613f9582613fc4565b9050919050565b60008115159050919050565b6000819050919050565b6000613fbd82613f8a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140068261400d565b9050919050565b600061401882613fc4565b9050919050565b60005b8381101561403d578082015181840152602081019050614022565b8381111561404c576000848401525b50505050565b6000600282049050600182168061406a57607f821691505b6020821081141561407e5761407d61415f565b5b50919050565b600061408f82613fe4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140c2576140c1614101565b5b600182019050919050565b60006140d882613fee565b915060ff8214156140ec576140eb614101565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261626c653a206e6577206f70657261746f7220697320746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f534f554c3a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261626c653a2061646472657373206973206e6f7420616e206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a64656c656761746542795369673a20696e76616c69642073696760008201527f6e61747572650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6d7573742062652061206e657720616464726573730000000000000000000000600082015250565b7f4f70657261626c653a206164647265737320697320616c726561647920616e2060008201527f6f70657261746f72000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f74686520636972636c652068617320616c726561647920626567756e00000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4f70657261746f723a2063616c6c6572206973206e6f7420616e206f7065726160008201527f746f720000000000000000000000000000000000000000000000000000000000602082015250565b7f74686520636972636c6520686173206e6f742079657420626567756e00000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f534f554c3a3a64656c656761746542795369673a207369676e6174757265206560008201527f7870697265640000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61482c81613f8a565b811461483757600080fd5b50565b61484381613f9c565b811461484e57600080fd5b50565b61485a81613fa8565b811461486557600080fd5b50565b61487181613fb2565b811461487c57600080fd5b50565b61488881613fe4565b811461489357600080fd5b50565b61489f81613fee565b81146148aa57600080fd5b5056fe534f554c3a3a5f7772697465436865636b706f696e743a20626c6f636b2074696d657374616d702065786365656473203235362062697473a2646970667358221220dbf57a198d2d7806ce66999da684530b4d67b0f58595dbcfba083196662dc8cd64736f6c63430008040033

Deployed ByteCode Sourcemap

28530:8300:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7739:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30003:71;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7190:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30240:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7913:412;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36682:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7105:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8333:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28670:230;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31084:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31243:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30130:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7287:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26517:94;;;:::i;:::-;;32984:1233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30630:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28615:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26294:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28107:382;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27088:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28908:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8553:369;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:172;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27580:519;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29384:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32672:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31406:1190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29087:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7583:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27055:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30443:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26619:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6917:86;6971:13;6995:5;6988:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:86;:::o;7739:166::-;7819:4;7836:39;7845:12;:10;:12::i;:::-;7859:7;7868:6;7836:8;:39::i;:::-;7893:4;7886:11;;7739:166;;;;:::o;30003:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7190:91::-;7251:4;7266:12;;7259:19;;7190:91;:::o;30240:122::-;30282:80;30240:122;:::o;7913:412::-;8016:4;8033:36;8043:6;8051:9;8062:6;8033:9;:36::i;:::-;8080:21;8104:11;:19;8116:6;8104:19;;;;;;;;;;;;;;;:33;8124:12;:10;:12::i;:::-;8104:33;;;;;;;;;;;;;;;;8080:57;;8176:6;8156:16;:26;;8148:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8238:57;8247:6;8255:12;:10;:12::i;:::-;8288:6;8269:16;:25;;;;:::i;:::-;8238:8;:57::i;:::-;8313:4;8306:11;;;7913:412;;;;;:::o;36682:145::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36765:5:::1;36757:13;;:4;;;;;;;;;;;:13;;;;36749:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;36814:5;36807:4;;:12;;;;;;;;;;;;;;;;;;36682:145:::0;;:::o;7105:79::-;7163:5;7179:2;7172:9;;7105:79;:::o;8333:212::-;8418:4;8435:80;8444:12;:10;:12::i;:::-;8458:7;8504:10;8467:11;:25;8479:12;:10;:12::i;:::-;8467:25;;;;;;;;;;;;;;;:34;8493:7;8467:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8435:8;:80::i;:::-;8533:4;8526:11;;8333:212;;;;:::o;28670:230::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28753:13:::1;;;;;;;;;;;28745:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28810:19;28816:3;28821:7;28810:5;:19::i;:::-;28840:52;28863:1;28867:10;:15;28878:3;28867:15;;;;;;;;;;;;;;;;;;;;;;;;;28884:7;28840:14;:52::i;:::-;28670:230:::0;;;:::o;31084:103::-;31145:7;31163:10;:21;31174:9;31163:21;;;;;;;;;;;;;;;;;;;;;;;;;31156:28;;31084:103;;;:::o;31243:90::-;31298:32;31308:10;31320:9;31298;:32::i;:::-;31243:90;:::o;30130:50::-;;;;;;;;;;;;;;;;;:::o;7287:110::-;7361:4;7376:9;:18;7386:7;7376:18;;;;;;;;;;;;;;;;7369:25;;7287:110;;;:::o;26517:94::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26582:21:::1;26600:1;26582:9;:21::i;:::-;26517:94::o:0;32984:1233::-;33068:7;33113:15;33096:14;:32;33088:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;33185:20;33208:14;:23;33223:7;33208:23;;;;;;;;;;;;;;;;33185:46;;33262:1;33246:12;:17;33242:58;;;33287:1;33280:8;;;;;33242:58;33406:14;33355:11;:20;33367:7;33355:20;;;;;;;;;;;;;;;:38;33391:1;33376:12;:16;;;;:::i;:::-;33355:38;;;;;;;;;;;:47;;;:65;33351:149;;33444:11;:20;33456:7;33444:20;;;;;;;;;;;;;;;:38;33480:1;33465:12;:16;;;;:::i;:::-;33444:38;;;;;;;;;;;:44;;;33437:51;;;;;33351:149;33592:14;33557:11;:20;33569:7;33557:20;;;;;;;;;;;;;;;:23;33578:1;33557:23;;;;;;;;;;;:32;;;:49;33553:90;;;33630:1;33623:8;;;;;33553:90;33655:13;33683;33714:1;33699:12;:16;;;;:::i;:::-;33683:32;;33726:433;33741:5;33733;:13;33726:433;;;33763:14;33806:1;33797:5;33789;:13;;;;:::i;:::-;33788:19;;;;:::i;:::-;33780:5;:27;;;;:::i;:::-;33763:44;;33849:20;33872:11;:20;33884:7;33872:20;;;;;;;;;;;;;;;:28;33893:6;33872:28;;;;;;;;;;;33849:51;;;;;;;;;;;;;;;;;;;;;;;;;;;33934:14;33919:2;:11;;;:29;33915:233;;;33976:2;:8;;;33969:15;;;;;;;;;33915:233;34024:14;34010:2;:11;;;:28;34006:142;;;34067:6;34059:14;;34006:142;;;34131:1;34122:6;:10;;;;:::i;:::-;34114:18;;34006:142;33726:433;;;;;34176:11;:20;34188:7;34176:20;;;;;;;;;;;;;;;:27;34197:5;34176:27;;;;;;;;;;;:33;;;34169:40;;;;;32984:1233;;;;;:::o;30630:39::-;;;;;;;;;;;;;;;;;:::o;28615:21::-;;;;;;;;;;;;;:::o;26294:87::-;26340:7;26367:6;;;;;;;;;;;26360:13;;26294:87;:::o;7009:90::-;7065:13;7089:7;7082:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7009:90;:::o;28107:382::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28219:1:::1;28196:25;;:11;:25;;;;28188:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;28288:8;:21;28297:11;28288:21;;;;;;;;;;;;;;;;;;;;;;;;;28287:22;28279:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;28389:4;28365:8;:21;28374:11;28365:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;28404:9;28419:11;28404:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28476:4;28447:34;;28463:11;28447:34;;;;;;;;;;;;28107:382:::0;;:::o;27088:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;28908:171::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28985:21:::1;28991:5;28998:7;28985:5;:21::i;:::-;29017:54;29032:10;:17;29043:5;29032:17;;;;;;;;;;;;;;;;;;;;;;;;;29059:1;29063:7;29017:14;:54::i;:::-;28908:171:::0;;;:::o;8553:369::-;8643:4;8660:21;8684:11;:25;8696:12;:10;:12::i;:::-;8684:25;;;;;;;;;;;;;;;:34;8710:7;8684:34;;;;;;;;;;;;;;;;8660:58;;8757:15;8737:16;:35;;8729:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;8825:67;8834:12;:10;:12::i;:::-;8848:7;8876:15;8857:16;:34;;;;:::i;:::-;8825:8;:67::i;:::-;8910:4;8903:11;;;8553:369;;;;:::o;7403:172::-;7486:4;7503:42;7513:12;:10;:12::i;:::-;7527:9;7538:6;7503:9;:42::i;:::-;7563:4;7556:11;;7403:172;;;;:::o;27580:519::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27677:8:::1;:26;27686:16;27677:26;;;;;;;;;;;;;;;;;;;;;;;;;27669:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27784:5;27755:8;:26;27764:16;27755:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;27805:7;27800:292;27818:9;:16;;;;27814:1;:20;;;27800:292;;;27876:16;27860:32;;:9;27870:1;27860:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;27856:225;;;27928:9;27940:1;27938;:3;;;;:::i;:::-;27928:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27913:9;27923:1;27913:12;;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;27961:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28034:5;28000:40;;28016:16;28000:40;;;;;;;;;;;;28059:7;;;27856:225;27836:3;;;;;:::i;:::-;;;;27800:292;;;;27563:1;27580:519:::0;;:::o;29384:289::-;27442:17;27462:12;:10;:12::i;:::-;27442:32;;27493:8;:19;27502:9;27493:19;;;;;;;;;;;;;;;;;;;;;;;;;27485:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29471:15:::1;29489:4;;;;;;;;;;;:14;;;29512:4;29489:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29471:47;;29543:7;29533;:17;29529:137;;;29567:4;;;;;;;;;;;:13;;;29581:3;29586:7;29567:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29529:137;;;29627:4;;;;;;;;;;;:13;;;29641:3;29646:7;29627:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29529:137;27563:1;29384:289:::0;;;:::o;32672:218::-;32737:4;32754:17;32774:14;:23;32789:7;32774:23;;;;;;;;;;;;;;;;32754:43;;32830:1;32815:12;:16;:67;;32881:1;32815:67;;;32834:11;:20;32846:7;32834:20;;;;;;;;;;;;;;;:38;32870:1;32855:12;:16;;;;:::i;:::-;32834:38;;;;;;;;;;;:44;;;32815:67;32808:74;;;32672:218;;;:::o;31406:1190::-;31599:23;30282:80;31728:6;:4;:6::i;:::-;31712:24;;;;;;31755:12;:10;:12::i;:::-;31794:4;31649:165;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31625:200;;;;;;31599:226;;31838:18;30489:71;31950:9;31978:5;32002:6;31883:140;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;31859:175;;;;;;31838:196;;32047:14;32152:15;32186:10;32088:123;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32064:158;;;;;;32047:175;;32235:17;32255:26;32265:6;32273:1;32276;32279;32255:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32235:46;;32321:1;32300:23;;:9;:23;;;;32292:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;32394:6;:17;32401:9;32394:17;;;;;;;;;;;;;;;;:19;;;;;;;;;:::i;:::-;;;;;32385:5;:28;32377:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;32490:6;32471:15;:25;;32463:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32557:31;32567:9;32578;32557;:31::i;:::-;32550:38;;;;31406:1190;;;;;;:::o;29087:184::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29163:13:::1;;;;;;;;;;;29162:14;29154:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;29227:5;29220:4;;:12;;;;;;;;;;;;;;;;;;29259:4;29243:13;;:20;;;;;;;;;;;;;;;;;;29087:184:::0;:::o;7583:148::-;7672:4;7696:11;:18;7708:5;7696:18;;;;;;;;;;;;;;;:27;7715:7;7696:27;;;;;;;;;;;;;;;;7689:34;;7583:148;;;;:::o;27055:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30443:117::-;30489:71;30443:117;:::o;26619:192::-;26440:12;:10;:12::i;:::-;26429:23;;:7;:5;:7::i;:::-;:23;;;26421:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26728:1:::1;26708:22;;:8;:22;;;;26700:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26784:19;26794:8;26784:9;:19::i;:::-;26619:192:::0;:::o;6342:84::-;6395:7;6413:10;6406:17;;6342:84;:::o;10534:341::-;10650:1;10633:19;;:5;:19;;;;10625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10731:1;10712:21;;:7;:21;;;;10704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10813:6;10783:11;:18;10795:5;10783:18;;;;;;;;;;;;;;;:27;10802:7;10783:27;;;;;;;;;;;;;;;:36;;;;10851:7;10835:32;;10844:5;10835:32;;;10860:6;10835:32;;;;;;:::i;:::-;;;;;;;;10534:341;;;:::o;8930:649::-;9051:1;9033:20;;:6;:20;;;;9025:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9135:1;9114:23;;:9;:23;;;;9106:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9188:47;9209:6;9217:9;9228:6;9188:20;:47::i;:::-;9246:18;9267:9;:17;9277:6;9267:17;;;;;;;;;;;;;;;;9246:38;;9320:6;9303:13;:23;;9295:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9416:6;9400:13;:22;;;;:::i;:::-;9380:9;:17;9390:6;9380:17;;;;;;;;;;;;;;;:42;;;;9457:6;9433:9;:20;9443:9;9433:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9496:9;9479:35;;9488:6;9479:35;;;9507:6;9479:35;;;;;;:::i;:::-;;;;;;;;9525:46;9545:6;9553:9;9564:6;9525:19;:46::i;:::-;8930:649;;;;:::o;9587:390::-;9687:1;9668:21;;:7;:21;;;;9660:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9736:49;9765:1;9769:7;9778:6;9736:20;:49::i;:::-;9812:6;9796:12;;:22;;;;;;;:::i;:::-;;;;;;;;9851:6;9829:9;:18;9839:7;9829:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;9894:7;9873:37;;9890:1;9873:37;;;9903:6;9873:37;;;;;;:::i;:::-;;;;;;;;9921:48;9949:1;9953:7;9962:6;9921:19;:48::i;:::-;9587:390;;:::o;34656:943::-;34762:6;34752:16;;:6;:16;;;;:30;;;;;34781:1;34772:6;:10;34752:30;34748:844;;;34821:1;34803:20;;:6;:20;;;34799:383;;34892:17;34912:14;:22;34927:6;34912:22;;;;;;;;;;;;;;;;34892:42;;34953:17;34985:1;34973:9;:13;:60;;35032:1;34973:60;;;34989:11;:19;35001:6;34989:19;;;;;;;;;;;;;;;:34;35021:1;35009:9;:13;;;;:::i;:::-;34989:34;;;;;;;;;;;:40;;;34973:60;34953:80;;35052:17;35084:6;35072:9;:18;;;;:::i;:::-;35052:38;;35109:57;35126:6;35134:9;35145;35156;35109:16;:57::i;:::-;34799:383;;;;35220:1;35202:20;;:6;:20;;;35198:383;;35291:17;35311:14;:22;35326:6;35311:22;;;;;;;;;;;;;;;;35291:42;;35352:17;35384:1;35372:9;:13;:60;;35431:1;35372:60;;;35388:11;:19;35400:6;35388:19;;;;;;;;;;;;;;;:34;35420:1;35408:9;:13;;;;:::i;:::-;35388:34;;;;;;;;;;;:40;;;35372:60;35352:80;;35451:17;35483:6;35471:9;:18;;;;:::i;:::-;35451:38;;35508:57;35525:6;35533:9;35544;35555;35508:16;:57::i;:::-;35198:383;;;;34748:844;34656:943;;;:::o;34225:423::-;34302:23;34328:10;:21;34339:9;34328:21;;;;;;;;;;;;;;;;;;;;;;;;;34302:47;;34360:24;34387:20;34397:9;34387;:20::i;:::-;34360:47;;34486:9;34462:10;:21;34473:9;34462:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34557:9;34513:54;;34540:15;34513:54;;34529:9;34513:54;;;;;;;;;;;;34580:60;34595:15;34612:9;34623:16;34580:14;:60::i;:::-;34225:423;;;;:::o;26819:173::-;26875:16;26894:6;;;;;;;;;;;26875:25;;26920:8;26911:6;;:17;;;;;;;;;;;;;;;;;;26975:8;26944:40;;26965:8;26944:40;;;;;;;;;;;;26819:173;;:::o;9985:541::-;10085:1;10066:21;;:7;:21;;;;10058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10136:49;10157:7;10174:1;10178:6;10136:20;:49::i;:::-;10196:19;10218:9;:18;10228:7;10218:18;;;;;;;;;;;;;;;;10196:40;;10273:6;10255:14;:24;;10247:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10367:6;10350:14;:23;;;;:::i;:::-;10329:9;:18;10339:7;10329:18;;;;;;;;;;;;;;;:44;;;;10400:6;10384:12;;:22;;;;;;;:::i;:::-;;;;;;;;10448:1;10422:37;;10431:7;10422:37;;;10452:6;10422:37;;;;;;:::i;:::-;;;;;;;;10470:48;10490:7;10507:1;10511:6;10470:19;:48::i;:::-;9985:541;;;:::o;36521:153::-;36566:4;36583:15;36631:9;36620:20;;36659:7;36652:14;;;36521:153;:::o;10883:88::-;;;;:::o;10977:87::-;;;;:::o;35607:722::-;35787:22;35812:84;35820:15;35812:84;;;;;;;;;;;;;;;;;:7;:84::i;:::-;35787:109;;35928:1;35913:12;:16;:87;;;;;35986:14;35933:11;:22;35945:9;35933:22;;;;;;;;;;;;;;;:40;35971:1;35956:12;:16;;;;:::i;:::-;35933:40;;;;;;;;;;;:49;;;:67;35913:87;35909:344;;;36066:8;36017:11;:22;36029:9;36017:22;;;;;;;;;;;;;;;:40;36055:1;36040:12;:16;;;;:::i;:::-;36017:40;;;;;;;;;;;:46;;:57;;;;35909:344;;;36146:36;;;;;;;;36157:14;36146:36;;;;36173:8;36146:36;;;36107:11;:22;36119:9;36107:22;;;;;;;;;;;;;;;:36;36130:12;36107:36;;;;;;;;;;;:75;;;;;;;;;;;;;;;;;;;36240:1;36225:12;:16;;;;:::i;:::-;36197:14;:25;36212:9;36197:25;;;;;;;;;;;;;;;:44;;;;35909:344;36291:9;36270:51;;;36302:8;36312;36270:51;;;;;;;:::i;:::-;;;;;;;;35607:722;;;;;:::o;36337:176::-;36413:7;36445:17;36441:1;:21;36464:12;36433:44;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;36503:1;36488:17;;36337:176;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:175::-;504:5;542:6;529:20;520:29;;558:51;603:5;558:51;:::i;:::-;510:105;;;;:::o;621:139::-;667:5;705:6;692:20;683:29;;721:33;748:5;721:33;:::i;:::-;673:87;;;;:::o;766:143::-;823:5;854:6;848:13;839:22;;870:33;897:5;870:33;:::i;:::-;829:80;;;;:::o;915:135::-;959:5;997:6;984:20;975:29;;1013:31;1038:5;1013:31;:::i;:::-;965:85;;;;:::o;1056:262::-;1115:6;1164:2;1152:9;1143:7;1139:23;1135:32;1132:2;;;1180:1;1177;1170:12;1132:2;1223:1;1248:53;1293:7;1284:6;1273:9;1269:22;1248:53;:::i;:::-;1238:63;;1194:117;1122:196;;;;:::o;1324:407::-;1392:6;1400;1449:2;1437:9;1428:7;1424:23;1420:32;1417:2;;;1465:1;1462;1455:12;1417:2;1508:1;1533:53;1578:7;1569:6;1558:9;1554:22;1533:53;:::i;:::-;1523:63;;1479:117;1635:2;1661:53;1706:7;1697:6;1686:9;1682:22;1661:53;:::i;:::-;1651:63;;1606:118;1407:324;;;;;:::o;1737:552::-;1814:6;1822;1830;1879:2;1867:9;1858:7;1854:23;1850:32;1847:2;;;1895:1;1892;1885:12;1847:2;1938:1;1963:53;2008:7;1999:6;1988:9;1984:22;1963:53;:::i;:::-;1953:63;;1909:117;2065:2;2091:53;2136:7;2127:6;2116:9;2112:22;2091:53;:::i;:::-;2081:63;;2036:118;2193:2;2219:53;2264:7;2255:6;2244:9;2240:22;2219:53;:::i;:::-;2209:63;;2164:118;1837:452;;;;;:::o;2295:407::-;2363:6;2371;2420:2;2408:9;2399:7;2395:23;2391:32;2388:2;;;2436:1;2433;2426:12;2388:2;2479:1;2504:53;2549:7;2540:6;2529:9;2525:22;2504:53;:::i;:::-;2494:63;;2450:117;2606:2;2632:53;2677:7;2668:6;2657:9;2653:22;2632:53;:::i;:::-;2622:63;;2577:118;2378:324;;;;;:::o;2708:986::-;2810:6;2818;2826;2834;2842;2850;2899:3;2887:9;2878:7;2874:23;2870:33;2867:2;;;2916:1;2913;2906:12;2867:2;2959:1;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2930:117;3086:2;3112:53;3157:7;3148:6;3137:9;3133:22;3112:53;:::i;:::-;3102:63;;3057:118;3214:2;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;:::i;:::-;3230:63;;3185:118;3342:2;3368:51;3411:7;3402:6;3391:9;3387:22;3368:51;:::i;:::-;3358:61;;3313:116;3468:3;3495:53;3540:7;3531:6;3520:9;3516:22;3495:53;:::i;:::-;3485:63;;3439:119;3597:3;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3568:119;2857:837;;;;;;;;:::o;3700:278::-;3767:6;3816:2;3804:9;3795:7;3791:23;3787:32;3784:2;;;3832:1;3829;3822:12;3784:2;3875:1;3900:61;3953:7;3944:6;3933:9;3929:22;3900:61;:::i;:::-;3890:71;;3846:125;3774:204;;;;:::o;3984:298::-;4061:6;4110:2;4098:9;4089:7;4085:23;4081:32;4078:2;;;4126:1;4123;4116:12;4078:2;4169:1;4194:71;4257:7;4248:6;4237:9;4233:22;4194:71;:::i;:::-;4184:81;;4140:135;4068:214;;;;:::o;4288:262::-;4347:6;4396:2;4384:9;4375:7;4371:23;4367:32;4364:2;;;4412:1;4409;4402:12;4364:2;4455:1;4480:53;4525:7;4516:6;4505:9;4501:22;4480:53;:::i;:::-;4470:63;;4426:117;4354:196;;;;:::o;4556:284::-;4626:6;4675:2;4663:9;4654:7;4650:23;4646:32;4643:2;;;4691:1;4688;4681:12;4643:2;4734:1;4759:64;4815:7;4806:6;4795:9;4791:22;4759:64;:::i;:::-;4749:74;;4705:128;4633:207;;;;:::o;4846:118::-;4933:24;4951:5;4933:24;:::i;:::-;4928:3;4921:37;4911:53;;:::o;4970:109::-;5051:21;5066:5;5051:21;:::i;:::-;5046:3;5039:34;5029:50;;:::o;5085:118::-;5172:24;5190:5;5172:24;:::i;:::-;5167:3;5160:37;5150:53;;:::o;5209:157::-;5314:45;5334:24;5352:5;5334:24;:::i;:::-;5314:45;:::i;:::-;5309:3;5302:58;5292:74;;:::o;5372:167::-;5477:55;5526:5;5477:55;:::i;:::-;5472:3;5465:68;5455:84;;:::o;5545:364::-;5633:3;5661:39;5694:5;5661:39;:::i;:::-;5716:71;5780:6;5775:3;5716:71;:::i;:::-;5709:78;;5796:52;5841:6;5836:3;5829:4;5822:5;5818:16;5796:52;:::i;:::-;5873:29;5895:6;5873:29;:::i;:::-;5868:3;5864:39;5857:46;;5637:272;;;;;:::o;5915:366::-;6057:3;6078:67;6142:2;6137:3;6078:67;:::i;:::-;6071:74;;6154:93;6243:3;6154:93;:::i;:::-;6272:2;6267:3;6263:12;6256:19;;6061:220;;;:::o;6287:366::-;6429:3;6450:67;6514:2;6509:3;6450:67;:::i;:::-;6443:74;;6526:93;6615:3;6526:93;:::i;:::-;6644:2;6639:3;6635:12;6628:19;;6433:220;;;:::o;6659:366::-;6801:3;6822:67;6886:2;6881:3;6822:67;:::i;:::-;6815:74;;6898:93;6987:3;6898:93;:::i;:::-;7016:2;7011:3;7007:12;7000:19;;6805:220;;;:::o;7031:366::-;7173:3;7194:67;7258:2;7253:3;7194:67;:::i;:::-;7187:74;;7270:93;7359:3;7270:93;:::i;:::-;7388:2;7383:3;7379:12;7372:19;;7177:220;;;:::o;7403:366::-;7545:3;7566:67;7630:2;7625:3;7566:67;:::i;:::-;7559:74;;7642:93;7731:3;7642:93;:::i;:::-;7760:2;7755:3;7751:12;7744:19;;7549:220;;;:::o;7775:400::-;7935:3;7956:84;8038:1;8033:3;7956:84;:::i;:::-;7949:91;;8049:93;8138:3;8049:93;:::i;:::-;8167:1;8162:3;8158:11;8151:18;;7939:236;;;:::o;8181:366::-;8323:3;8344:67;8408:2;8403:3;8344:67;:::i;:::-;8337:74;;8420:93;8509:3;8420:93;:::i;:::-;8538:2;8533:3;8529:12;8522:19;;8327:220;;;:::o;8553:366::-;8695:3;8716:67;8780:2;8775:3;8716:67;:::i;:::-;8709:74;;8792:93;8881:3;8792:93;:::i;:::-;8910:2;8905:3;8901:12;8894:19;;8699:220;;;:::o;8925:366::-;9067:3;9088:67;9152:2;9147:3;9088:67;:::i;:::-;9081:74;;9164:93;9253:3;9164:93;:::i;:::-;9282:2;9277:3;9273:12;9266:19;;9071:220;;;:::o;9297:366::-;9439:3;9460:67;9524:2;9519:3;9460:67;:::i;:::-;9453:74;;9536:93;9625:3;9536:93;:::i;:::-;9654:2;9649:3;9645:12;9638:19;;9443:220;;;:::o;9669:366::-;9811:3;9832:67;9896:2;9891:3;9832:67;:::i;:::-;9825:74;;9908:93;9997:3;9908:93;:::i;:::-;10026:2;10021:3;10017:12;10010:19;;9815:220;;;:::o;10041:366::-;10183:3;10204:67;10268:2;10263:3;10204:67;:::i;:::-;10197:74;;10280:93;10369:3;10280:93;:::i;:::-;10398:2;10393:3;10389:12;10382:19;;10187:220;;;:::o;10413:366::-;10555:3;10576:67;10640:2;10635:3;10576:67;:::i;:::-;10569:74;;10652:93;10741:3;10652:93;:::i;:::-;10770:2;10765:3;10761:12;10754:19;;10559:220;;;:::o;10785:366::-;10927:3;10948:67;11012:2;11007:3;10948:67;:::i;:::-;10941:74;;11024:93;11113:3;11024:93;:::i;:::-;11142:2;11137:3;11133:12;11126:19;;10931:220;;;:::o;11157:366::-;11299:3;11320:67;11384:2;11379:3;11320:67;:::i;:::-;11313:74;;11396:93;11485:3;11396:93;:::i;:::-;11514:2;11509:3;11505:12;11498:19;;11303:220;;;:::o;11529:366::-;11671:3;11692:67;11756:2;11751:3;11692:67;:::i;:::-;11685:74;;11768:93;11857:3;11768:93;:::i;:::-;11886:2;11881:3;11877:12;11870:19;;11675:220;;;:::o;11901:366::-;12043:3;12064:67;12128:2;12123:3;12064:67;:::i;:::-;12057:74;;12140:93;12229:3;12140:93;:::i;:::-;12258:2;12253:3;12249:12;12242:19;;12047:220;;;:::o;12273:366::-;12415:3;12436:67;12500:2;12495:3;12436:67;:::i;:::-;12429:74;;12512:93;12601:3;12512:93;:::i;:::-;12630:2;12625:3;12621:12;12614:19;;12419:220;;;:::o;12645:366::-;12787:3;12808:67;12872:2;12867:3;12808:67;:::i;:::-;12801:74;;12884:93;12973:3;12884:93;:::i;:::-;13002:2;12997:3;12993:12;12986:19;;12791:220;;;:::o;13017:366::-;13159:3;13180:67;13244:2;13239:3;13180:67;:::i;:::-;13173:74;;13256:93;13345:3;13256:93;:::i;:::-;13374:2;13369:3;13365:12;13358:19;;13163:220;;;:::o;13389:366::-;13531:3;13552:67;13616:2;13611:3;13552:67;:::i;:::-;13545:74;;13628:93;13717:3;13628:93;:::i;:::-;13746:2;13741:3;13737:12;13730:19;;13535:220;;;:::o;13761:366::-;13903:3;13924:67;13988:2;13983:3;13924:67;:::i;:::-;13917:74;;14000:93;14089:3;14000:93;:::i;:::-;14118:2;14113:3;14109:12;14102:19;;13907:220;;;:::o;14133:366::-;14275:3;14296:67;14360:2;14355:3;14296:67;:::i;:::-;14289:74;;14372:93;14461:3;14372:93;:::i;:::-;14490:2;14485:3;14481:12;14474:19;;14279:220;;;:::o;14505:366::-;14647:3;14668:67;14732:2;14727:3;14668:67;:::i;:::-;14661:74;;14744:93;14833:3;14744:93;:::i;:::-;14862:2;14857:3;14853:12;14846:19;;14651:220;;;:::o;14877:118::-;14964:24;14982:5;14964:24;:::i;:::-;14959:3;14952:37;14942:53;;:::o;15001:112::-;15084:22;15100:5;15084:22;:::i;:::-;15079:3;15072:35;15062:51;;:::o;15119:663::-;15360:3;15382:148;15526:3;15382:148;:::i;:::-;15375:155;;15540:75;15611:3;15602:6;15540:75;:::i;:::-;15640:2;15635:3;15631:12;15624:19;;15653:75;15724:3;15715:6;15653:75;:::i;:::-;15753:2;15748:3;15744:12;15737:19;;15773:3;15766:10;;15364:418;;;;;:::o;15788:222::-;15881:4;15919:2;15908:9;15904:18;15896:26;;15932:71;16000:1;15989:9;15985:17;15976:6;15932:71;:::i;:::-;15886:124;;;;:::o;16016:332::-;16137:4;16175:2;16164:9;16160:18;16152:26;;16188:71;16256:1;16245:9;16241:17;16232:6;16188:71;:::i;:::-;16269:72;16337:2;16326:9;16322:18;16313:6;16269:72;:::i;:::-;16142:206;;;;;:::o;16354:210::-;16441:4;16479:2;16468:9;16464:18;16456:26;;16492:65;16554:1;16543:9;16539:17;16530:6;16492:65;:::i;:::-;16446:118;;;;:::o;16570:222::-;16663:4;16701:2;16690:9;16686:18;16678:26;;16714:71;16782:1;16771:9;16767:17;16758:6;16714:71;:::i;:::-;16668:124;;;;:::o;16798:553::-;16975:4;17013:3;17002:9;16998:19;16990:27;;17027:71;17095:1;17084:9;17080:17;17071:6;17027:71;:::i;:::-;17108:72;17176:2;17165:9;17161:18;17152:6;17108:72;:::i;:::-;17190;17258:2;17247:9;17243:18;17234:6;17190:72;:::i;:::-;17272;17340:2;17329:9;17325:18;17316:6;17272:72;:::i;:::-;16980:371;;;;;;;:::o;17357:553::-;17534:4;17572:3;17561:9;17557:19;17549:27;;17586:71;17654:1;17643:9;17639:17;17630:6;17586:71;:::i;:::-;17667:72;17735:2;17724:9;17720:18;17711:6;17667:72;:::i;:::-;17749;17817:2;17806:9;17802:18;17793:6;17749:72;:::i;:::-;17831;17899:2;17888:9;17884:18;17875:6;17831:72;:::i;:::-;17539:371;;;;;;;:::o;17916:545::-;18089:4;18127:3;18116:9;18112:19;18104:27;;18141:71;18209:1;18198:9;18194:17;18185:6;18141:71;:::i;:::-;18222:68;18286:2;18275:9;18271:18;18262:6;18222:68;:::i;:::-;18300:72;18368:2;18357:9;18353:18;18344:6;18300:72;:::i;:::-;18382;18450:2;18439:9;18435:18;18426:6;18382:72;:::i;:::-;18094:367;;;;;;;:::o;18467:258::-;18578:4;18616:2;18605:9;18601:18;18593:26;;18629:89;18715:1;18704:9;18700:17;18691:6;18629:89;:::i;:::-;18583:142;;;;:::o;18731:313::-;18844:4;18882:2;18871:9;18867:18;18859:26;;18931:9;18925:4;18921:20;18917:1;18906:9;18902:17;18895:47;18959:78;19032:4;19023:6;18959:78;:::i;:::-;18951:86;;18849:195;;;;:::o;19050:419::-;19216:4;19254:2;19243:9;19239:18;19231:26;;19303:9;19297:4;19293:20;19289:1;19278:9;19274:17;19267:47;19331:131;19457:4;19331:131;:::i;:::-;19323:139;;19221:248;;;:::o;19475:419::-;19641:4;19679:2;19668:9;19664:18;19656:26;;19728:9;19722:4;19718:20;19714:1;19703:9;19699:17;19692:47;19756:131;19882:4;19756:131;:::i;:::-;19748:139;;19646:248;;;:::o;19900:419::-;20066:4;20104:2;20093:9;20089:18;20081:26;;20153:9;20147:4;20143:20;20139:1;20128:9;20124:17;20117:47;20181:131;20307:4;20181:131;:::i;:::-;20173:139;;20071:248;;;:::o;20325:419::-;20491:4;20529:2;20518:9;20514:18;20506:26;;20578:9;20572:4;20568:20;20564:1;20553:9;20549:17;20542:47;20606:131;20732:4;20606:131;:::i;:::-;20598:139;;20496:248;;;:::o;20750:419::-;20916:4;20954:2;20943:9;20939:18;20931:26;;21003:9;20997:4;20993:20;20989:1;20978:9;20974:17;20967:47;21031:131;21157:4;21031:131;:::i;:::-;21023:139;;20921:248;;;:::o;21175:419::-;21341:4;21379:2;21368:9;21364:18;21356:26;;21428:9;21422:4;21418:20;21414:1;21403:9;21399:17;21392:47;21456:131;21582:4;21456:131;:::i;:::-;21448:139;;21346:248;;;:::o;21600:419::-;21766:4;21804:2;21793:9;21789:18;21781:26;;21853:9;21847:4;21843:20;21839:1;21828:9;21824:17;21817:47;21881:131;22007:4;21881:131;:::i;:::-;21873:139;;21771:248;;;:::o;22025:419::-;22191:4;22229:2;22218:9;22214:18;22206:26;;22278:9;22272:4;22268:20;22264:1;22253:9;22249:17;22242:47;22306:131;22432:4;22306:131;:::i;:::-;22298:139;;22196:248;;;:::o;22450:419::-;22616:4;22654:2;22643:9;22639:18;22631:26;;22703:9;22697:4;22693:20;22689:1;22678:9;22674:17;22667:47;22731:131;22857:4;22731:131;:::i;:::-;22723:139;;22621:248;;;:::o;22875:419::-;23041:4;23079:2;23068:9;23064:18;23056:26;;23128:9;23122:4;23118:20;23114:1;23103:9;23099:17;23092:47;23156:131;23282:4;23156:131;:::i;:::-;23148:139;;23046:248;;;:::o;23300:419::-;23466:4;23504:2;23493:9;23489:18;23481:26;;23553:9;23547:4;23543:20;23539:1;23528:9;23524:17;23517:47;23581:131;23707:4;23581:131;:::i;:::-;23573:139;;23471:248;;;:::o;23725:419::-;23891:4;23929:2;23918:9;23914:18;23906:26;;23978:9;23972:4;23968:20;23964:1;23953:9;23949:17;23942:47;24006:131;24132:4;24006:131;:::i;:::-;23998:139;;23896:248;;;:::o;24150:419::-;24316:4;24354:2;24343:9;24339:18;24331:26;;24403:9;24397:4;24393:20;24389:1;24378:9;24374:17;24367:47;24431:131;24557:4;24431:131;:::i;:::-;24423:139;;24321:248;;;:::o;24575:419::-;24741:4;24779:2;24768:9;24764:18;24756:26;;24828:9;24822:4;24818:20;24814:1;24803:9;24799:17;24792:47;24856:131;24982:4;24856:131;:::i;:::-;24848:139;;24746:248;;;:::o;25000:419::-;25166:4;25204:2;25193:9;25189:18;25181:26;;25253:9;25247:4;25243:20;25239:1;25228:9;25224:17;25217:47;25281:131;25407:4;25281:131;:::i;:::-;25273:139;;25171:248;;;:::o;25425:419::-;25591:4;25629:2;25618:9;25614:18;25606:26;;25678:9;25672:4;25668:20;25664:1;25653:9;25649:17;25642:47;25706:131;25832:4;25706:131;:::i;:::-;25698:139;;25596:248;;;:::o;25850:419::-;26016:4;26054:2;26043:9;26039:18;26031:26;;26103:9;26097:4;26093:20;26089:1;26078:9;26074:17;26067:47;26131:131;26257:4;26131:131;:::i;:::-;26123:139;;26021:248;;;:::o;26275:419::-;26441:4;26479:2;26468:9;26464:18;26456:26;;26528:9;26522:4;26518:20;26514:1;26503:9;26499:17;26492:47;26556:131;26682:4;26556:131;:::i;:::-;26548:139;;26446:248;;;:::o;26700:419::-;26866:4;26904:2;26893:9;26889:18;26881:26;;26953:9;26947:4;26943:20;26939:1;26928:9;26924:17;26917:47;26981:131;27107:4;26981:131;:::i;:::-;26973:139;;26871:248;;;:::o;27125:419::-;27291:4;27329:2;27318:9;27314:18;27306:26;;27378:9;27372:4;27368:20;27364:1;27353:9;27349:17;27342:47;27406:131;27532:4;27406:131;:::i;:::-;27398:139;;27296:248;;;:::o;27550:419::-;27716:4;27754:2;27743:9;27739:18;27731:26;;27803:9;27797:4;27793:20;27789:1;27778:9;27774:17;27767:47;27831:131;27957:4;27831:131;:::i;:::-;27823:139;;27721:248;;;:::o;27975:419::-;28141:4;28179:2;28168:9;28164:18;28156:26;;28228:9;28222:4;28218:20;28214:1;28203:9;28199:17;28192:47;28256:131;28382:4;28256:131;:::i;:::-;28248:139;;28146:248;;;:::o;28400:419::-;28566:4;28604:2;28593:9;28589:18;28581:26;;28653:9;28647:4;28643:20;28639:1;28628:9;28624:17;28617:47;28681:131;28807:4;28681:131;:::i;:::-;28673:139;;28571:248;;;:::o;28825:222::-;28918:4;28956:2;28945:9;28941:18;28933:26;;28969:71;29037:1;29026:9;29022:17;29013:6;28969:71;:::i;:::-;28923:124;;;;:::o;29053:332::-;29174:4;29212:2;29201:9;29197:18;29189:26;;29225:71;29293:1;29282:9;29278:17;29269:6;29225:71;:::i;:::-;29306:72;29374:2;29363:9;29359:18;29350:6;29306:72;:::i;:::-;29179:206;;;;;:::o;29391:214::-;29480:4;29518:2;29507:9;29503:18;29495:26;;29531:67;29595:1;29584:9;29580:17;29571:6;29531:67;:::i;:::-;29485:120;;;;:::o;29611:99::-;29663:6;29697:5;29691:12;29681:22;;29670:40;;;:::o;29716:169::-;29800:11;29834:6;29829:3;29822:19;29874:4;29869:3;29865:14;29850:29;;29812:73;;;;:::o;29891:148::-;29993:11;30030:3;30015:18;;30005:34;;;;:::o;30045:305::-;30085:3;30104:20;30122:1;30104:20;:::i;:::-;30099:25;;30138:20;30156:1;30138:20;:::i;:::-;30133:25;;30292:1;30224:66;30220:74;30217:1;30214:81;30211:2;;;30298:18;;:::i;:::-;30211:2;30342:1;30339;30335:9;30328:16;;30089:261;;;;:::o;30356:237::-;30394:3;30413:18;30429:1;30413:18;:::i;:::-;30408:23;;30445:18;30461:1;30445:18;:::i;:::-;30440:23;;30535:1;30529:4;30525:12;30522:1;30519:19;30516:2;;;30541:18;;:::i;:::-;30516:2;30585:1;30582;30578:9;30571:16;;30398:195;;;;:::o;30599:185::-;30639:1;30656:20;30674:1;30656:20;:::i;:::-;30651:25;;30690:20;30708:1;30690:20;:::i;:::-;30685:25;;30729:1;30719:2;;30734:18;;:::i;:::-;30719:2;30776:1;30773;30769:9;30764:14;;30641:143;;;;:::o;30790:191::-;30830:4;30850:20;30868:1;30850:20;:::i;:::-;30845:25;;30884:20;30902:1;30884:20;:::i;:::-;30879:25;;30923:1;30920;30917:8;30914:2;;;30928:18;;:::i;:::-;30914:2;30973:1;30970;30966:9;30958:17;;30835:146;;;;:::o;30987:96::-;31024:7;31053:24;31071:5;31053:24;:::i;:::-;31042:35;;31032:51;;;:::o;31089:90::-;31123:7;31166:5;31159:13;31152:21;31141:32;;31131:48;;;:::o;31185:77::-;31222:7;31251:5;31240:16;;31230:32;;;:::o;31268:114::-;31323:7;31352:24;31370:5;31352:24;:::i;:::-;31341:35;;31331:51;;;:::o;31388:126::-;31425:7;31465:42;31458:5;31454:54;31443:65;;31433:81;;;:::o;31520:77::-;31557:7;31586:5;31575:16;;31565:32;;;:::o;31603:86::-;31638:7;31678:4;31671:5;31667:16;31656:27;;31646:43;;;:::o;31695:162::-;31763:9;31796:55;31845:5;31796:55;:::i;:::-;31783:68;;31773:84;;;:::o;31863:131::-;31931:9;31964:24;31982:5;31964:24;:::i;:::-;31951:37;;31941:53;;;:::o;32000:307::-;32068:1;32078:113;32092:6;32089:1;32086:13;32078:113;;;32177:1;32172:3;32168:11;32162:18;32158:1;32153:3;32149:11;32142:39;32114:2;32111:1;32107:10;32102:15;;32078:113;;;32209:6;32206:1;32203:13;32200:2;;;32289:1;32280:6;32275:3;32271:16;32264:27;32200:2;32049:258;;;;:::o;32313:320::-;32357:6;32394:1;32388:4;32384:12;32374:22;;32441:1;32435:4;32431:12;32462:18;32452:2;;32518:4;32510:6;32506:17;32496:27;;32452:2;32580;32572:6;32569:14;32549:18;32546:38;32543:2;;;32599:18;;:::i;:::-;32543:2;32364:269;;;;:::o;32639:233::-;32678:3;32701:24;32719:5;32701:24;:::i;:::-;32692:33;;32747:66;32740:5;32737:77;32734:2;;;32817:18;;:::i;:::-;32734:2;32864:1;32857:5;32853:13;32846:20;;32682:190;;;:::o;32878:167::-;32915:3;32938:22;32954:5;32938:22;:::i;:::-;32929:31;;32982:4;32975:5;32972:15;32969:2;;;32990:18;;:::i;:::-;32969:2;33037:1;33030:5;33026:13;33019:20;;32919:126;;;:::o;33051:79::-;33090:7;33119:5;33108:16;;33098:32;;;:::o;33136:180::-;33184:77;33181:1;33174:88;33281:4;33278:1;33271:15;33305:4;33302:1;33295:15;33322:180;33370:77;33367:1;33360:88;33467:4;33464:1;33457:15;33491:4;33488:1;33481:15;33508:180;33556:77;33553:1;33546:88;33653:4;33650:1;33643:15;33677:4;33674:1;33667:15;33694:102;33735:6;33786:2;33782:7;33777:2;33770:5;33766:14;33762:28;33752:38;;33742:54;;;:::o;33802:222::-;33942:34;33938:1;33930:6;33926:14;33919:58;34011:5;34006:2;33998:6;33994:15;33987:30;33908:116;:::o;34030:221::-;34170:34;34166:1;34158:6;34154:14;34147:58;34239:4;34234:2;34226:6;34222:15;34215:29;34136:115;:::o;34257:225::-;34397:34;34393:1;34385:6;34381:14;34374:58;34466:8;34461:2;34453:6;34449:15;34442:33;34363:119;:::o;34488:221::-;34628:34;34624:1;34616:6;34612:14;34605:58;34697:4;34692:2;34684:6;34680:15;34673:29;34594:115;:::o;34715:229::-;34855:34;34851:1;34843:6;34839:14;34832:58;34924:12;34919:2;34911:6;34907:15;34900:37;34821:123;:::o;34950:214::-;35090:66;35086:1;35078:6;35074:14;35067:90;35056:108;:::o;35170:221::-;35310:34;35306:1;35298:6;35294:14;35287:58;35379:4;35374:2;35366:6;35362:15;35355:29;35276:115;:::o;35397:225::-;35537:34;35533:1;35525:6;35521:14;35514:58;35606:8;35601:2;35593:6;35589:15;35582:33;35503:119;:::o;35628:223::-;35768:34;35764:1;35756:6;35752:14;35745:58;35837:6;35832:2;35824:6;35820:15;35813:31;35734:117;:::o;35857:225::-;35997:34;35993:1;35985:6;35981:14;35974:58;36066:8;36061:2;36053:6;36049:15;36042:33;35963:119;:::o;36088:227::-;36228:34;36224:1;36216:6;36212:14;36205:58;36297:10;36292:2;36284:6;36280:15;36273:35;36194:121;:::o;36321:226::-;36461:34;36457:1;36449:6;36445:14;36438:58;36530:9;36525:2;36517:6;36513:15;36506:34;36427:120;:::o;36553:182::-;36693:34;36689:1;36681:6;36677:14;36670:58;36659:76;:::o;36741:171::-;36881:23;36877:1;36869:6;36865:14;36858:47;36847:65;:::o;36918:227::-;37058:34;37054:1;37046:6;37042:14;37035:58;37127:10;37122:2;37114:6;37110:15;37103:35;37024:121;:::o;37151:220::-;37291:34;37287:1;37279:6;37275:14;37268:58;37360:3;37355:2;37347:6;37343:15;37336:28;37257:114;:::o;37377:178::-;37517:30;37513:1;37505:6;37501:14;37494:54;37483:72;:::o;37561:224::-;37701:34;37697:1;37689:6;37685:14;37678:58;37770:7;37765:2;37757:6;37753:15;37746:32;37667:118;:::o;37791:222::-;37931:34;37927:1;37919:6;37915:14;37908:58;38000:5;37995:2;37987:6;37983:15;37976:30;37897:116;:::o;38019:178::-;38159:30;38155:1;38147:6;38143:14;38136:54;38125:72;:::o;38203:223::-;38343:34;38339:1;38331:6;38327:14;38320:58;38412:6;38407:2;38399:6;38395:15;38388:31;38309:117;:::o;38432:225::-;38572:34;38568:1;38560:6;38556:14;38549:58;38641:8;38636:2;38628:6;38624:15;38617:33;38538:119;:::o;38663:224::-;38803:34;38799:1;38791:6;38787:14;38780:58;38872:7;38867:2;38859:6;38855:15;38848:32;38769:118;:::o;38893:181::-;39033:33;39029:1;39021:6;39017:14;39010:57;38999:75;:::o;39080:122::-;39153:24;39171:5;39153:24;:::i;:::-;39146:5;39143:35;39133:2;;39192:1;39189;39182:12;39133:2;39123:79;:::o;39208:116::-;39278:21;39293:5;39278:21;:::i;:::-;39271:5;39268:32;39258:2;;39314:1;39311;39304:12;39258:2;39248:76;:::o;39330:122::-;39403:24;39421:5;39403:24;:::i;:::-;39396:5;39393:35;39383:2;;39442:1;39439;39432:12;39383:2;39373:79;:::o;39458:158::-;39549:42;39585:5;39549:42;:::i;:::-;39542:5;39539:53;39529:2;;39606:1;39603;39596:12;39529:2;39519:97;:::o;39622:122::-;39695:24;39713:5;39695:24;:::i;:::-;39688:5;39685:35;39675:2;;39734:1;39731;39724:12;39675:2;39665:79;:::o;39750:118::-;39821:22;39837:5;39821:22;:::i;:::-;39814:5;39811:33;39801:2;;39858:1;39855;39848:12;39801:2;39791:77;:::o

Swarm Source

ipfs://dbf57a198d2d7806ce66999da684530b4d67b0f58595dbcfba083196662dc8cd
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.