ERC-20
Overview
Max Total Supply
1,000,000,000 EHX
Holders
65
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,014,873.032648895449184493 EHXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
EHX
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-03 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.16; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library Roles { struct Role { mapping (address => bool) bearer; } function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } } contract AuthorizedRole is Ownable { using Roles for Roles.Role; event AuthorizedAdded(address indexed account); event AuthorizedRemoved(address indexed account); Roles.Role private _authorizeds; modifier onlyAuthorized() { require(isAuthorized(msg.sender), "AuthorizedRole: caller does not have the Authorized role"); _; } function isAuthorized(address account) public view returns (bool) { return _authorizeds.has(account); } function addAuthorized(address account) public onlyOwner { _addAuthorized(account); } function removeAuthorized(address account) public onlyOwner { _removeAuthorized(account); } function renounceAuthorized() public { _removeAuthorized(msg.sender); } function _addAuthorized(address account) internal { _authorizeds.add(account); emit AuthorizedAdded(account); } function _removeAuthorized(address account) internal { _authorizeds.remove(account); emit AuthorizedRemoved(account); } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract EHX is ERC20, Ownable, AuthorizedRole { uint256 public maxTransaction; address public robinHoodWallet; uint256 public robinHoodPercent = 10; IDexRouter public immutable dexRouter; address public immutable lpPair; address public immutable lpPairEth; mapping (address => uint256) public lastBuyBlock; uint256 public tradingActiveBlock = 0; // 0 means trading is not active mapping (address => bool) public restrictedWallets; uint256 public blockForPenaltyEnd; bool public limitsInEffect = true; bool public tradingActive = false; bool public robinHoodActive = true; mapping (address => bool) public _isWhitelisted; mapping (address => bool) public automatedMarketMakerPairs; // Events event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event Whitelisted(address indexed account, bool isWhitelisted); event UpdatedMaxTransaction(uint256 newAmount); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("Eterna", "EHX") { address stablecoinAddress; address _dexRouter; // automatically detect router/desired stablecoin if(block.chainid == 1){ stablecoinAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; // USDC _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 } else if(block.chainid == 4){ stablecoinAddress = 0xE7d541c18D6aDb863F4C570065c57b75a53a64d3; // Rinkeby Testnet USDC _dexRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH: Uniswap V2 } else if(block.chainid == 56){ stablecoinAddress = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56; // BUSD _dexRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BNB Chain: PCS V2 } else if(block.chainid == 97){ stablecoinAddress = 0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7; // BSC Testnet BUSD _dexRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BNB Chain: PCS V2 } else { revert("Chain not configured"); } dexRouter = IDexRouter(_dexRouter); // create pair lpPair = IDexFactory(dexRouter.factory()).createPair(address(this), address(stablecoinAddress)); setAutomatedMarketMakerPair(address(lpPair), true); lpPairEth = IDexFactory(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); setAutomatedMarketMakerPair(address(lpPairEth), true); uint256 totalSupply = 1 * 1e9 * 1e18; maxTransaction = totalSupply * 5 / 1000; setWhitelistedAddress(address(this), true); setWhitelistedAddress(address(0xdead), true); setWhitelistedAddress(address(dexRouter), true); setWhitelistedAddress(address(msg.sender), true); _mint(address(msg.sender), totalSupply); } // Owner / Whitelisted Functions function enableTrading() external onlyOwner { require(!tradingActive, "Trading is already active, cannot relaunch."); tradingActive = true; tradingActiveBlock = block.number; emit EnabledTrading(); } function manageRestrictedWallets(address[] calldata wallets, bool restricted) external onlyOwner { for(uint256 i = 0; i < wallets.length; i++){ restrictedWallets[wallets[i]] = restricted; } } function removeLimits() external onlyOwner { limitsInEffect = false; maxTransaction = totalSupply(); emit RemovedLimits(); } function setRobinHoodActive(bool active) external onlyOwner { robinHoodActive = active; } function setRobinHoodPercent(uint256 perc) external onlyOwner { require(perc <= 10000, "too high"); robinHoodPercent = perc; } function setRobinHoodAddress(address wallet) external onlyOwner { require(wallet != address(0), "zero address"); robinHoodWallet = wallet; } function updateMaxTransaction(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000) / (10 ** decimals()), "Cannot set max buy amount lower than 0.1%"); maxTransaction = newNum * (10 ** decimals()); emit UpdatedMaxTransaction(maxTransaction); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != lpPair || value, "The pair cannot be removed from automatedMarketMakerPairs"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function setWhitelistedAddress(address account, bool excluded) public onlyOwner { _isWhitelisted[account] = excluded; emit Whitelisted(account, excluded); } function mintTokens(address destination, uint256 amount) public onlyAuthorized { _mint(destination, amount); } function burnTokens(uint256 amount) public onlyAuthorized { _burn(msg.sender, amount); } // private / internal functions function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); // transfer of 0 is allowed, but triggers no logic. In case of staking where a staking pool is paying out 0 rewards. if(amount == 0){ super._transfer(from, to, 0); return; } if(!tradingActive){ require(_isWhitelisted[from] || _isWhitelisted[to], "Trading is not active."); } if(tradingActiveBlock > 0){ require((!restrictedWallets[from] && !restrictedWallets[to]) || to == owner() || to == address(0xdead), "Restricted wallet"); } if(robinHoodActive && (!_isWhitelisted[to] && !_isWhitelisted[from])){ if(automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to]){ lastBuyBlock[to] = block.number; } else if(lastBuyBlock[from] == block.number && robinHoodPercent > 0){ uint256 robinHoodAmount = amount * robinHoodPercent / 10000; uint256 transferAmount = amount - robinHoodAmount; super._transfer(from, robinHoodWallet, robinHoodAmount); super._transfer(from, to, transferAmount); return; } } if(limitsInEffect){ if (!_isWhitelisted[from] && !_isWhitelisted[to]){ //on buy or sell if (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the max buy."); } } } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AuthorizedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AuthorizedRemoved","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"Whitelisted","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addAuthorized","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBuyBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPairEth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"restricted","type":"bool"}],"name":"manageRestrictedWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceAuthorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"restrictedWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"robinHoodWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"setRobinHoodActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"setRobinHoodAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"perc","type":"uint256"}],"name":"setRobinHoodPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setWhitelistedAddress","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e0604052600a6009556000600b556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055503480156200006c57600080fd5b506040518060400160405280600681526020017f457465726e6100000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45485800000000000000000000000000000000000000000000000000000000008152508160039081620000ea919062000d89565b508060049081620000fc919062000d89565b505050600062000111620006aa60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008060014603620001f05773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489150737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002e7565b600446036200022d5773e7d541c18d6adb863f4c570065c57b75a53a64d39150737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002e6565b603846036200026a5773e9e7cea3dedca5984780bafc599bd69add087d5691507310ed43c718714eb63d5aa57b78b54704e256024e9050620002e5565b60614603620002a7577378867bbeef44f2326bf8ddd1941a4439382ef2a7915073d99d1c33f9fc3444f8101754abc46c52416550d19050620002e4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002db9062000ed1565b60405180910390fd5b5b5b5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630846040518363ffffffff1660e01b8152600401620003cb92919062000fa0565b6020604051808303816000875af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200045960a0516001620006b260201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004cd919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000537573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055d919062000f5d565b6040518363ffffffff1660e01b81526004016200057c92919062000fa0565b6020604051808303816000875af11580156200059c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c2919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506200060a60c0516001620006b260201b60201c565b60006b033b2e3c9fd0803ce800000090506103e86005826200062d919062000ffc565b6200063991906200108c565b600781905550620006523060016200087260201b60201c565b6200066761dead60016200087260201b60201c565b6200067c60805160016200087260201b60201c565b6200068f3360016200087260201b60201c565b620006a13382620009bf60201b60201c565b505050620012e3565b600033905090565b620006c2620006aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000754576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074b9062001114565b60405180910390fd5b60a05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806200078f5750805b620007d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c890620011ac565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000882620006aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000914576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090b9062001114565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f2644082604051620009b39190620011eb565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a289062001258565b60405180910390fd5b806002600082825462000a4591906200127a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a9c91906200127a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b039190620012c6565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b9157607f821691505b60208210810362000ba75762000ba662000b49565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bd2565b62000c1d868362000bd2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c6a62000c6462000c5e8462000c35565b62000c3f565b62000c35565b9050919050565b6000819050919050565b62000c868362000c49565b62000c9e62000c958262000c71565b84845462000bdf565b825550505050565b600090565b62000cb562000ca6565b62000cc281848462000c7b565b505050565b5b8181101562000cea5762000cde60008262000cab565b60018101905062000cc8565b5050565b601f82111562000d395762000d038162000bad565b62000d0e8462000bc2565b8101602085101562000d1e578190505b62000d3662000d2d8562000bc2565b83018262000cc7565b50505b505050565b600082821c905092915050565b600062000d5e6000198460080262000d3e565b1980831691505092915050565b600062000d79838362000d4b565b9150826002028217905092915050565b62000d948262000b0f565b67ffffffffffffffff81111562000db05762000daf62000b1a565b5b62000dbc825462000b78565b62000dc982828562000cee565b600060209050601f83116001811462000e01576000841562000dec578287015190505b62000df8858262000d6b565b86555062000e68565b601f19841662000e118662000bad565b60005b8281101562000e3b5784890151825560018201915060208501945060208101905062000e14565b8683101562000e5b578489015162000e57601f89168262000d4b565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f436861696e206e6f7420636f6e66696775726564000000000000000000000000600082015250565b600062000eb960148362000e70565b915062000ec68262000e81565b602082019050919050565b6000602082019050818103600083015262000eec8162000eaa565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f258262000ef8565b9050919050565b62000f378162000f18565b811462000f4357600080fd5b50565b60008151905062000f578162000f2c565b92915050565b60006020828403121562000f765762000f7562000ef3565b5b600062000f868482850162000f46565b91505092915050565b62000f9a8162000f18565b82525050565b600060408201905062000fb7600083018562000f8f565b62000fc6602083018462000f8f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010098262000c35565b9150620010168362000c35565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001052576200105162000fcd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010998262000c35565b9150620010a68362000c35565b925082620010b957620010b86200105d565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010fc60208362000e70565b91506200110982620010c4565b602082019050919050565b600060208201905081810360008301526200112f81620010ed565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006200119460398362000e70565b9150620011a18262001136565b604082019050919050565b60006020820190508181036000830152620011c78162001185565b9050919050565b60008115159050919050565b620011e581620011ce565b82525050565b6000602082019050620012026000830184620011da565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001240601f8362000e70565b91506200124d8262001208565b602082019050919050565b60006020820190508181036000830152620012738162001231565b9050919050565b6000620012878262000c35565b9150620012948362000c35565b9250828201905080821115620012af57620012ae62000fcd565b5b92915050565b620012c08162000c35565b82525050565b6000602082019050620012dd6000830184620012b5565b92915050565b60805160a05160c0516149216200131a60003960006116bf015260008181610d76015261178001526000610a7f01526149216000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80638da5cb5b1161015c578063b62496f5116100ce578063ee40166e11610087578063ee40166e1461077a578063f076e53514610798578063f0dda65c146107c8578063f2fde38b146107e4578063fdd7d45014610800578063fe9fbb801461081c5761027f565b8063b62496f5146106b8578063bbc0c742146106e8578063c3f70b5214610706578063cf1c316a14610724578063d07c1e4314610740578063dd62ed3e1461074a5761027f565b80639cee2142116101205780639cee2142146105d2578063a2af568514610602578063a457c2d71461061e578063a62068ce1461064e578063a9059cbb1461066c578063ac8e33281461069c5761027f565b80638da5cb5b1461053e57806395d89b411461055c57806396adebb31461057a57806399bafefb146105985780639a7a23d6146105b65761027f565b8063452ed4f1116101f557806370a08231116101b957806370a08231146104a4578063715018a6146104d4578063751039fc146104de5780637b337a36146104e85780638366e79a146105045780638a8c523c146105345761027f565b8063452ed4f114610412578063485d7d94146104305780634a62bb651461044c5780635679dfdb1461046a5780636d1b229d146104885761027f565b8063095ea7b311610247578063095ea7b31461031657806318160ddd1461034657806323b872dd14610364578063313ce5671461039457806337b28bfd146103b257806339509351146103e25761027f565b806302d9e921146102845780630517d13d146102a257806306fdde03146102be5780630758d924146102dc578063093bcbb5146102fa575b600080fd5b61028c61084c565b60405161029991906132b1565b60405180910390f35b6102bc60048036038101906102b7919061330c565b610872565b005b6102c66109eb565b6040516102d391906133c9565b60405180910390f35b6102e4610a7d565b6040516102f1919061344a565b60405180910390f35b610314600480360381019061030f919061330c565b610aa1565b005b610330600480360381019061032b9190613491565b610b87565b60405161033d91906134ec565b60405180910390f35b61034e610ba5565b60405161035b9190613516565b60405180910390f35b61037e60048036038101906103799190613531565b610baf565b60405161038b91906134ec565b60405180910390f35b61039c610ca7565b6040516103a991906135a0565b60405180910390f35b6103cc60048036038101906103c791906135bb565b610cb0565b6040516103d99190613516565b60405180910390f35b6103fc60048036038101906103f79190613491565b610cc8565b60405161040991906134ec565b60405180910390f35b61041a610d74565b60405161042791906132b1565b60405180910390f35b61044a600480360381019061044591906135bb565b610d98565b005b610454610e3b565b60405161046191906134ec565b60405180910390f35b610472610e4e565b60405161047f91906134ec565b60405180910390f35b6104a2600480360381019061049d919061330c565b610e61565b005b6104be60048036038101906104b991906135bb565b610eb6565b6040516104cb9190613516565b60405180910390f35b6104dc610efe565b005b6104e6611056565b005b61050260048036038101906104fd9190613614565b611144565b005b61051e60048036038101906105199190613654565b611284565b60405161052b91906134ec565b60405180910390f35b61053c6114ca565b005b610546611601565b60405161055391906132b1565b60405180910390f35b61056461162b565b60405161057191906133c9565b60405180910390f35b6105826116bd565b60405161058f91906132b1565b60405180910390f35b6105a06116e1565b6040516105ad9190613516565b60405180910390f35b6105d060048036038101906105cb9190613614565b6116e7565b005b6105ec60048036038101906105e791906135bb565b6118b6565b6040516105f991906134ec565b60405180910390f35b61061c600480360381019061061791906135bb565b6118d6565b005b61063860048036038101906106339190613491565b611a20565b60405161064591906134ec565b60405180910390f35b610656611b0b565b6040516106639190613516565b60405180910390f35b61068660048036038101906106819190613491565b611b11565b60405161069391906134ec565b60405180910390f35b6106b660048036038101906106b191906136f9565b611b2f565b005b6106d260048036038101906106cd91906135bb565b611c6b565b6040516106df91906134ec565b60405180910390f35b6106f0611c8b565b6040516106fd91906134ec565b60405180910390f35b61070e611c9e565b60405161071b9190613516565b60405180910390f35b61073e600480360381019061073991906135bb565b611ca4565b005b610748611d47565b005b610764600480360381019061075f9190613654565b611d52565b6040516107719190613516565b60405180910390f35b610782611dd9565b60405161078f9190613516565b60405180910390f35b6107b260048036038101906107ad91906135bb565b611ddf565b6040516107bf91906134ec565b60405180910390f35b6107e260048036038101906107dd9190613491565b611dff565b005b6107fe60048036038101906107f991906135bb565b611e55565b005b61081a60048036038101906108159190613759565b61201b565b005b610836600480360381019061083191906135bb565b6120cf565b60405161084391906134ec565b60405180910390f35b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087a6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610900906137d2565b60405180910390fd5b610911610ca7565b600a61091d9190613954565b6103e8600161092a610ba5565b610934919061399f565b61093e9190613a28565b6109489190613a28565b81101561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190613acb565b60405180910390fd5b610992610ca7565b600a61099e9190613954565b816109a9919061399f565b6007819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c183766915746007546040516109e09190613516565b60405180910390a150565b6060600380546109fa90613b1a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2690613b1a565b8015610a735780601f10610a4857610100808354040283529160200191610a73565b820191906000526020600020905b815481529060010190602001808311610a5657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b610aa96120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f906137d2565b60405180910390fd5b612710811115610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490613b97565b60405180910390fd5b8060098190555050565b6000610b9b610b946120ec565b84846120f4565b6001905092915050565b6000600254905090565b6000610bbc8484846122bd565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c076120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90613c29565b60405180910390fd5b610c9b85610c936120ec565b8584036120f4565b60019150509392505050565b60006012905090565b600a6020528060005260406000206000915090505481565b6000610d6a610cd56120ec565b848460016000610ce36120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d659190613c49565b6120f4565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610da06120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e26906137d2565b60405180910390fd5b610e3881612a41565b50565b600e60009054906101000a900460ff1681565b600e60029054906101000a900460ff1681565b610e6a336120cf565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090613cef565b60405180910390fd5b610eb33382612a9b565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f066120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61105e6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e4906137d2565b60405180910390fd5b6000600e60006101000a81548160ff021916908315150217905550611110610ba5565b6007819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61114c6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d2906137d2565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f264408260405161127891906134ec565b60405180910390a25050565b600061128e6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611314906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390613d5b565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113c791906132b1565b602060405180830381865afa1580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114089190613d90565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611445929190613dbd565b6020604051808303816000875af1158015611464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114889190613dfb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516114bb929190613dbd565b60405180910390a15092915050565b6114d26120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611558906137d2565b60405180910390fd5b600e60019054906101000a900460ff16156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613e9a565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555043600b819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461163a90613b1a565b80601f016020809104026020016040519081016040528092919081815260200182805461166690613b1a565b80156116b35780601f10611688576101008083540402835291602001916116b3565b820191906000526020600020905b81548152906001019060200180831161169657829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095481565b6116ef6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906137d2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806117d65750805b611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90613f2c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6118de6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613f98565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060016000611a2f6120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae39061402a565b60405180910390fd5b611b00611af76120ec565b858584036120f4565b600191505092915050565b600d5481565b6000611b25611b1e6120ec565b84846122bd565b6001905092915050565b611b376120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906137d2565b60405180910390fd5b60005b83839050811015611c655781600c6000868685818110611bec57611beb61404a565b5b9050602002016020810190611c0191906135bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c5d90614079565b915050611bc9565b50505050565b60106020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60075481565b611cac6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d32906137d2565b60405180910390fd5b611d4481612c50565b50565b611d5033612a41565b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c6020528060005260406000206000915054906101000a900460ff1681565b611e08336120cf565b611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90613cef565b60405180910390fd5b611e518282612caa565b5050565b611e5d6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614133565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120236120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a9906137d2565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b60006120e5826006612df190919063ffffffff16565b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a906141c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c990614257565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122b09190613516565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361232c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612323906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361239b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123929061437b565b60405180910390fd5b600081036123b4576123af83836000612eb8565b612a3c565b600e60019054906101000a900460ff166124a957600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124695750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f906143e7565b60405180910390fd5b5b6000600b54111561260d57600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125585750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806125955750612566611601565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806125cd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614453565b60405180910390fd5b5b600e60029054906101000a900460ff1680156126c95750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126c85750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561288457601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127bf5743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612883565b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561280f57506000600954115b1561288257600061271060095483612827919061399f565b6128319190613a28565b9050600081836128419190614473565b905061287085600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612eb8565b61287b858583612eb8565b5050612a3c565b5b5b600e60009054906101000a900460ff1615612a3057600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561293d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2f57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129e35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2e57600754811115612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490614519565b60405180910390fd5b5b5b5b612a3b838383612eb8565b5b505050565b612a5581600661312190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0fafd0343e6c6f6985727574866da48938c918559eb9521cf9cc0d317ea0f7b460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b01906145ab565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b879061463d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c439190613516565b60405180910390a3505050565b612c648160066131c890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fdd10d14f6ac19e913d4edbb11fd30661531e2ccd0d23f571e9b224f001f0dd0660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d10906146a9565b60405180910390fd5b8060026000828254612d2b9190613c49565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d809190613c49565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612de59190613516565b60405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e589061473b565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8d9061437b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561301c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613013906147cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130af9190613c49565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131139190613516565b60405180910390a350505050565b61312b8282612df1565b61316a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131619061485f565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6131d28282612df1565b15613212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613209906148cb565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329b82613270565b9050919050565b6132ab81613290565b82525050565b60006020820190506132c660008301846132a2565b92915050565b600080fd5b600080fd5b6000819050919050565b6132e9816132d6565b81146132f457600080fd5b50565b600081359050613306816132e0565b92915050565b600060208284031215613322576133216132cc565b5b6000613330848285016132f7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613373578082015181840152602081019050613358565b60008484015250505050565b6000601f19601f8301169050919050565b600061339b82613339565b6133a58185613344565b93506133b5818560208601613355565b6133be8161337f565b840191505092915050565b600060208201905081810360008301526133e38184613390565b905092915050565b6000819050919050565b600061341061340b61340684613270565b6133eb565b613270565b9050919050565b6000613422826133f5565b9050919050565b600061343482613417565b9050919050565b61344481613429565b82525050565b600060208201905061345f600083018461343b565b92915050565b61346e81613290565b811461347957600080fd5b50565b60008135905061348b81613465565b92915050565b600080604083850312156134a8576134a76132cc565b5b60006134b68582860161347c565b92505060206134c7858286016132f7565b9150509250929050565b60008115159050919050565b6134e6816134d1565b82525050565b600060208201905061350160008301846134dd565b92915050565b613510816132d6565b82525050565b600060208201905061352b6000830184613507565b92915050565b60008060006060848603121561354a576135496132cc565b5b60006135588682870161347c565b93505060206135698682870161347c565b925050604061357a868287016132f7565b9150509250925092565b600060ff82169050919050565b61359a81613584565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d06132cc565b5b60006135df8482850161347c565b91505092915050565b6135f1816134d1565b81146135fc57600080fd5b50565b60008135905061360e816135e8565b92915050565b6000806040838503121561362b5761362a6132cc565b5b60006136398582860161347c565b925050602061364a858286016135ff565b9150509250929050565b6000806040838503121561366b5761366a6132cc565b5b60006136798582860161347c565b925050602061368a8582860161347c565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126136b9576136b8613694565b5b8235905067ffffffffffffffff8111156136d6576136d5613699565b5b6020830191508360208202830111156136f2576136f161369e565b5b9250929050565b600080600060408486031215613712576137116132cc565b5b600084013567ffffffffffffffff8111156137305761372f6132d1565b5b61373c868287016136a3565b9350935050602061374f868287016135ff565b9150509250925092565b60006020828403121561376f5761376e6132cc565b5b600061377d848285016135ff565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137bc602083613344565b91506137c782613786565b602082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561387857808604811115613854576138536137f2565b5b60018516156138635780820291505b808102905061387185613821565b9450613838565b94509492505050565b600082613891576001905061394d565b8161389f576000905061394d565b81600181146138b557600281146138bf576138ee565b600191505061394d565b60ff8411156138d1576138d06137f2565b5b8360020a9150848211156138e8576138e76137f2565b5b5061394d565b5060208310610133831016604e8410600b84101617156139235782820a90508381111561391e5761391d6137f2565b5b61394d565b613930848484600161382e565b92509050818404811115613947576139466137f2565b5b81810290505b9392505050565b600061395f826132d6565b915061396a83613584565b92506139977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613881565b905092915050565b60006139aa826132d6565b91506139b5836132d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ee576139ed6137f2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a33826132d6565b9150613a3e836132d6565b925082613a4e57613a4d6139f9565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ab5602983613344565b9150613ac082613a59565b604082019050919050565b60006020820190508181036000830152613ae481613aa8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b3257607f821691505b602082108103613b4557613b44613aeb565b5b50919050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000613b81600883613344565b9150613b8c82613b4b565b602082019050919050565b60006020820190508181036000830152613bb081613b74565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c13602883613344565b9150613c1e82613bb7565b604082019050919050565b60006020820190508181036000830152613c4281613c06565b9050919050565b6000613c54826132d6565b9150613c5f836132d6565b9250828201905080821115613c7757613c766137f2565b5b92915050565b7f417574686f72697a6564526f6c653a2063616c6c657220646f6573206e6f742060008201527f686176652074686520417574686f72697a656420726f6c650000000000000000602082015250565b6000613cd9603883613344565b9150613ce482613c7d565b604082019050919050565b60006020820190508181036000830152613d0881613ccc565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000613d45601a83613344565b9150613d5082613d0f565b602082019050919050565b60006020820190508181036000830152613d7481613d38565b9050919050565b600081519050613d8a816132e0565b92915050565b600060208284031215613da657613da56132cc565b5b6000613db484828501613d7b565b91505092915050565b6000604082019050613dd260008301856132a2565b613ddf6020830184613507565b9392505050565b600081519050613df5816135e8565b92915050565b600060208284031215613e1157613e106132cc565b5b6000613e1f84828501613de6565b91505092915050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000613e84602b83613344565b9150613e8f82613e28565b604082019050919050565b60006020820190508181036000830152613eb381613e77565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613f16603983613344565b9150613f2182613eba565b604082019050919050565b60006020820190508181036000830152613f4581613f09565b9050919050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000613f82600c83613344565b9150613f8d82613f4c565b602082019050919050565b60006020820190508181036000830152613fb181613f75565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614014602583613344565b915061401f82613fb8565b604082019050919050565b6000602082019050818103600083015261404381614007565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614084826132d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140b6576140b56137f2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061411d602683613344565b9150614128826140c1565b604082019050919050565b6000602082019050818103600083015261414c81614110565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141af602483613344565b91506141ba82614153565b604082019050919050565b600060208201905081810360008301526141de816141a2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614241602283613344565b915061424c826141e5565b604082019050919050565b6000602082019050818103600083015261427081614234565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142d3602583613344565b91506142de82614277565b604082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614365602383613344565b915061437082614309565b604082019050919050565b6000602082019050818103600083015261439481614358565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006143d1601683613344565b91506143dc8261439b565b602082019050919050565b60006020820190508181036000830152614400816143c4565b9050919050565b7f526573747269637465642077616c6c6574000000000000000000000000000000600082015250565b600061443d601183613344565b915061444882614407565b602082019050919050565b6000602082019050818103600083015261446c81614430565b9050919050565b600061447e826132d6565b9150614489836132d6565b92508282039050818111156144a1576144a06137f2565b5b92915050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614503602883613344565b915061450e826144a7565b604082019050919050565b60006020820190508181036000830152614532816144f6565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614595602183613344565b91506145a082614539565b604082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614627602283613344565b9150614632826145cb565b604082019050919050565b600060208201905081810360008301526146568161461a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614693601f83613344565b915061469e8261465d565b602082019050919050565b600060208201905081810360008301526146c281614686565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614725602283613344565b9150614730826146c9565b604082019050919050565b6000602082019050818103600083015261475481614718565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147b7602683613344565b91506147c28261475b565b604082019050919050565b600060208201905081810360008301526147e6816147aa565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614849602183613344565b9150614854826147ed565b604082019050919050565b600060208201905081810360008301526148788161483c565b9050919050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006148b5601f83613344565b91506148c08261487f565b602082019050919050565b600060208201905081810360008301526148e4816148a8565b905091905056fea2646970667358221220a5962a0215db6cce69e4d83c46089be22808ca9d7f7a216ae6b0e26da3a50f8564736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061027f5760003560e01c80638da5cb5b1161015c578063b62496f5116100ce578063ee40166e11610087578063ee40166e1461077a578063f076e53514610798578063f0dda65c146107c8578063f2fde38b146107e4578063fdd7d45014610800578063fe9fbb801461081c5761027f565b8063b62496f5146106b8578063bbc0c742146106e8578063c3f70b5214610706578063cf1c316a14610724578063d07c1e4314610740578063dd62ed3e1461074a5761027f565b80639cee2142116101205780639cee2142146105d2578063a2af568514610602578063a457c2d71461061e578063a62068ce1461064e578063a9059cbb1461066c578063ac8e33281461069c5761027f565b80638da5cb5b1461053e57806395d89b411461055c57806396adebb31461057a57806399bafefb146105985780639a7a23d6146105b65761027f565b8063452ed4f1116101f557806370a08231116101b957806370a08231146104a4578063715018a6146104d4578063751039fc146104de5780637b337a36146104e85780638366e79a146105045780638a8c523c146105345761027f565b8063452ed4f114610412578063485d7d94146104305780634a62bb651461044c5780635679dfdb1461046a5780636d1b229d146104885761027f565b8063095ea7b311610247578063095ea7b31461031657806318160ddd1461034657806323b872dd14610364578063313ce5671461039457806337b28bfd146103b257806339509351146103e25761027f565b806302d9e921146102845780630517d13d146102a257806306fdde03146102be5780630758d924146102dc578063093bcbb5146102fa575b600080fd5b61028c61084c565b60405161029991906132b1565b60405180910390f35b6102bc60048036038101906102b7919061330c565b610872565b005b6102c66109eb565b6040516102d391906133c9565b60405180910390f35b6102e4610a7d565b6040516102f1919061344a565b60405180910390f35b610314600480360381019061030f919061330c565b610aa1565b005b610330600480360381019061032b9190613491565b610b87565b60405161033d91906134ec565b60405180910390f35b61034e610ba5565b60405161035b9190613516565b60405180910390f35b61037e60048036038101906103799190613531565b610baf565b60405161038b91906134ec565b60405180910390f35b61039c610ca7565b6040516103a991906135a0565b60405180910390f35b6103cc60048036038101906103c791906135bb565b610cb0565b6040516103d99190613516565b60405180910390f35b6103fc60048036038101906103f79190613491565b610cc8565b60405161040991906134ec565b60405180910390f35b61041a610d74565b60405161042791906132b1565b60405180910390f35b61044a600480360381019061044591906135bb565b610d98565b005b610454610e3b565b60405161046191906134ec565b60405180910390f35b610472610e4e565b60405161047f91906134ec565b60405180910390f35b6104a2600480360381019061049d919061330c565b610e61565b005b6104be60048036038101906104b991906135bb565b610eb6565b6040516104cb9190613516565b60405180910390f35b6104dc610efe565b005b6104e6611056565b005b61050260048036038101906104fd9190613614565b611144565b005b61051e60048036038101906105199190613654565b611284565b60405161052b91906134ec565b60405180910390f35b61053c6114ca565b005b610546611601565b60405161055391906132b1565b60405180910390f35b61056461162b565b60405161057191906133c9565b60405180910390f35b6105826116bd565b60405161058f91906132b1565b60405180910390f35b6105a06116e1565b6040516105ad9190613516565b60405180910390f35b6105d060048036038101906105cb9190613614565b6116e7565b005b6105ec60048036038101906105e791906135bb565b6118b6565b6040516105f991906134ec565b60405180910390f35b61061c600480360381019061061791906135bb565b6118d6565b005b61063860048036038101906106339190613491565b611a20565b60405161064591906134ec565b60405180910390f35b610656611b0b565b6040516106639190613516565b60405180910390f35b61068660048036038101906106819190613491565b611b11565b60405161069391906134ec565b60405180910390f35b6106b660048036038101906106b191906136f9565b611b2f565b005b6106d260048036038101906106cd91906135bb565b611c6b565b6040516106df91906134ec565b60405180910390f35b6106f0611c8b565b6040516106fd91906134ec565b60405180910390f35b61070e611c9e565b60405161071b9190613516565b60405180910390f35b61073e600480360381019061073991906135bb565b611ca4565b005b610748611d47565b005b610764600480360381019061075f9190613654565b611d52565b6040516107719190613516565b60405180910390f35b610782611dd9565b60405161078f9190613516565b60405180910390f35b6107b260048036038101906107ad91906135bb565b611ddf565b6040516107bf91906134ec565b60405180910390f35b6107e260048036038101906107dd9190613491565b611dff565b005b6107fe60048036038101906107f991906135bb565b611e55565b005b61081a60048036038101906108159190613759565b61201b565b005b610836600480360381019061083191906135bb565b6120cf565b60405161084391906134ec565b60405180910390f35b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61087a6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610900906137d2565b60405180910390fd5b610911610ca7565b600a61091d9190613954565b6103e8600161092a610ba5565b610934919061399f565b61093e9190613a28565b6109489190613a28565b81101561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190613acb565b60405180910390fd5b610992610ca7565b600a61099e9190613954565b816109a9919061399f565b6007819055507f76a9278644b7300961aa0e7e86f10934585987f1daf1c6ecc971c183766915746007546040516109e09190613516565b60405180910390a150565b6060600380546109fa90613b1a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2690613b1a565b8015610a735780601f10610a4857610100808354040283529160200191610a73565b820191906000526020600020905b815481529060010190602001808311610a5657829003601f168201915b5050505050905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b610aa96120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f906137d2565b60405180910390fd5b612710811115610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490613b97565b60405180910390fd5b8060098190555050565b6000610b9b610b946120ec565b84846120f4565b6001905092915050565b6000600254905090565b6000610bbc8484846122bd565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c076120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90613c29565b60405180910390fd5b610c9b85610c936120ec565b8584036120f4565b60019150509392505050565b60006012905090565b600a6020528060005260406000206000915090505481565b6000610d6a610cd56120ec565b848460016000610ce36120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d659190613c49565b6120f4565b6001905092915050565b7f000000000000000000000000f0d275625b8d6075703f577e1209720245728f8381565b610da06120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e26906137d2565b60405180910390fd5b610e3881612a41565b50565b600e60009054906101000a900460ff1681565b600e60029054906101000a900460ff1681565b610e6a336120cf565b610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea090613cef565b60405180910390fd5b610eb33382612a9b565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f066120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61105e6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e4906137d2565b60405180910390fd5b6000600e60006101000a81548160ff021916908315150217905550611110610ba5565b6007819055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61114c6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d2906137d2565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f264408260405161127891906134ec565b60405180910390a25050565b600061128e6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611314906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390613d5b565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113c791906132b1565b602060405180830381865afa1580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114089190613d90565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611445929190613dbd565b6020604051808303816000875af1158015611464573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114889190613dfb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516114bb929190613dbd565b60405180910390a15092915050565b6114d26120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611558906137d2565b60405180910390fd5b600e60019054906101000a900460ff16156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613e9a565b60405180910390fd5b6001600e60016101000a81548160ff02191690831515021790555043600b819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461163a90613b1a565b80601f016020809104026020016040519081016040528092919081815260200182805461166690613b1a565b80156116b35780601f10611688576101008083540402835291602001916116b3565b820191906000526020600020905b81548152906001019060200180831161169657829003601f168201915b5050505050905090565b7f000000000000000000000000c55c93696f70e3e36ea11e482806ceb50537a9b081565b60095481565b6116ef6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906137d2565b60405180910390fd5b7f000000000000000000000000f0d275625b8d6075703f577e1209720245728f8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415806117d65750805b611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90613f2c565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6118de6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d390613f98565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060016000611a2f6120ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae39061402a565b60405180910390fd5b611b00611af76120ec565b858584036120f4565b600191505092915050565b600d5481565b6000611b25611b1e6120ec565b84846122bd565b6001905092915050565b611b376120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906137d2565b60405180910390fd5b60005b83839050811015611c655781600c6000868685818110611bec57611beb61404a565b5b9050602002016020810190611c0191906135bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c5d90614079565b915050611bc9565b50505050565b60106020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b60075481565b611cac6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d32906137d2565b60405180910390fd5b611d4481612c50565b50565b611d5033612a41565b565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b600c6020528060005260406000206000915054906101000a900460ff1681565b611e08336120cf565b611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90613cef565b60405180910390fd5b611e518282612caa565b5050565b611e5d6120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee3906137d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614133565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6120236120ec565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a9906137d2565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b60006120e5826006612df190919063ffffffff16565b9050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215a906141c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c990614257565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122b09190613516565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361232c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612323906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361239b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123929061437b565b60405180910390fd5b600081036123b4576123af83836000612eb8565b612a3c565b600e60019054906101000a900460ff166124a957600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124695750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f906143e7565b60405180910390fd5b5b6000600b54111561260d57600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125585750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806125955750612566611601565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806125cd575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614453565b60405180910390fd5b5b600e60029054906101000a900460ff1680156126c95750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126c85750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561288457601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127715750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127bf5743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612883565b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561280f57506000600954115b1561288257600061271060095483612827919061399f565b6128319190613a28565b9050600081836128419190614473565b905061287085600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612eb8565b61287b858583612eb8565b5050612a3c565b5b5b600e60009054906101000a900460ff1615612a3057600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561293d5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2f57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129e35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a2e57600754811115612a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2490614519565b60405180910390fd5b5b5b5b612a3b838383612eb8565b5b505050565b612a5581600661312190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0fafd0343e6c6f6985727574866da48938c918559eb9521cf9cc0d317ea0f7b460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b01906145ab565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b879061463d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c439190613516565b60405180910390a3505050565b612c648160066131c890919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fdd10d14f6ac19e913d4edbb11fd30661531e2ccd0d23f571e9b224f001f0dd0660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d10906146a9565b60405180910390fd5b8060026000828254612d2b9190613c49565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d809190613c49565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612de59190613516565b60405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e589061473b565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e906142e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8d9061437b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561301c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613013906147cd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130af9190613c49565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131139190613516565b60405180910390a350505050565b61312b8282612df1565b61316a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131619061485f565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6131d28282612df1565b15613212576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613209906148cb565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061329b82613270565b9050919050565b6132ab81613290565b82525050565b60006020820190506132c660008301846132a2565b92915050565b600080fd5b600080fd5b6000819050919050565b6132e9816132d6565b81146132f457600080fd5b50565b600081359050613306816132e0565b92915050565b600060208284031215613322576133216132cc565b5b6000613330848285016132f7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613373578082015181840152602081019050613358565b60008484015250505050565b6000601f19601f8301169050919050565b600061339b82613339565b6133a58185613344565b93506133b5818560208601613355565b6133be8161337f565b840191505092915050565b600060208201905081810360008301526133e38184613390565b905092915050565b6000819050919050565b600061341061340b61340684613270565b6133eb565b613270565b9050919050565b6000613422826133f5565b9050919050565b600061343482613417565b9050919050565b61344481613429565b82525050565b600060208201905061345f600083018461343b565b92915050565b61346e81613290565b811461347957600080fd5b50565b60008135905061348b81613465565b92915050565b600080604083850312156134a8576134a76132cc565b5b60006134b68582860161347c565b92505060206134c7858286016132f7565b9150509250929050565b60008115159050919050565b6134e6816134d1565b82525050565b600060208201905061350160008301846134dd565b92915050565b613510816132d6565b82525050565b600060208201905061352b6000830184613507565b92915050565b60008060006060848603121561354a576135496132cc565b5b60006135588682870161347c565b93505060206135698682870161347c565b925050604061357a868287016132f7565b9150509250925092565b600060ff82169050919050565b61359a81613584565b82525050565b60006020820190506135b56000830184613591565b92915050565b6000602082840312156135d1576135d06132cc565b5b60006135df8482850161347c565b91505092915050565b6135f1816134d1565b81146135fc57600080fd5b50565b60008135905061360e816135e8565b92915050565b6000806040838503121561362b5761362a6132cc565b5b60006136398582860161347c565b925050602061364a858286016135ff565b9150509250929050565b6000806040838503121561366b5761366a6132cc565b5b60006136798582860161347c565b925050602061368a8582860161347c565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126136b9576136b8613694565b5b8235905067ffffffffffffffff8111156136d6576136d5613699565b5b6020830191508360208202830111156136f2576136f161369e565b5b9250929050565b600080600060408486031215613712576137116132cc565b5b600084013567ffffffffffffffff8111156137305761372f6132d1565b5b61373c868287016136a3565b9350935050602061374f868287016135ff565b9150509250925092565b60006020828403121561376f5761376e6132cc565b5b600061377d848285016135ff565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137bc602083613344565b91506137c782613786565b602082019050919050565b600060208201905081810360008301526137eb816137af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561387857808604811115613854576138536137f2565b5b60018516156138635780820291505b808102905061387185613821565b9450613838565b94509492505050565b600082613891576001905061394d565b8161389f576000905061394d565b81600181146138b557600281146138bf576138ee565b600191505061394d565b60ff8411156138d1576138d06137f2565b5b8360020a9150848211156138e8576138e76137f2565b5b5061394d565b5060208310610133831016604e8410600b84101617156139235782820a90508381111561391e5761391d6137f2565b5b61394d565b613930848484600161382e565b92509050818404811115613947576139466137f2565b5b81810290505b9392505050565b600061395f826132d6565b915061396a83613584565b92506139977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613881565b905092915050565b60006139aa826132d6565b91506139b5836132d6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ee576139ed6137f2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a33826132d6565b9150613a3e836132d6565b925082613a4e57613a4d6139f9565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ab5602983613344565b9150613ac082613a59565b604082019050919050565b60006020820190508181036000830152613ae481613aa8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b3257607f821691505b602082108103613b4557613b44613aeb565b5b50919050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000613b81600883613344565b9150613b8c82613b4b565b602082019050919050565b60006020820190508181036000830152613bb081613b74565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613c13602883613344565b9150613c1e82613bb7565b604082019050919050565b60006020820190508181036000830152613c4281613c06565b9050919050565b6000613c54826132d6565b9150613c5f836132d6565b9250828201905080821115613c7757613c766137f2565b5b92915050565b7f417574686f72697a6564526f6c653a2063616c6c657220646f6573206e6f742060008201527f686176652074686520417574686f72697a656420726f6c650000000000000000602082015250565b6000613cd9603883613344565b9150613ce482613c7d565b604082019050919050565b60006020820190508181036000830152613d0881613ccc565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000613d45601a83613344565b9150613d5082613d0f565b602082019050919050565b60006020820190508181036000830152613d7481613d38565b9050919050565b600081519050613d8a816132e0565b92915050565b600060208284031215613da657613da56132cc565b5b6000613db484828501613d7b565b91505092915050565b6000604082019050613dd260008301856132a2565b613ddf6020830184613507565b9392505050565b600081519050613df5816135e8565b92915050565b600060208284031215613e1157613e106132cc565b5b6000613e1f84828501613de6565b91505092915050565b7f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60008201527f742072656c61756e63682e000000000000000000000000000000000000000000602082015250565b6000613e84602b83613344565b9150613e8f82613e28565b604082019050919050565b60006020820190508181036000830152613eb381613e77565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613f16603983613344565b9150613f2182613eba565b604082019050919050565b60006020820190508181036000830152613f4581613f09565b9050919050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000613f82600c83613344565b9150613f8d82613f4c565b602082019050919050565b60006020820190508181036000830152613fb181613f75565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614014602583613344565b915061401f82613fb8565b604082019050919050565b6000602082019050818103600083015261404381614007565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614084826132d6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140b6576140b56137f2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061411d602683613344565b9150614128826140c1565b604082019050919050565b6000602082019050818103600083015261414c81614110565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141af602483613344565b91506141ba82614153565b604082019050919050565b600060208201905081810360008301526141de816141a2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614241602283613344565b915061424c826141e5565b604082019050919050565b6000602082019050818103600083015261427081614234565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006142d3602583613344565b91506142de82614277565b604082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614365602383613344565b915061437082614309565b604082019050919050565b6000602082019050818103600083015261439481614358565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006143d1601683613344565b91506143dc8261439b565b602082019050919050565b60006020820190508181036000830152614400816143c4565b9050919050565b7f526573747269637465642077616c6c6574000000000000000000000000000000600082015250565b600061443d601183613344565b915061444882614407565b602082019050919050565b6000602082019050818103600083015261446c81614430565b9050919050565b600061447e826132d6565b9150614489836132d6565b92508282039050818111156144a1576144a06137f2565b5b92915050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614503602883613344565b915061450e826144a7565b604082019050919050565b60006020820190508181036000830152614532816144f6565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614595602183613344565b91506145a082614539565b604082019050919050565b600060208201905081810360008301526145c481614588565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614627602283613344565b9150614632826145cb565b604082019050919050565b600060208201905081810360008301526146568161461a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614693601f83613344565b915061469e8261465d565b602082019050919050565b600060208201905081810360008301526146c281614686565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614725602283613344565b9150614730826146c9565b604082019050919050565b6000602082019050818103600083015261475481614718565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147b7602683613344565b91506147c28261475b565b604082019050919050565b600060208201905081810360008301526147e6816147aa565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000614849602183613344565b9150614854826147ed565b604082019050919050565b600060208201905081810360008301526148788161483c565b9050919050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006148b5601f83613344565b91506148c08261487f565b602082019050919050565b600060208201905081810360008301526148e4816148a8565b905091905056fea2646970667358221220a5962a0215db6cce69e4d83c46089be22808ca9d7f7a216ae6b0e26da3a50f8564736f6c63430008100033
Deployed Bytecode Sourcemap
8799:7533:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8893:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12991:303;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1815:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8975:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12663:149;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2729:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2136:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2906:458;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2035:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9100:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3372:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9019:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8042:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9333:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9413:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14328:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2252:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:150;;;:::i;:::-;;12388:156;;;:::i;:::-;;14009:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13306:381;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11901:240;;;:::i;:::-;;6123:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1923:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9057:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8930:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13703:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9460:47;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12820:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3595:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9291:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2387:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12149:227;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9516:58;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9373:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7935:99;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8155:85;;;:::i;:::-;;2570:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9157:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9234:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14196:124;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6495:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12552:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7810:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8893:30;;;;;;;;;;;;;:::o;12991:303::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13121:10:::1;:8;:10::i;:::-;13115:2;:16;;;;:::i;:::-;13106:4;13102:1;13086:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13085:47;;;;:::i;:::-;13075:6;:57;;13067:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13222:10;:8;:10::i;:::-;13216:2;:16;;;;:::i;:::-;13206:6;:27;;;;:::i;:::-;13189:14;:44;;;;13249:37;13271:14;;13249:37;;;;;;:::i;:::-;;;;;;;;12991:303:::0;:::o;1815:100::-;1869:13;1902:5;1895:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:100;:::o;8975:37::-;;;:::o;12663:149::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12752:5:::1;12744:4;:13;;12736:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;12800:4;12781:16;:23;;;;12663:149:::0;:::o;2729:169::-;2812:4;2829:39;2838:12;:10;:12::i;:::-;2852:7;2861:6;2829:8;:39::i;:::-;2886:4;2879:11;;2729:169;;;;:::o;2136:108::-;2197:7;2224:12;;2217:19;;2136:108;:::o;2906:458::-;3012:4;3029:36;3039:6;3047:9;3058:6;3029:9;:36::i;:::-;3078:24;3105:11;:19;3117:6;3105:19;;;;;;;;;;;;;;;:33;3125:12;:10;:12::i;:::-;3105:33;;;;;;;;;;;;;;;;3078:60;;3177:6;3157:16;:26;;3149:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3264:57;3273:6;3281:12;:10;:12::i;:::-;3314:6;3295:16;:25;3264:8;:57::i;:::-;3352:4;3345:11;;;2906:458;;;;;:::o;2035:93::-;2093:5;2118:2;2111:9;;2035:93;:::o;9100:48::-;;;;;;;;;;;;;;;;;:::o;3372:215::-;3460:4;3477:80;3486:12;:10;:12::i;:::-;3500:7;3546:10;3509:11;:25;3521:12;:10;:12::i;:::-;3509:25;;;;;;;;;;;;;;;:34;3535:7;3509:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3477:8;:80::i;:::-;3575:4;3568:11;;3372:215;;;;:::o;9019:31::-;;;:::o;8042:105::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8113:26:::1;8131:7;8113:17;:26::i;:::-;8042:105:::0;:::o;9333:33::-;;;;;;;;;;;;;:::o;9413:34::-;;;;;;;;;;;;;:::o;14328:102::-;7697:24;7710:10;7697:12;:24::i;:::-;7689:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;14397:25:::1;14403:10;14415:6;14397:5;:25::i;:::-;14328:102:::0;:::o;2252:127::-;2326:7;2353:9;:18;2363:7;2353:18;;;;;;;;;;;;;;;;2346:25;;2252:127;;;:::o;6337:150::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6446:1:::1;6409:40;;6430:6;;;;;;;;;;;6409:40;;;;;;;;;;;;6477:1;6460:6;;:19;;;;;;;;;;;;;;;;;;6337:150::o:0;12388:156::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12459:5:::1;12442:14;;:22;;;;;;;;;;;;;;;;;;12492:13;:11;:13::i;:::-;12475:14;:30;;;;12521:15;;;;;;;;;;12388:156::o:0;14009:179::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14126:8:::1;14100:14;:23;14115:7;14100:23;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14162:7;14150:30;;;14171:8;14150:30;;;;;;:::i;:::-;;;;;;;;14009:179:::0;;:::o;13306:381::-;13393:10;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13442:1:::1;13424:20;;:6;:20;;::::0;13416:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13486:24;13520:6;13513:24;;;13546:4;13513:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13486:66;;13578:6;13571:23;;;13595:3;13600:16;13571:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13563:54;;13633:46;13654:6;13662:16;13633:46;;;;;;;:::i;:::-;;;;;;;;13405:282;13306:381:::0;;;;:::o;11901:240::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11965:13:::1;;;;;;;;;;;11964:14;11956:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12053:4;12037:13;;:20;;;;;;;;;;;;;;;;;;12089:12;12068:18;:33;;;;12117:16;;;;;;;;;;11901:240::o:0;6123:79::-;6161:7;6188:6;;;;;;;;;;;6181:13;;6123:79;:::o;1923:104::-;1979:13;2012:7;2005:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1923:104;:::o;9057:34::-;;;:::o;8930:36::-;;;;:::o;13703:298::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13810:6:::1;13802:14;;:4;:14;;;;:23;;;;13820:5;13802:23;13794:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;13932:5;13898:25;:31;13924:4;13898:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13987:5;13953:40;;13981:4;13953:40;;;;;;;;;;;;13703:298:::0;;:::o;9460:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;12820:163::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12921:1:::1;12903:20;;:6;:20;;::::0;12895:45:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12969:6;12951:15;;:24;;;;;;;;;;;;;;;;;;12820:163:::0;:::o;3595:413::-;3688:4;3705:24;3732:11;:25;3744:12;:10;:12::i;:::-;3732:25;;;;;;;;;;;;;;;:34;3758:7;3732:34;;;;;;;;;;;;;;;;3705:61;;3805:15;3785:16;:35;;3777:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3898:67;3907:12;:10;:12::i;:::-;3921:7;3949:15;3930:16;:34;3898:8;:67::i;:::-;3996:4;3989:11;;;3595:413;;;;:::o;9291:33::-;;;;:::o;2387:175::-;2473:4;2490:42;2500:12;:10;:12::i;:::-;2514:9;2525:6;2490:9;:42::i;:::-;2550:4;2543:11;;2387:175;;;;:::o;12149:227::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12261:9:::1;12257:112;12280:7;;:14;;12276:1;:18;12257:112;;;12347:10;12315:17;:29;12333:7;;12341:1;12333:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12315:29;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12296:3;;;;;:::i;:::-;;;;12257:112;;;;12149:227:::0;;;:::o;9516:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9373:33::-;;;;;;;;;;;;;:::o;8855:29::-;;;;:::o;7935:99::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8003:23:::1;8018:7;8003:14;:23::i;:::-;7935:99:::0;:::o;8155:85::-;8203:29;8221:10;8203:17;:29::i;:::-;8155:85::o;2570:151::-;2659:7;2686:11;:18;2698:5;2686:18;;;;;;;;;;;;;;;:27;2705:7;2686:27;;;;;;;;;;;;;;;;2679:34;;2570:151;;;;:::o;9157:37::-;;;;:::o;9234:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;14196:124::-;7697:24;7710:10;7697:12;:24::i;:::-;7689:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;14286:26:::1;14292:11;14305:6;14286:5;:26::i;:::-;14196:124:::0;;:::o;6495:244::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6604:1:::1;6584:22;;:8;:22;;::::0;6576:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6694:8;6665:38;;6686:6;;;;;;;;;;;6665:38;;;;;;;;;;;;6723:8;6714:6;;:17;;;;;;;;;;;;;;;;;;6495:244:::0;:::o;12552:103::-;6260:12;:10;:12::i;:::-;6250:22;;:6;;;;;;;;;;;:22;;;6242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12641:6:::1;12623:15;;:24;;;;;;;;;;;;;;;;;;12552:103:::0;:::o;7810:117::-;7870:4;7894:25;7911:7;7894:12;:16;;:25;;;;:::i;:::-;7887:32;;7810:117;;;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;5446:346::-;5565:1;5548:19;;:5;:19;;;5540:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5646:1;5627:21;;:7;:21;;;5619:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5730:6;5700:11;:18;5712:5;5700:18;;;;;;;;;;;;;;;:27;5719:7;5700:27;;;;;;;;;;;;;;;:36;;;;5768:7;5752:32;;5761:5;5752:32;;;5777:6;5752:32;;;;;;:::i;:::-;;;;;;;;5446:346;;;:::o;14477:1852::-;14593:1;14577:18;;:4;:18;;;14569:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14670:1;14656:16;;:2;:16;;;14648:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14865:1;14855:6;:11;14852:91;;14882:28;14898:4;14904:2;14908:1;14882:15;:28::i;:::-;14925:7;;14852:91;14967:13;;;;;;;;;;;14963:122;;15004:14;:20;15019:4;15004:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;15028:14;:18;15043:2;15028:18;;;;;;;;;;;;;;;;;;;;;;;;;15004:42;14996:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;14963:122;15121:1;15100:18;;:22;15097:177;;;15148:17;:23;15166:4;15148:23;;;;;;;;;;;;;;;;;;;;;;;;;15147:24;:50;;;;;15176:17;:21;15194:2;15176:21;;;;;;;;;;;;;;;;;;;;;;;;;15175:22;15147:50;15146:69;;;;15208:7;:5;:7::i;:::-;15202:13;;:2;:13;;;15146:69;:94;;;;15233:6;15219:21;;:2;:21;;;15146:94;15138:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;15097:177;15297:15;;;;;;;;;;;:65;;;;;15318:14;:18;15333:2;15318:18;;;;;;;;;;;;;;;;;;;;;;;;;15317:19;:44;;;;;15341:14;:20;15356:4;15341:20;;;;;;;;;;;;;;;;;;;;;;;;;15340:21;15317:44;15297:65;15294:619;;;15381:25;:31;15407:4;15381:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;15417:25;:29;15443:2;15417:29;;;;;;;;;;;;;;;;;;;;;;;;;15416:30;15381:65;15378:524;;;15485:12;15466;:16;15479:2;15466:16;;;;;;;;;;;;;;;:31;;;;15378:524;;;15544:12;15522;:18;15535:4;15522:18;;;;;;;;;;;;;;;;:34;:58;;;;;15579:1;15560:16;;:20;15522:58;15519:383;;;15600:23;15654:5;15635:16;;15626:6;:25;;;;:::i;:::-;:33;;;;:::i;:::-;15600:59;;15678:22;15712:15;15703:6;:24;;;;:::i;:::-;15678:49;;15746:55;15762:4;15768:15;;;;;;;;;;;15785;15746;:55::i;:::-;15820:41;15836:4;15842:2;15846:14;15820:15;:41::i;:::-;15880:7;;;;15519:383;15378:524;15294:619;15928:14;;;;;;;;;;;15925:351;;;15963:14;:20;15978:4;15963:20;;;;;;;;;;;;;;;;;;;;;;;;;15962:21;:44;;;;;15988:14;:18;16003:2;15988:18;;;;;;;;;;;;;;;;;;;;;;;;;15987:19;15962:44;15958:307;;;16064:25;:31;16090:4;16064:31;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;16099:25;:29;16125:2;16099:29;;;;;;;;;;;;;;;;;;;;;;;;;16064:64;16060:190;;;16171:14;;16161:6;:24;;16153:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16060:190;15958:307;15925:351;16288:33;16304:4;16310:2;16314:6;16288:15;:33::i;:::-;14477:1852;;;;:::o;8390:142::-;8454:28;8474:7;8454:12;:19;;:28;;;;:::i;:::-;8516:7;8498:26;;;;;;;;;;;;8390:142;:::o;4888:550::-;4991:1;4972:21;;:7;:21;;;4964:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5042:22;5067:9;:18;5077:7;5067:18;;;;;;;;;;;;;;;;5042:43;;5122:6;5104:14;:24;;5096:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5241:6;5224:14;:23;5203:9;:18;5213:7;5203:18;;;;;;;;;;;;;;;:44;;;;5358:6;5342:12;;:22;;;;;;;;;;;5419:1;5393:37;;5402:7;5393:37;;;5423:6;5393:37;;;;;;:::i;:::-;;;;;;;;4953:485;4888:550;;:::o;8248:134::-;8309:25;8326:7;8309:12;:16;;:25;;;;:::i;:::-;8366:7;8350:24;;;;;;;;;;;;8248:134;:::o;4604:276::-;4707:1;4688:21;;:7;:21;;;4680:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4774:6;4758:12;;:22;;;;;;;:::i;:::-;;;;;;;;4813:6;4791:9;:18;4801:7;4791:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;4856:7;4835:37;;4852:1;4835:37;;;4865:6;4835:37;;;;;;:::i;:::-;;;;;;;;4604:276;;:::o;7215:203::-;7287:4;7331:1;7312:21;;:7;:21;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7390:4;:11;;:20;7402:7;7390:20;;;;;;;;;;;;;;;;;;;;;;;;;7383:27;;7215:203;;;;:::o;4016:580::-;4140:1;4122:20;;:6;:20;;;4114:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4224:1;4203:23;;:9;:23;;;4195:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4279:21;4303:9;:17;4313:6;4303:17;;;;;;;;;;;;;;;;4279:41;;4356:6;4339:13;:23;;4331:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4477:6;4461:13;:22;4441:9;:17;4451:6;4441:17;;;;;;;;;;;;;;;:42;;;;4529:6;4505:9;:20;4515:9;4505:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4570:9;4553:35;;4562:6;4553:35;;;4581:6;4553:35;;;;;;:::i;:::-;;;;;;;;4103:493;4016:580;;;:::o;7024:183::-;7104:18;7108:4;7114:7;7104:3;:18::i;:::-;7096:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7194:5;7171:4;:11;;:20;7183:7;7171:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;7024:183;;:::o;6838:178::-;6916:18;6920:4;6926:7;6916:3;:18::i;:::-;6915:19;6907:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7004:4;6981;:11;;:20;6993:7;6981:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;6838:178;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;674:117::-;783:1;780;773:12;797:117;906:1;903;896:12;920:77;957:7;986:5;975:16;;920:77;;;:::o;1003:122::-;1076:24;1094:5;1076:24;:::i;:::-;1069:5;1066:35;1056:63;;1115:1;1112;1105:12;1056:63;1003:122;:::o;1131:139::-;1177:5;1215:6;1202:20;1193:29;;1231:33;1258:5;1231:33;:::i;:::-;1131:139;;;;:::o;1276:329::-;1335:6;1384:2;1372:9;1363:7;1359:23;1355:32;1352:119;;;1390:79;;:::i;:::-;1352:119;1510:1;1535:53;1580:7;1571:6;1560:9;1556:22;1535:53;:::i;:::-;1525:63;;1481:117;1276:329;;;;:::o;1611:99::-;1663:6;1697:5;1691:12;1681:22;;1611:99;;;:::o;1716:169::-;1800:11;1834:6;1829:3;1822:19;1874:4;1869:3;1865:14;1850:29;;1716:169;;;;:::o;1891:246::-;1972:1;1982:113;1996:6;1993:1;1990:13;1982:113;;;2081:1;2076:3;2072:11;2066:18;2062:1;2057:3;2053:11;2046:39;2018:2;2015:1;2011:10;2006:15;;1982:113;;;2129:1;2120:6;2115:3;2111:16;2104:27;1953:184;1891:246;;;:::o;2143:102::-;2184:6;2235:2;2231:7;2226:2;2219:5;2215:14;2211:28;2201:38;;2143:102;;;:::o;2251:377::-;2339:3;2367:39;2400:5;2367:39;:::i;:::-;2422:71;2486:6;2481:3;2422:71;:::i;:::-;2415:78;;2502:65;2560:6;2555:3;2548:4;2541:5;2537:16;2502:65;:::i;:::-;2592:29;2614:6;2592:29;:::i;:::-;2587:3;2583:39;2576:46;;2343:285;2251:377;;;;:::o;2634:313::-;2747:4;2785:2;2774:9;2770:18;2762:26;;2834:9;2828:4;2824:20;2820:1;2809:9;2805:17;2798:47;2862:78;2935:4;2926:6;2862:78;:::i;:::-;2854:86;;2634:313;;;;:::o;2953:60::-;2981:3;3002:5;2995:12;;2953:60;;;:::o;3019:142::-;3069:9;3102:53;3120:34;3129:24;3147:5;3129:24;:::i;:::-;3120:34;:::i;:::-;3102:53;:::i;:::-;3089:66;;3019:142;;;:::o;3167:126::-;3217:9;3250:37;3281:5;3250:37;:::i;:::-;3237:50;;3167:126;;;:::o;3299:144::-;3367:9;3400:37;3431:5;3400:37;:::i;:::-;3387:50;;3299:144;;;:::o;3449:167::-;3554:55;3603:5;3554:55;:::i;:::-;3549:3;3542:68;3449:167;;:::o;3622:258::-;3733:4;3771:2;3760:9;3756:18;3748:26;;3784:89;3870:1;3859:9;3855:17;3846:6;3784:89;:::i;:::-;3622:258;;;;:::o;3886:122::-;3959:24;3977:5;3959:24;:::i;:::-;3952:5;3949:35;3939:63;;3998:1;3995;3988:12;3939:63;3886:122;:::o;4014:139::-;4060:5;4098:6;4085:20;4076:29;;4114:33;4141:5;4114:33;:::i;:::-;4014:139;;;;:::o;4159:474::-;4227:6;4235;4284:2;4272:9;4263:7;4259:23;4255:32;4252:119;;;4290:79;;:::i;:::-;4252:119;4410:1;4435:53;4480:7;4471:6;4460:9;4456:22;4435:53;:::i;:::-;4425:63;;4381:117;4537:2;4563:53;4608:7;4599:6;4588:9;4584:22;4563:53;:::i;:::-;4553:63;;4508:118;4159:474;;;;;:::o;4639:90::-;4673:7;4716:5;4709:13;4702:21;4691:32;;4639:90;;;:::o;4735:109::-;4816:21;4831:5;4816:21;:::i;:::-;4811:3;4804:34;4735:109;;:::o;4850:210::-;4937:4;4975:2;4964:9;4960:18;4952:26;;4988:65;5050:1;5039:9;5035:17;5026:6;4988:65;:::i;:::-;4850:210;;;;:::o;5066:118::-;5153:24;5171:5;5153:24;:::i;:::-;5148:3;5141:37;5066:118;;:::o;5190:222::-;5283:4;5321:2;5310:9;5306:18;5298:26;;5334:71;5402:1;5391:9;5387:17;5378:6;5334:71;:::i;:::-;5190:222;;;;:::o;5418:619::-;5495:6;5503;5511;5560:2;5548:9;5539:7;5535:23;5531:32;5528:119;;;5566:79;;:::i;:::-;5528:119;5686:1;5711:53;5756:7;5747:6;5736:9;5732:22;5711:53;:::i;:::-;5701:63;;5657:117;5813:2;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5784:118;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;5418:619;;;;;:::o;6043:86::-;6078:7;6118:4;6111:5;6107:16;6096:27;;6043:86;;;:::o;6135:112::-;6218:22;6234:5;6218:22;:::i;:::-;6213:3;6206:35;6135:112;;:::o;6253:214::-;6342:4;6380:2;6369:9;6365:18;6357:26;;6393:67;6457:1;6446:9;6442:17;6433:6;6393:67;:::i;:::-;6253:214;;;;:::o;6473:329::-;6532:6;6581:2;6569:9;6560:7;6556:23;6552:32;6549:119;;;6587:79;;:::i;:::-;6549:119;6707:1;6732:53;6777:7;6768:6;6757:9;6753:22;6732:53;:::i;:::-;6722:63;;6678:117;6473:329;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:53;7387:7;7378:6;7367:9;7363:22;7342:53;:::i;:::-;7332:63;;7288:117;7444:2;7470:50;7512:7;7503:6;7492:9;7488:22;7470:50;:::i;:::-;7460:60;;7415:115;7069:468;;;;;:::o;7543:474::-;7611:6;7619;7668:2;7656:9;7647:7;7643:23;7639:32;7636:119;;;7674:79;;:::i;:::-;7636:119;7794:1;7819:53;7864:7;7855:6;7844:9;7840:22;7819:53;:::i;:::-;7809:63;;7765:117;7921:2;7947:53;7992:7;7983:6;7972:9;7968:22;7947:53;:::i;:::-;7937:63;;7892:118;7543:474;;;;;:::o;8023:117::-;8132:1;8129;8122:12;8146:117;8255:1;8252;8245:12;8269:117;8378:1;8375;8368:12;8409:568;8482:8;8492:6;8542:3;8535:4;8527:6;8523:17;8519:27;8509:122;;8550:79;;:::i;:::-;8509:122;8663:6;8650:20;8640:30;;8693:18;8685:6;8682:30;8679:117;;;8715:79;;:::i;:::-;8679:117;8829:4;8821:6;8817:17;8805:29;;8883:3;8875:4;8867:6;8863:17;8853:8;8849:32;8846:41;8843:128;;;8890:79;;:::i;:::-;8843:128;8409:568;;;;;:::o;8983:698::-;9075:6;9083;9091;9140:2;9128:9;9119:7;9115:23;9111:32;9108:119;;;9146:79;;:::i;:::-;9108:119;9294:1;9283:9;9279:17;9266:31;9324:18;9316:6;9313:30;9310:117;;;9346:79;;:::i;:::-;9310:117;9459:80;9531:7;9522:6;9511:9;9507:22;9459:80;:::i;:::-;9441:98;;;;9237:312;9588:2;9614:50;9656:7;9647:6;9636:9;9632:22;9614:50;:::i;:::-;9604:60;;9559:115;8983:698;;;;;:::o;9687:323::-;9743:6;9792:2;9780:9;9771:7;9767:23;9763:32;9760:119;;;9798:79;;:::i;:::-;9760:119;9918:1;9943:50;9985:7;9976:6;9965:9;9961:22;9943:50;:::i;:::-;9933:60;;9889:114;9687:323;;;;:::o;10016:182::-;10156:34;10152:1;10144:6;10140:14;10133:58;10016:182;:::o;10204:366::-;10346:3;10367:67;10431:2;10426:3;10367:67;:::i;:::-;10360:74;;10443:93;10532:3;10443:93;:::i;:::-;10561:2;10556:3;10552:12;10545:19;;10204:366;;;:::o;10576:419::-;10742:4;10780:2;10769:9;10765:18;10757:26;;10829:9;10823:4;10819:20;10815:1;10804:9;10800:17;10793:47;10857:131;10983:4;10857:131;:::i;:::-;10849:139;;10576:419;;;:::o;11001:180::-;11049:77;11046:1;11039:88;11146:4;11143:1;11136:15;11170:4;11167:1;11160:15;11187:102;11229:8;11276:5;11273:1;11269:13;11248:34;;11187:102;;;:::o;11295:848::-;11356:5;11363:4;11387:6;11378:15;;11411:5;11402:14;;11425:712;11446:1;11436:8;11433:15;11425:712;;;11541:4;11536:3;11532:14;11526:4;11523:24;11520:50;;;11550:18;;:::i;:::-;11520:50;11600:1;11590:8;11586:16;11583:451;;;12015:4;12008:5;12004:16;11995:25;;11583:451;12065:4;12059;12055:15;12047:23;;12095:32;12118:8;12095:32;:::i;:::-;12083:44;;11425:712;;;11295:848;;;;;;;:::o;12149:1073::-;12203:5;12394:8;12384:40;;12415:1;12406:10;;12417:5;;12384:40;12443:4;12433:36;;12460:1;12451:10;;12462:5;;12433:36;12529:4;12577:1;12572:27;;;;12613:1;12608:191;;;;12522:277;;12572:27;12590:1;12581:10;;12592:5;;;12608:191;12653:3;12643:8;12640:17;12637:43;;;12660:18;;:::i;:::-;12637:43;12709:8;12706:1;12702:16;12693:25;;12744:3;12737:5;12734:14;12731:40;;;12751:18;;:::i;:::-;12731:40;12784:5;;;12522:277;;12908:2;12898:8;12895:16;12889:3;12883:4;12880:13;12876:36;12858:2;12848:8;12845:16;12840:2;12834:4;12831:12;12827:35;12811:111;12808:246;;;12964:8;12958:4;12954:19;12945:28;;12999:3;12992:5;12989:14;12986:40;;;13006:18;;:::i;:::-;12986:40;13039:5;;12808:246;13079:42;13117:3;13107:8;13101:4;13098:1;13079:42;:::i;:::-;13064:57;;;;13153:4;13148:3;13144:14;13137:5;13134:25;13131:51;;;13162:18;;:::i;:::-;13131:51;13211:4;13204:5;13200:16;13191:25;;12149:1073;;;;;;:::o;13228:281::-;13286:5;13310:23;13328:4;13310:23;:::i;:::-;13302:31;;13354:25;13370:8;13354:25;:::i;:::-;13342:37;;13398:104;13435:66;13425:8;13419:4;13398:104;:::i;:::-;13389:113;;13228:281;;;;:::o;13515:348::-;13555:7;13578:20;13596:1;13578:20;:::i;:::-;13573:25;;13612:20;13630:1;13612:20;:::i;:::-;13607:25;;13800:1;13732:66;13728:74;13725:1;13722:81;13717:1;13710:9;13703:17;13699:105;13696:131;;;13807:18;;:::i;:::-;13696:131;13855:1;13852;13848:9;13837:20;;13515:348;;;;:::o;13869:180::-;13917:77;13914:1;13907:88;14014:4;14011:1;14004:15;14038:4;14035:1;14028:15;14055:185;14095:1;14112:20;14130:1;14112:20;:::i;:::-;14107:25;;14146:20;14164:1;14146:20;:::i;:::-;14141:25;;14185:1;14175:35;;14190:18;;:::i;:::-;14175:35;14232:1;14229;14225:9;14220:14;;14055:185;;;;:::o;14246:228::-;14386:34;14382:1;14374:6;14370:14;14363:58;14455:11;14450:2;14442:6;14438:15;14431:36;14246:228;:::o;14480:366::-;14622:3;14643:67;14707:2;14702:3;14643:67;:::i;:::-;14636:74;;14719:93;14808:3;14719:93;:::i;:::-;14837:2;14832:3;14828:12;14821:19;;14480:366;;;:::o;14852:419::-;15018:4;15056:2;15045:9;15041:18;15033:26;;15105:9;15099:4;15095:20;15091:1;15080:9;15076:17;15069:47;15133:131;15259:4;15133:131;:::i;:::-;15125:139;;14852:419;;;:::o;15277:180::-;15325:77;15322:1;15315:88;15422:4;15419:1;15412:15;15446:4;15443:1;15436:15;15463:320;15507:6;15544:1;15538:4;15534:12;15524:22;;15591:1;15585:4;15581:12;15612:18;15602:81;;15668:4;15660:6;15656:17;15646:27;;15602:81;15730:2;15722:6;15719:14;15699:18;15696:38;15693:84;;15749:18;;:::i;:::-;15693:84;15514:269;15463:320;;;:::o;15789:158::-;15929:10;15925:1;15917:6;15913:14;15906:34;15789:158;:::o;15953:365::-;16095:3;16116:66;16180:1;16175:3;16116:66;:::i;:::-;16109:73;;16191:93;16280:3;16191:93;:::i;:::-;16309:2;16304:3;16300:12;16293:19;;15953:365;;;:::o;16324:419::-;16490:4;16528:2;16517:9;16513:18;16505:26;;16577:9;16571:4;16567:20;16563:1;16552:9;16548:17;16541:47;16605:131;16731:4;16605:131;:::i;:::-;16597:139;;16324:419;;;:::o;16749:227::-;16889:34;16885:1;16877:6;16873:14;16866:58;16958:10;16953:2;16945:6;16941:15;16934:35;16749:227;:::o;16982:366::-;17124:3;17145:67;17209:2;17204:3;17145:67;:::i;:::-;17138:74;;17221:93;17310:3;17221:93;:::i;:::-;17339:2;17334:3;17330:12;17323:19;;16982:366;;;:::o;17354:419::-;17520:4;17558:2;17547:9;17543:18;17535:26;;17607:9;17601:4;17597:20;17593:1;17582:9;17578:17;17571:47;17635:131;17761:4;17635:131;:::i;:::-;17627:139;;17354:419;;;:::o;17779:191::-;17819:3;17838:20;17856:1;17838:20;:::i;:::-;17833:25;;17872:20;17890:1;17872:20;:::i;:::-;17867:25;;17915:1;17912;17908:9;17901:16;;17936:3;17933:1;17930:10;17927:36;;;17943:18;;:::i;:::-;17927:36;17779:191;;;;:::o;17976:243::-;18116:34;18112:1;18104:6;18100:14;18093:58;18185:26;18180:2;18172:6;18168:15;18161:51;17976:243;:::o;18225:366::-;18367:3;18388:67;18452:2;18447:3;18388:67;:::i;:::-;18381:74;;18464:93;18553:3;18464:93;:::i;:::-;18582:2;18577:3;18573:12;18566:19;;18225:366;;;:::o;18597:419::-;18763:4;18801:2;18790:9;18786:18;18778:26;;18850:9;18844:4;18840:20;18836:1;18825:9;18821:17;18814:47;18878:131;19004:4;18878:131;:::i;:::-;18870:139;;18597:419;;;:::o;19022:176::-;19162:28;19158:1;19150:6;19146:14;19139:52;19022:176;:::o;19204:366::-;19346:3;19367:67;19431:2;19426:3;19367:67;:::i;:::-;19360:74;;19443:93;19532:3;19443:93;:::i;:::-;19561:2;19556:3;19552:12;19545:19;;19204:366;;;:::o;19576:419::-;19742:4;19780:2;19769:9;19765:18;19757:26;;19829:9;19823:4;19819:20;19815:1;19804:9;19800:17;19793:47;19857:131;19983:4;19857:131;:::i;:::-;19849:139;;19576:419;;;:::o;20001:143::-;20058:5;20089:6;20083:13;20074:22;;20105:33;20132:5;20105:33;:::i;:::-;20001:143;;;;:::o;20150:351::-;20220:6;20269:2;20257:9;20248:7;20244:23;20240:32;20237:119;;;20275:79;;:::i;:::-;20237:119;20395:1;20420:64;20476:7;20467:6;20456:9;20452:22;20420:64;:::i;:::-;20410:74;;20366:128;20150:351;;;;:::o;20507:332::-;20628:4;20666:2;20655:9;20651:18;20643:26;;20679:71;20747:1;20736:9;20732:17;20723:6;20679:71;:::i;:::-;20760:72;20828:2;20817:9;20813:18;20804:6;20760:72;:::i;:::-;20507:332;;;;;:::o;20845:137::-;20899:5;20930:6;20924:13;20915:22;;20946:30;20970:5;20946:30;:::i;:::-;20845:137;;;;:::o;20988:345::-;21055:6;21104:2;21092:9;21083:7;21079:23;21075:32;21072:119;;;21110:79;;:::i;:::-;21072:119;21230:1;21255:61;21308:7;21299:6;21288:9;21284:22;21255:61;:::i;:::-;21245:71;;21201:125;20988:345;;;;:::o;21339:230::-;21479:34;21475:1;21467:6;21463:14;21456:58;21548:13;21543:2;21535:6;21531:15;21524:38;21339:230;:::o;21575:366::-;21717:3;21738:67;21802:2;21797:3;21738:67;:::i;:::-;21731:74;;21814:93;21903:3;21814:93;:::i;:::-;21932:2;21927:3;21923:12;21916:19;;21575:366;;;:::o;21947:419::-;22113:4;22151:2;22140:9;22136:18;22128:26;;22200:9;22194:4;22190:20;22186:1;22175:9;22171:17;22164:47;22228:131;22354:4;22228:131;:::i;:::-;22220:139;;21947:419;;;:::o;22372:244::-;22512:34;22508:1;22500:6;22496:14;22489:58;22581:27;22576:2;22568:6;22564:15;22557:52;22372:244;:::o;22622:366::-;22764:3;22785:67;22849:2;22844:3;22785:67;:::i;:::-;22778:74;;22861:93;22950:3;22861:93;:::i;:::-;22979:2;22974:3;22970:12;22963:19;;22622:366;;;:::o;22994:419::-;23160:4;23198:2;23187:9;23183:18;23175:26;;23247:9;23241:4;23237:20;23233:1;23222:9;23218:17;23211:47;23275:131;23401:4;23275:131;:::i;:::-;23267:139;;22994:419;;;:::o;23419:162::-;23559:14;23555:1;23547:6;23543:14;23536:38;23419:162;:::o;23587:366::-;23729:3;23750:67;23814:2;23809:3;23750:67;:::i;:::-;23743:74;;23826:93;23915:3;23826:93;:::i;:::-;23944:2;23939:3;23935:12;23928:19;;23587:366;;;:::o;23959:419::-;24125:4;24163:2;24152:9;24148:18;24140:26;;24212:9;24206:4;24202:20;24198:1;24187:9;24183:17;24176:47;24240:131;24366:4;24240:131;:::i;:::-;24232:139;;23959:419;;;:::o;24384:224::-;24524:34;24520:1;24512:6;24508:14;24501:58;24593:7;24588:2;24580:6;24576:15;24569:32;24384:224;:::o;24614:366::-;24756:3;24777:67;24841:2;24836:3;24777:67;:::i;:::-;24770:74;;24853:93;24942:3;24853:93;:::i;:::-;24971:2;24966:3;24962:12;24955:19;;24614:366;;;:::o;24986:419::-;25152:4;25190:2;25179:9;25175:18;25167:26;;25239:9;25233:4;25229:20;25225:1;25214:9;25210:17;25203:47;25267:131;25393:4;25267:131;:::i;:::-;25259:139;;24986:419;;;:::o;25411:180::-;25459:77;25456:1;25449:88;25556:4;25553:1;25546:15;25580:4;25577:1;25570:15;25597:233;25636:3;25659:24;25677:5;25659:24;:::i;:::-;25650:33;;25705:66;25698:5;25695:77;25692:103;;25775:18;;:::i;:::-;25692:103;25822:1;25815:5;25811:13;25804:20;;25597:233;;;:::o;25836:225::-;25976:34;25972:1;25964:6;25960:14;25953:58;26045:8;26040:2;26032:6;26028:15;26021:33;25836:225;:::o;26067:366::-;26209:3;26230:67;26294:2;26289:3;26230:67;:::i;:::-;26223:74;;26306:93;26395:3;26306:93;:::i;:::-;26424:2;26419:3;26415:12;26408:19;;26067:366;;;:::o;26439:419::-;26605:4;26643:2;26632:9;26628:18;26620:26;;26692:9;26686:4;26682:20;26678:1;26667:9;26663:17;26656:47;26720:131;26846:4;26720:131;:::i;:::-;26712:139;;26439:419;;;:::o;26864:223::-;27004:34;27000:1;26992:6;26988:14;26981:58;27073:6;27068:2;27060:6;27056:15;27049:31;26864:223;:::o;27093:366::-;27235:3;27256:67;27320:2;27315:3;27256:67;:::i;:::-;27249:74;;27332:93;27421:3;27332:93;:::i;:::-;27450:2;27445:3;27441:12;27434:19;;27093:366;;;:::o;27465:419::-;27631:4;27669:2;27658:9;27654:18;27646:26;;27718:9;27712:4;27708:20;27704:1;27693:9;27689:17;27682:47;27746:131;27872:4;27746:131;:::i;:::-;27738:139;;27465:419;;;:::o;27890:221::-;28030:34;28026:1;28018:6;28014:14;28007:58;28099:4;28094:2;28086:6;28082:15;28075:29;27890:221;:::o;28117:366::-;28259:3;28280:67;28344:2;28339:3;28280:67;:::i;:::-;28273:74;;28356:93;28445:3;28356:93;:::i;:::-;28474:2;28469:3;28465:12;28458:19;;28117:366;;;:::o;28489:419::-;28655:4;28693:2;28682:9;28678:18;28670:26;;28742:9;28736:4;28732:20;28728:1;28717:9;28713:17;28706:47;28770:131;28896:4;28770:131;:::i;:::-;28762:139;;28489:419;;;:::o;28914:224::-;29054:34;29050:1;29042:6;29038:14;29031:58;29123:7;29118:2;29110:6;29106:15;29099:32;28914:224;:::o;29144:366::-;29286:3;29307:67;29371:2;29366:3;29307:67;:::i;:::-;29300:74;;29383:93;29472:3;29383:93;:::i;:::-;29501:2;29496:3;29492:12;29485:19;;29144:366;;;:::o;29516:419::-;29682:4;29720:2;29709:9;29705:18;29697:26;;29769:9;29763:4;29759:20;29755:1;29744:9;29740:17;29733:47;29797:131;29923:4;29797:131;:::i;:::-;29789:139;;29516:419;;;:::o;29941:222::-;30081:34;30077:1;30069:6;30065:14;30058:58;30150:5;30145:2;30137:6;30133:15;30126:30;29941:222;:::o;30169:366::-;30311:3;30332:67;30396:2;30391:3;30332:67;:::i;:::-;30325:74;;30408:93;30497:3;30408:93;:::i;:::-;30526:2;30521:3;30517:12;30510:19;;30169:366;;;:::o;30541:419::-;30707:4;30745:2;30734:9;30730:18;30722:26;;30794:9;30788:4;30784:20;30780:1;30769:9;30765:17;30758:47;30822:131;30948:4;30822:131;:::i;:::-;30814:139;;30541:419;;;:::o;30966:172::-;31106:24;31102:1;31094:6;31090:14;31083:48;30966:172;:::o;31144:366::-;31286:3;31307:67;31371:2;31366:3;31307:67;:::i;:::-;31300:74;;31383:93;31472:3;31383:93;:::i;:::-;31501:2;31496:3;31492:12;31485:19;;31144:366;;;:::o;31516:419::-;31682:4;31720:2;31709:9;31705:18;31697:26;;31769:9;31763:4;31759:20;31755:1;31744:9;31740:17;31733:47;31797:131;31923:4;31797:131;:::i;:::-;31789:139;;31516:419;;;:::o;31941:167::-;32081:19;32077:1;32069:6;32065:14;32058:43;31941:167;:::o;32114:366::-;32256:3;32277:67;32341:2;32336:3;32277:67;:::i;:::-;32270:74;;32353:93;32442:3;32353:93;:::i;:::-;32471:2;32466:3;32462:12;32455:19;;32114:366;;;:::o;32486:419::-;32652:4;32690:2;32679:9;32675:18;32667:26;;32739:9;32733:4;32729:20;32725:1;32714:9;32710:17;32703:47;32767:131;32893:4;32767:131;:::i;:::-;32759:139;;32486:419;;;:::o;32911:194::-;32951:4;32971:20;32989:1;32971:20;:::i;:::-;32966:25;;33005:20;33023:1;33005:20;:::i;:::-;33000:25;;33049:1;33046;33042:9;33034:17;;33073:1;33067:4;33064:11;33061:37;;;33078:18;;:::i;:::-;33061:37;32911:194;;;;:::o;33111:227::-;33251:34;33247:1;33239:6;33235:14;33228:58;33320:10;33315:2;33307:6;33303:15;33296:35;33111:227;:::o;33344:366::-;33486:3;33507:67;33571:2;33566:3;33507:67;:::i;:::-;33500:74;;33583:93;33672:3;33583:93;:::i;:::-;33701:2;33696:3;33692:12;33685:19;;33344:366;;;:::o;33716:419::-;33882:4;33920:2;33909:9;33905:18;33897:26;;33969:9;33963:4;33959:20;33955:1;33944:9;33940:17;33933:47;33997:131;34123:4;33997:131;:::i;:::-;33989:139;;33716:419;;;:::o;34141:220::-;34281:34;34277:1;34269:6;34265:14;34258:58;34350:3;34345:2;34337:6;34333:15;34326:28;34141:220;:::o;34367:366::-;34509:3;34530:67;34594:2;34589:3;34530:67;:::i;:::-;34523:74;;34606:93;34695:3;34606:93;:::i;:::-;34724:2;34719:3;34715:12;34708:19;;34367:366;;;:::o;34739:419::-;34905:4;34943:2;34932:9;34928:18;34920:26;;34992:9;34986:4;34982:20;34978:1;34967:9;34963:17;34956:47;35020:131;35146:4;35020:131;:::i;:::-;35012:139;;34739:419;;;:::o;35164:221::-;35304:34;35300:1;35292:6;35288:14;35281:58;35373:4;35368:2;35360:6;35356:15;35349:29;35164:221;:::o;35391:366::-;35533:3;35554:67;35618:2;35613:3;35554:67;:::i;:::-;35547:74;;35630:93;35719:3;35630:93;:::i;:::-;35748:2;35743:3;35739:12;35732:19;;35391:366;;;:::o;35763:419::-;35929:4;35967:2;35956:9;35952:18;35944:26;;36016:9;36010:4;36006:20;36002:1;35991:9;35987:17;35980:47;36044:131;36170:4;36044:131;:::i;:::-;36036:139;;35763:419;;;:::o;36188:181::-;36328:33;36324:1;36316:6;36312:14;36305:57;36188:181;:::o;36375:366::-;36517:3;36538:67;36602:2;36597:3;36538:67;:::i;:::-;36531:74;;36614:93;36703:3;36614:93;:::i;:::-;36732:2;36727:3;36723:12;36716:19;;36375:366;;;:::o;36747:419::-;36913:4;36951:2;36940:9;36936:18;36928:26;;37000:9;36994:4;36990:20;36986:1;36975:9;36971:17;36964:47;37028:131;37154:4;37028:131;:::i;:::-;37020:139;;36747:419;;;:::o;37172:221::-;37312:34;37308:1;37300:6;37296:14;37289:58;37381:4;37376:2;37368:6;37364:15;37357:29;37172:221;:::o;37399:366::-;37541:3;37562:67;37626:2;37621:3;37562:67;:::i;:::-;37555:74;;37638:93;37727:3;37638:93;:::i;:::-;37756:2;37751:3;37747:12;37740:19;;37399:366;;;:::o;37771:419::-;37937:4;37975:2;37964:9;37960:18;37952:26;;38024:9;38018:4;38014:20;38010:1;37999:9;37995:17;37988:47;38052:131;38178:4;38052:131;:::i;:::-;38044:139;;37771:419;;;:::o;38196:225::-;38336:34;38332:1;38324:6;38320:14;38313:58;38405:8;38400:2;38392:6;38388:15;38381:33;38196:225;:::o;38427:366::-;38569:3;38590:67;38654:2;38649:3;38590:67;:::i;:::-;38583:74;;38666:93;38755:3;38666:93;:::i;:::-;38784:2;38779:3;38775:12;38768:19;;38427:366;;;:::o;38799:419::-;38965:4;39003:2;38992:9;38988:18;38980:26;;39052:9;39046:4;39042:20;39038:1;39027:9;39023:17;39016:47;39080:131;39206:4;39080:131;:::i;:::-;39072:139;;38799:419;;;:::o;39224:220::-;39364:34;39360:1;39352:6;39348:14;39341:58;39433:3;39428:2;39420:6;39416:15;39409:28;39224:220;:::o;39450:366::-;39592:3;39613:67;39677:2;39672:3;39613:67;:::i;:::-;39606:74;;39689:93;39778:3;39689:93;:::i;:::-;39807:2;39802:3;39798:12;39791:19;;39450:366;;;:::o;39822:419::-;39988:4;40026:2;40015:9;40011:18;40003:26;;40075:9;40069:4;40065:20;40061:1;40050:9;40046:17;40039:47;40103:131;40229:4;40103:131;:::i;:::-;40095:139;;39822:419;;;:::o;40247:181::-;40387:33;40383:1;40375:6;40371:14;40364:57;40247:181;:::o;40434:366::-;40576:3;40597:67;40661:2;40656:3;40597:67;:::i;:::-;40590:74;;40673:93;40762:3;40673:93;:::i;:::-;40791:2;40786:3;40782:12;40775:19;;40434:366;;;:::o;40806:419::-;40972:4;41010:2;40999:9;40995:18;40987:26;;41059:9;41053:4;41049:20;41045:1;41034:9;41030:17;41023:47;41087:131;41213:4;41087:131;:::i;:::-;41079:139;;40806:419;;;:::o
Swarm Source
ipfs://a5962a0215db6cce69e4d83c46089be22808ca9d7f7a216ae6b0e26da3a50f85
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.