ETH Price: $3,338.49 (-1.15%)

Token

Fountain (FTN)
 

Overview

Max Total Supply

2,091,996,904.63444445 FTN

Holders

1,906 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
140.252504632419214663 FTN

Value
$0.00
0x37a8f295612602f2774d331e562be9e61B83a327
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A blockchain content ecosystem based on PoC.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FountainTokenUpgrade

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-07
*/

pragma solidity 0.4.25;

library SafeMath {
	function mul (uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b;
		assert(c / a == b);
		return c;
	}

	function div (uint256 a, uint256 b) internal pure returns (uint256) {
		return a / b;
	}

	function sub (uint256 a, uint256 b) internal pure returns (uint256) {
		assert(b <= a);
		return a - b;
	}

	function add (uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		assert(c >= a);
		return c;
	}
}

contract ERCBasic {
	event Transfer(address indexed from, address indexed to, uint256 value);

	function totalSupply () public view returns (uint256);
	function balanceOf (address who) public view returns (uint256);
	function transfer (address to, uint256 value) public returns (bool);
}

contract ERC is ERCBasic {
	event Approval(address indexed owner, address indexed spender, uint256 value);

	function transferFrom (address from, address to, uint256 value) public returns (bool);
	function allowance (address owner, address spender) public view returns (uint256);
	function approve (address spender, uint256 value) public returns (bool);
}

contract Ownable {
	event OwnershipTransferred(address indexed oldone, address indexed newone);
	event FoundationOwnershipTransferred(address indexed oldFoundationOwner, address indexed newFoundationOwner);

	address internal owner;
	address internal foundationOwner;

	constructor () public {
		owner = msg.sender;
		foundationOwner = owner;
	}

	modifier onlyOwner () {
		require(msg.sender == owner);
		_;
	}

	modifier hasMintability () {
		require(msg.sender == owner || msg.sender == foundationOwner);
		_;
	}

	function transferOwnership (address newOwner) public returns (bool);
	
	function setFountainFoundationOwner (address foundation) public returns (bool);
}

contract Pausable is Ownable {
	event ContractPause();
	event ContractResume();
	event ContractPauseSchedule(uint256 from, uint256 to);

	uint256 internal pauseFrom;
	uint256 internal pauseTo;

	modifier whenRunning () {
		require(now < pauseFrom || now > pauseTo);
		_;
	}

	modifier whenPaused () {
		require(now >= pauseFrom && now <= pauseTo);
		_;
	}

	function pause () public onlyOwner {
		pauseFrom = now - 1;
		pauseTo = now + 30000 days;
		emit ContractPause();
	}

	function pause (uint256 from, uint256 to) public onlyOwner {
		require(to > from);
		pauseFrom = from;
		pauseTo = to;
		emit ContractPauseSchedule(from, to);
	}

	function resume () public onlyOwner {
		pauseFrom = now - 2;
		pauseTo = now - 1;
		emit ContractResume();
	}
}

contract TokenForge is Ownable {
	event ForgeStart();
	event ForgeStop();

	bool public forge_running = true;

	modifier canForge () {
		require(forge_running);
		_;
	}

	modifier cannotForge () {
		require(!forge_running);
		_;
	}

	function startForge () public onlyOwner cannotForge returns (bool) {
		forge_running = true;
		emit ForgeStart();
		return true;
	}

	function stopForge () public onlyOwner canForge returns (bool) {
		forge_running = false;
		emit ForgeStop();
		return true;
	}
}





contract CappedToken is Ownable {
	using SafeMath for uint256;

	uint256 public token_cap;
	uint256 public token_created;
	uint256 public token_foundation_cap;
	uint256 public token_foundation_created;


	constructor (uint256 _cap, uint256 _foundationCap) public {
		token_cap = _cap;
		token_foundation_cap = _foundationCap;
	}

	function changeCap (uint256 _cap) public onlyOwner returns (bool) {
		if (_cap < token_created && _cap > 0) return false;
		token_cap = _cap;
		return true;
	}

	function canMint (uint256 amount) public view returns (bool) {
		return (token_cap == 0) || (token_created.add(amount) <= token_cap);
	}
	
	function canMintFoundation(uint256 amount) internal view returns(bool) {
		return(token_foundation_created.add(amount) <= token_foundation_cap);
	}
}

contract BasicToken is ERCBasic, Pausable {
	using SafeMath for uint256;

	mapping(address => uint256) public wallets;

	modifier canTransfer (address _from, address _to, uint256 amount) {
		require((_from != address(0)) && (_to != address(0)));
		require(_from != _to);
		require(amount > 0);
		_;
	}

	function balanceOf (address user) public view returns (uint256) {
		return wallets[user];
	}
}

contract DelegatableToken is ERC, BasicToken {
	using SafeMath for uint256;

	mapping(address => mapping(address => uint256)) public warrants;

	function allowance (address owner, address delegator) public view returns (uint256) {
		return warrants[owner][delegator];
	}

	function approve (address delegator, uint256 value) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}

	function increaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		uint256 value = warrants[msg.sender][delegator].add(delta);
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}

	function decreaseApproval (address delegator, uint256 delta) public whenRunning returns (bool) {
		if (delegator == msg.sender) return true;
		uint256 value = warrants[msg.sender][delegator];
		if (value < delta) {
			value = 0;
		}
		else {
			value = value.sub(delta);
		}
		warrants[msg.sender][delegator] = value;
		emit Approval(msg.sender, delegator, value);
		return true;
	}
}

contract LockableProtocol is BasicToken {
	function invest (address investor, uint256 amount) public returns (bool);
	function getInvestedToken (address investor) public view returns (uint256);
	function getLockedToken (address investor) public view returns (uint256);
	function availableWallet (address user) public view returns (uint256) {
		return wallets[user].sub(getLockedToken(user));
	}
}

contract MintAndBurnToken is TokenForge, CappedToken, LockableProtocol {
	using SafeMath for uint256;
	
	event Mint(address indexed user, uint256 amount);
	event Burn(address indexed user, uint256 amount);

	constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public CappedToken(_cap, _fountainCap) {
		token_created = _initial;
		wallets[msg.sender] = _initial;

		emit Mint(msg.sender, _initial);
		emit Transfer(address(0), msg.sender, _initial);
	}

	function totalSupply () public view returns (uint256) {
		return token_created;
	}

	function totalFountainSupply() public view returns(uint256) {
		return token_foundation_created;
	}

	function mint (address target, uint256 amount) public hasMintability whenRunning canForge returns (bool) {
		require(target != owner && target != foundationOwner);
		require(canMint(amount));

		if (msg.sender == foundationOwner) {
			require(canMintFoundation(amount));
			token_foundation_created = token_foundation_created.add(amount);
		}
		
		token_created = token_created.add(amount);
		wallets[target] = wallets[target].add(amount);

		emit Mint(target, amount);
		emit Transfer(address(0), target, amount);
		return true;
	}

	function burn (uint256 amount) public whenRunning canForge returns (bool) {
		uint256 balance = availableWallet(msg.sender);
		require(amount <= balance);

		token_created = token_created.sub(amount);
		wallets[msg.sender] = wallets[msg.sender].sub(amount);

		emit Burn(msg.sender, amount);
		emit Transfer(msg.sender, address(0), amount);

		return true;
	}
}

contract LockableToken is MintAndBurnToken, DelegatableToken {
	using SafeMath for uint256;

	struct LockBin {
		uint256 start;
		uint256 finish;
		uint256 duration;
		uint256 amount;
	}

	event InvestStart();
	event InvestStop();
	event NewInvest(uint256 release_start, uint256 release_duration);

	uint256 public releaseStart;
	uint256 public releaseDuration;
	bool public forceStopInvest;
	mapping(address => mapping(uint => LockBin)) public lockbins;

	modifier canInvest () {
		require(!forceStopInvest);
		_;
	}

	constructor (uint256 _initial, uint256 _cap, uint256 _fountainCap) public MintAndBurnToken(_initial, _cap, _fountainCap) {
		forceStopInvest = true;
	}

	function pauseInvest () public onlyOwner whenRunning returns (bool) {
		require(!forceStopInvest);
		forceStopInvest = true;
		emit InvestStop();
		return true;
	}

	function resumeInvest () public onlyOwner whenRunning returns (bool) {
		require(forceStopInvest);
		forceStopInvest = false;
		emit InvestStart();
		return true;
	}

	function setInvest (uint256 release_start, uint256 release_duration) public onlyOwner whenRunning returns (bool) {
		releaseStart = release_start;
		releaseDuration = release_duration;
		require(releaseStart + releaseDuration > releaseStart);
		forceStopInvest = false;

		emit NewInvest(release_start, release_duration);
		return true;
	}

	function invest (address investor, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) {
		require(investor != address(0));
		require(investor != owner);
		require(investor != foundationOwner);
		require(amount > 0);
		require(canMint(amount));

		mapping(uint => LockBin) locks = lockbins[investor];
		LockBin storage info = locks[0];
		uint index = info.amount + 1;
		locks[index] = LockBin({
			start: releaseStart,
			finish: releaseStart + releaseDuration,
			duration: releaseDuration / (1 days),
			amount: amount
		});
		info.amount = index;

		token_created = token_created.add(amount);
		wallets[investor] = wallets[investor].add(amount);
		emit Mint(investor, amount);
		emit Transfer(address(0), investor, amount);

		return true;
	}

	function batchInvest (address[] investors, uint256 amount) public onlyOwner whenRunning canInvest returns (bool) {
		require(amount > 0);

		uint investorsLength = investors.length;
		uint investorsCount = 0;
		uint i;
		address r;
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;
			investorsCount ++;
		}
		require(investorsCount > 0);

		uint256 totalAmount = amount.mul(uint256(investorsCount));
		require(canMint(totalAmount));

		token_created = token_created.add(totalAmount);

		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;

			mapping(uint => LockBin) locks = lockbins[r];
			LockBin storage info = locks[0];
			uint index = info.amount + 1;
			locks[index] = LockBin({
				start: releaseStart,
				finish: releaseStart + releaseDuration,
				duration: releaseDuration / (1 days),
				amount: amount
			});
			info.amount = index;

			wallets[r] = wallets[r].add(amount);
			emit Mint(r, amount);
			emit Transfer(address(0), r, amount);
		}

		return true;
	}

	function batchInvests (address[] investors, uint256[] amounts) public onlyOwner whenRunning canInvest returns (bool) {
		uint investorsLength = investors.length;
		require(investorsLength == amounts.length);

		uint investorsCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;
			investorsCount ++;
			totalAmount = totalAmount.add(amounts[i]);
		}
		require(totalAmount > 0);
		require(canMint(totalAmount));

		uint256 amount;
		token_created = token_created.add(totalAmount);
		for (i = 0; i < investorsLength; i ++) {
			r = investors[i];
			if (r == address(0) || r == owner || r == foundationOwner) continue;
			amount = amounts[i];
			if (amount == 0) continue;
			wallets[r] = wallets[r].add(amount);
			emit Mint(r, amount);
			emit Transfer(address(0), r, amount);

			mapping(uint => LockBin) locks = lockbins[r];
			LockBin storage info = locks[0];
			uint index = info.amount + 1;
			locks[index] = LockBin({
				start: releaseStart,
				finish: releaseStart + releaseDuration,
				duration: releaseDuration / (1 days),
				amount: amount
			});
			info.amount = index;
		}

		return true;
	}

	function getInvestedToken (address investor) public view returns (uint256) {
		require(investor != address(0) && investor != owner && investor != foundationOwner);

		mapping(uint => LockBin) locks = lockbins[investor];
		uint256 balance = 0;
		uint l = locks[0].amount;
		for (uint i = 1; i <= l; i ++) {
			LockBin memory bin = locks[i];
			balance = balance.add(bin.amount);
		}
		return balance;
	}

	function getLockedToken (address investor) public view returns (uint256) {
		require(investor != address(0) && investor != owner && investor != foundationOwner);

		mapping(uint => LockBin) locks = lockbins[investor];
		uint256 balance = 0;
		uint256 d = 1;
		uint l = locks[0].amount;
		for (uint i = 1; i <= l; i ++) {
			LockBin memory bin = locks[i];
			if (now <= bin.start) {
				balance = balance.add(bin.amount);
			}
			else if (now < bin.finish) {
				d = (now - bin.start) / (1 days);
				balance = balance.add(bin.amount - bin.amount * d / bin.duration);
			}
		}
		return balance;
	}

	function canPay (address user, uint256 amount) internal view returns (bool) {
		uint256 balance = availableWallet(user);
		return amount <= balance;
	}

	function transfer (address target, uint256 value) public whenRunning canTransfer(msg.sender, target, value) returns (bool) {
		require(target != owner);
		require(canPay(msg.sender, value));

		wallets[msg.sender] = wallets[msg.sender].sub(value);
		wallets[target] = wallets[target].add(value);
		emit Transfer(msg.sender, target, value);
		return true;
	}


	function batchTransfer (address[] receivers, uint256 amount) public whenRunning returns (bool) {
		require(amount > 0);

		uint receiveLength = receivers.length;
		uint receiverCount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
		}
		require(receiverCount > 0);

		uint256 totalAmount = amount.mul(uint256(receiverCount));
		require(canPay(msg.sender, totalAmount));

		wallets[msg.sender] = wallets[msg.sender].sub(totalAmount);
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(msg.sender, r, amount);
		}
		return true;
	}

	function batchTransfers (address[] receivers, uint256[] amounts) public whenRunning returns (bool) {
		uint receiveLength = receivers.length;
		require(receiveLength == amounts.length);

		uint receiverCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
			totalAmount = totalAmount.add(amounts[i]);
		}
		require(totalAmount > 0);
		require(canPay(msg.sender, totalAmount));

		wallets[msg.sender] = wallets[msg.sender].sub(totalAmount);
		uint256 amount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			amount = amounts[i];
			if (amount == 0) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(msg.sender, r, amount);
		}
		return true;
	}

	function transferFrom (address from, address to, uint256 value) public whenRunning canTransfer(from, to, value) returns (bool) {
		require(from != owner);
		require(to != owner);
		require(canPay(from, value));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(value <= warrant);
			warrants[from][msg.sender] = warrant.sub(value);
		}

		wallets[from] = wallets[from].sub(value);
		wallets[to] = wallets[to].add(value);
		emit Transfer(from, to, value);
		return true;
	}

	function batchTransferFrom (address from, address[] receivers, uint256 amount) public whenRunning returns (bool) {
		require(from != address(0) && from != owner);
		require(amount > 0);

		uint receiveLength = receivers.length;
		uint receiverCount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
		}
		require(receiverCount > 0);

		uint256 totalAmount = amount.mul(uint256(receiverCount));
		require(canPay(from, totalAmount));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(totalAmount <= warrant);
			warrants[from][msg.sender] = warrant.sub(totalAmount);
		}

		wallets[from] = wallets[from].sub(totalAmount);
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(from, r, amount);
		}
		return true;
	}

	function batchTransferFroms (address from, address[] receivers, uint256[] amounts) public whenRunning returns (bool) {
		require(from != address(0) && from != owner);

		uint receiveLength = receivers.length;
		require(receiveLength == amounts.length);

		uint receiverCount = 0;
		uint256 totalAmount = 0;
		uint i;
		address r;
		for (i = 0; i < receiveLength; i ++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			receiverCount ++;
			totalAmount = totalAmount.add(amounts[i]);
		}
		require(totalAmount > 0);
		require(canPay(from, totalAmount));

		uint256 warrant;
		if (msg.sender != from) {
			warrant = warrants[from][msg.sender];
			require(totalAmount <= warrant);
			warrants[from][msg.sender] = warrant.sub(totalAmount);
		}

		wallets[from] = wallets[from].sub(totalAmount);
		uint256 amount;
		for (i = 0; i < receiveLength; i++) {
			r = receivers[i];
			if (r == address(0) || r == owner) continue;
			amount = amounts[i];
			if (amount == 0) continue;
			wallets[r] = wallets[r].add(amount);
			emit Transfer(from, r, amount);
		}
		return true;
	}
}

contract PunchableToken is LockableToken {
    using SafeMath for uint256;
	
	function punch (address addr, uint256 amount) public onlyOwner whenPaused returns (bool) {
	    require(addr != address(0) && addr != owner);
		require(amount > 0);
	    uint256 accountAmount = availableWallet(addr);
	    uint256 burnAmount = amount;
	    if (amount > accountAmount) {
	        burnAmount = accountAmount;
	    }
	    token_created = token_created.sub(burnAmount);
		wallets[addr] = wallets[addr].sub(burnAmount);
		emit Burn(addr, burnAmount);
		emit Transfer(addr, address(0), burnAmount);
	    
	    return true;
	}
	
	function batchPunchKO (address[] addrs) public onlyOwner whenPaused returns (bool) {
	    uint len = addrs.length;
	    require (len > 0);
	    address addr;
	    
	    for (uint i = 0; i < len; i++) {
	        addr = addrs[i];
	        if (addr == address(0) || addr == owner) continue;
	        uint256 amount = availableWallet(addr);
	        token_created = token_created.sub(amount);
		    wallets[addr] = wallets[addr].sub(amount);
		    emit Burn(addr, amount);
		    emit Transfer(addr, address(0), amount);
	    }
		return true;
	}
	
	
	function batchPunchs (address[] addrs, uint256[] amounts) public onlyOwner whenPaused returns (bool) {
	    uint len = addrs.length;
	    require (len > 0);
	    require (addrs.length == amounts.length);

	    address addr;
	    uint256 amount;
	    uint256 availableAmount;
	    
	    for (uint i = 0; i < len; i++) {
	        addr = addrs[i];
	        if (addr == address(0) || addr == owner) continue;
	        amount = amounts[i];
	        availableAmount = availableWallet(addr);
	        if (amount > availableAmount) {
	            amount = availableAmount;
	        }
	        token_created = token_created.sub(amount);
		    wallets[addr] = wallets[addr].sub(amount);
		    emit Burn(addr, amount);
		    emit Transfer(addr, address(0), amount);
	    }
		return true;
	}
	
    
}

contract FountainToken is PunchableToken {
	string  public constant name     = "Fountain";
	string  public constant symbol   = "FTN";
	uint8   public constant decimals = 18;

	uint256 private constant TOKEN_CAP     = 10000000000 * 10 ** uint256(decimals);
	uint256 private constant TOKEN_FOUNDATION_CAP = 300000000   * 10 ** uint256(decimals);
	uint256 private constant TOKEN_INITIAL = 0   * 10 ** uint256(decimals);

	constructor () public LockableToken(TOKEN_INITIAL, TOKEN_CAP, TOKEN_FOUNDATION_CAP) {
	}

	function suicide () public onlyOwner {
		selfdestruct(owner);
	}

	function transferOwnership (address newOwner) public onlyOwner returns (bool) {
		require(newOwner != address(0));
		require(newOwner != owner);
		require(newOwner != foundationOwner);
		require(wallets[owner] == 0);
		require(wallets[newOwner] == 0);

		address oldOwner = owner;
		owner = newOwner;
		emit OwnershipTransferred(oldOwner, newOwner);
		
		return true;
	}
	
	function setFountainFoundationOwner (address newFoundationOwner) public onlyOwner returns (bool) {
		require(newFoundationOwner != address(0));
		require(newFoundationOwner != foundationOwner);
		require(newFoundationOwner != owner);
		require(wallets[newFoundationOwner] == 0);

		address oldFoundation = foundationOwner;
		foundationOwner = newFoundationOwner;

		emit FoundationOwnershipTransferred(oldFoundation, foundationOwner);

		uint256 all = wallets[oldFoundation];
		wallets[oldFoundation] -= all;
		wallets[newFoundationOwner] = all;
		emit Transfer(oldFoundation, newFoundationOwner, all);

		return true;
	}
	
}



contract FountainTokenUpgrade is FountainToken {
	event UpgradeStart();
	event UpgradeStop();
	event SetRefund(address, uint);
	event Refund(address, uint);
	event SetFoundation(uint);
	event FinishUpgrade();
	
	bool public upgrade_running;

	bool public upgrade_finish;
	
	FountainToken ftn;
	
	address public oldContract;
	
	mapping(address=>bool) public upgraded;
	mapping(address=>bool) public skiplist;

	mapping(address=>uint) public refundlist;


	constructor(address old){
		oldContract = old;
		ftn = FountainToken(old);
	}

	modifier canUpgrade(){
		require(!upgrade_finish);
		_;
	}

	modifier whenUpgrading() {
		require(upgrade_running);
		_;
	}

	modifier whenNotUpgrading() {
		require(!upgrade_running);
		_;
	}

	function finishUpgrade() public whenNotUpgrading canUpgrade onlyOwner{
		upgrade_finish = true;
		emit FinishUpgrade();
	}

	function setFoundation(uint amount) public whenUpgrading whenPaused canUpgrade onlyOwner {
		token_foundation_created = amount;
		emit SetFoundation(amount);
	}

	function setRefund(address addr, uint amount) public whenUpgrading canUpgrade onlyOwner {
		require(addr != address(0));
		require(addr != foundationOwner);
		require(addr != owner);
		refundlist[addr] = amount;
		emit SetRefund(addr, amount);
	}

	function batchSetRefund(address[] addrs, uint[] amounts) public whenUpgrading canUpgrade onlyOwner {
		uint l1 = addrs.length;
		uint l2 = amounts.length;
		address addr;
		uint amount;
		require(l1 > 0 && l1 == l2);
		for (uint i = 0; i < l1; i++){
			addr = addrs[i];
			amount = amounts[i];
			if (addr == address(0) || addr == foundationOwner || addr == owner) continue;
			refundlist[addr] = amount;
			emit SetRefund(addr, amount);
		}
	}


	function runRefund(address addr) public whenUpgrading canUpgrade onlyOwner {
		uint amount = refundlist[addr];
		wallets[addr] = wallets[addr].add(amount); 
		token_created = token_created.add(amount);
		refundlist[addr] = 0;
		emit Refund(addr, amount);
		emit Mint(addr, amount);
		emit Transfer(address(0), addr, amount);
	}

	function batchRunRefund(address[] addrs) public whenUpgrading canUpgrade onlyOwner {
		uint l = addrs.length;
		address addr;
		uint amount;
		require(l > 0);
		for (uint i = 0; i < l; i++){
			addr = addrs[i];
			amount = refundlist[addr];
			wallets[addr] = wallets[addr].add(amount); 
			token_created = token_created.add(amount);
			refundlist[addr] = 0;
			emit Refund(addr, amount);
			emit Mint(addr, amount);
			emit Transfer(address(0), addr, amount);
		}
	}

	function startUpgrade() public whenNotUpgrading canUpgrade onlyOwner {
		upgrade_running = true;
		emit UpgradeStart();
	}

	function stopUpgrade() public whenUpgrading canUpgrade onlyOwner {
		upgrade_running = false;
		emit UpgradeStop();
	}

	function setSkiplist(address[] addrs) public whenUpgrading whenPaused canUpgrade onlyOwner {
		uint len = addrs.length;
		if (len>0){
			for (uint i = 0; i < len; i++){
				skiplist[addrs[i]] = true;
			}
		}
	}

	function upgrade(address addr) whenUpgrading whenPaused canUpgrade onlyOwner{
		uint amount = ftn.balanceOf(addr);
		require(!upgraded[addr] && amount>0 && !skiplist[addr]);

		upgraded[addr] = true;
		wallets[addr] = amount;

		(uint a, uint b, uint c, uint d) = ftn.lockbins(addr,0);
		uint len = d;
		if (len > 0){
			lockbins[addr][0].amount = len; 
			for (uint i=1; i <= len; i++){
				(a, b, c, d) = ftn.lockbins(addr,i);
				lockbins[addr][i] = LockBin({
					start: a,
					finish: b,
					duration: c,
					amount: d
				});
			}
		}

		token_created = token_created.add(amount);
		emit Mint(addr, amount);
		emit Transfer(address(0), addr, amount);
	}
	
	
	function batchUpgrade(address[] addrs) whenUpgrading whenPaused canUpgrade onlyOwner{
		uint l = addrs.length;
		require(l > 0);
		uint a;
		uint b; 
		uint c; 
		uint d;
		for (uint i = 0; i < l; i++){

			address addr = addrs[i];
			uint amount = ftn.balanceOf(addr);
			if (upgraded[addr] || amount == 0 || skiplist[addr]){
				continue;
			}

			upgraded[addr] = true;
			wallets[addr] = amount;
	
			(a, b, c, d) = ftn.lockbins(addr,0);
			uint len = d;
			if (len > 0){
				lockbins[addr][0].amount = len; 
				for (uint j=1; j <= len; j++){
					(a, b, c, d) = ftn.lockbins(addr, j);
					lockbins[addr][j] = LockBin({
						start: a,
						finish: b,
						duration: c,
						amount: d
					});
				}
			}

			token_created = token_created.add(amount);
			emit Mint(addr, amount);
			emit Transfer(address(0), addr, amount);

		} 
		
	}

}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"resume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchPunchs","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"name":"punch","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"oldContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchPunchKO","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgrade_running","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransfers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"release_start","type":"uint256"},{"name":"release_duration","type":"uint256"}],"name":"setInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchSetRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"forge_running","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resumeInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"lockbins","outputs":[{"name":"start","type":"uint256"},{"name":"finish","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getLockedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"setFoundation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchTransferFroms","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"amount","type":"uint256"}],"name":"canMint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"batchInvests","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFoundationOwner","type":"address"}],"name":"setFountainFoundationOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"releaseStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cap","type":"uint256"}],"name":"changeCap","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"wallets","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalFountainSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"warrants","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"forceStopInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investor","type":"address"}],"name":"getInvestedToken","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pauseInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"runRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchRunRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"skiplist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stopForge","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"},{"name":"amount","type":"uint256"}],"name":"invest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investors","type":"address[]"},{"name":"amount","type":"uint256"}],"name":"batchInvest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"suicide","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgrade_finish","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"refundlist","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_foundation_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"availableWallet","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"delegator","type":"address"},{"name":"delta","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"batchUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"delegator","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token_created","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"amount","type":"uint256"}],"name":"setRefund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"setSkiplist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"upgraded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"releaseDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"old","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"UpgradeStart","type":"event"},{"anonymous":false,"inputs":[],"name":"UpgradeStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"address"},{"indexed":false,"name":"","type":"uint256"}],"name":"SetRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"address"},{"indexed":false,"name":"","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"uint256"}],"name":"SetFoundation","type":"event"},{"anonymous":false,"inputs":[],"name":"FinishUpgrade","type":"event"},{"anonymous":false,"inputs":[],"name":"InvestStart","type":"event"},{"anonymous":false,"inputs":[],"name":"InvestStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"release_start","type":"uint256"},{"indexed":false,"name":"release_duration","type":"uint256"}],"name":"NewInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractPause","type":"event"},{"anonymous":false,"inputs":[],"name":"ContractResume","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"ContractPauseSchedule","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStart","type":"event"},{"anonymous":false,"inputs":[],"name":"ForgeStop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldone","type":"address"},{"indexed":true,"name":"newone","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oldFoundationOwner","type":"address"},{"indexed":true,"name":"newFoundationOwner","type":"address"}],"name":"FoundationOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

60806040526001805460a060020a60ff0219167401000000000000000000000000000000000000000017905534801561003757600080fd5b50604051602080614afc83398101604081815291516000805433600160a060020a0319918216811780845560018054600160a060020a0390921691909316179091556b204fce5e3e2502611000000060028190556af8277896582678ac00000060048190556003849055828452600860209081528785208590558487529651949693959194909386938693869391927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a260408051848152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600c805460ff191660011790555050600f8054600160a060020a03909416600160a060020a0319909416841790555050600e8054620100009092026201000060b060020a0319909216919091179055614975806101876000396000f3006080604052600436106103215763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461032657806306fdde031461033d5780630900f010146103c7578063095ea7b3146103e857806318160ddd146104205780631e478649146104475780632239c48a1461045c578063223e21211461047157806323b872dd146104ff57806323b8fabd146105295780632d2155181461054d57806330503c4e14610568578063313ce56714610599578063340df28f146105c4578063348e7b3d146105d95780633b6c4fa81461062e5780633badca251461064357806340c10f19146106d157806342966c68146106f557806342bb66c41461070d57806347c27aed1461072857806348cc7b6e146107b657806348eac902146107cb578063491eeb3a146107e05780634fcc1fc0146107f5578063560ef1bf1461083f578063580d28821461086057806359dd7ad4146108785780635dd871a314610914578063661884631461092c5780636ad953171461095057806370a08231146109de57806373a72b18146109ff578063766e33f414610a2057806376f660f614610a35578063800edb9d14610a9a57806383f12fec14610ab25780638456cb5914610b0957806389b08f1114610b1e5780639433a49814610b3f57806395d89b4114610b545780639aa9897914610b695780639b89010414610b905780639cf4836514610ba5578063a4c673c514610bc6578063a9059cbb14610bdb578063b0491e4e14610bff578063b626487c14610c20578063b67cef3a14610c75578063b703aa3a14610c96578063b9b8c24614610cab578063bd632e1014610ccf578063c04e7e1714610d26578063c96cd46f14610d3b578063ca299b9614610d50578063d0e8cf4614610d65578063d26e141414610d86578063d28cb7b514610d9b578063d73dd62314610dbc578063dc87f8f714610de0578063dd62ed3e14610e35578063de8ae5c014610e5c578063e1736d2914610e71578063e900c27014610e95578063efc5d18314610eea578063f2fde38b14610eff578063f4b489e714610f20578063f9b4189114610f41575b600080fd5b34801561033257600080fd5b5061033b610f56565b005b34801561034957600080fd5b50610352610fa8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b5061033b600160a060020a0360043516610fdf565b3480156103f457600080fd5b5061040c600160a060020a036004351660243561142b565b604080519115158252519081900360200190f35b34801561042c57600080fd5b506104356114ca565b60408051918252519081900360200190f35b34801561045357600080fd5b5061033b6114d0565b34801561046857600080fd5b5061033b611542565b34801561047d57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506115b69650505050505050565b34801561050b57600080fd5b5061040c600160a060020a036004358116906024351660443561175f565b34801561053557600080fd5b5061040c600160a060020a0360043516602435611946565b34801561055957600080fd5b5061033b600435602435611a91565b34801561057457600080fd5b5061057d611afd565b60408051600160a060020a039092168252519081900360200190f35b3480156105a557600080fd5b506105ae611b0c565b6040805160ff9092168252519081900360200190f35b3480156105d057600080fd5b5061033b611b11565b3480156105e557600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750949750611b879650505050505050565b34801561063a57600080fd5b5061040c611cfd565b34801561064f57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611d069650505050505050565b3480156106dd57600080fd5b5061040c600160a060020a0360043516602435611f2e565b34801561070157600080fd5b5061040c6004356120d1565b34801561071957600080fd5b5061040c6004356024356121bc565b34801561073457600080fd5b506040805160206004803580820135838102808601850190965280855261033b95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506122569650505050505050565b3480156107c257600080fd5b5061040c6123ac565b3480156107d757600080fd5b5061040c61242e565b3480156107ec57600080fd5b5061040c61243e565b34801561080157600080fd5b50610819600160a060020a03600435166024356124bc565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561084b57600080fd5b50610435600160a060020a03600435166124ee565b34801561086c57600080fd5b5061033b60043561264b565b34801561088457600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506126e29650505050505050565b34801561092057600080fd5b5061040c6004356129ca565b34801561093857600080fd5b5061040c600160a060020a03600435166024356129f9565b34801561095c57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750612ae49650505050505050565b3480156109ea57600080fd5b50610435600160a060020a0360043516612e0b565b348015610a0b57600080fd5b5061040c600160a060020a0360043516612e26565b348015610a2c57600080fd5b50610435612f6e565b348015610a4157600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a0316963696604495919490910192918291850190849080828437509497505093359450612f749350505050565b348015610aa657600080fd5b5061040c600435613213565b348015610abe57600080fd5b506040805160206004803580820135838102808601850190965280855261040c9536959394602494938501929182918501908490808284375094975050933594506132529350505050565b348015610b1557600080fd5b5061033b613423565b348015610b2a57600080fd5b50610435600160a060020a0360043516613477565b348015610b4b57600080fd5b50610435613489565b348015610b6057600080fd5b5061035261348f565b348015610b7557600080fd5b50610435600160a060020a03600435811690602435166134c6565b348015610b9c57600080fd5b5061040c6134e3565b348015610bb157600080fd5b50610435600160a060020a03600435166134ec565b348015610bd257600080fd5b5061040c6135ee565b348015610be757600080fd5b5061040c600160a060020a036004351660243561366e565b348015610c0b57600080fd5b5061033b600160a060020a03600435166137a8565b348015610c2c57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506139029650505050505050565b348015610c8157600080fd5b5061040c600160a060020a0360043516613aa4565b348015610ca257600080fd5b5061040c613ab9565b348015610cb757600080fd5b5061040c600160a060020a0360043516602435613b36565b348015610cdb57600080fd5b506040805160206004803580820135838102808601850190965280855261040c953695939460249493850192918291850190849080828437509497505093359450613d2e9350505050565b348015610d3257600080fd5b50610435614000565b348015610d4757600080fd5b5061033b614006565b348015610d5c57600080fd5b5061040c61402b565b348015610d7157600080fd5b50610435600160a060020a0360043516614039565b348015610d9257600080fd5b5061043561404b565b348015610da757600080fd5b50610435600160a060020a0360043516614051565b348015610dc857600080fd5b5061040c600160a060020a0360043516602435614084565b348015610dec57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506140f19650505050505050565b348015610e4157600080fd5b50610435600160a060020a036004358116906024351661452e565b348015610e6857600080fd5b50610435614559565b348015610e7d57600080fd5b5061033b600160a060020a036004351660243561455f565b348015610ea157600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506146409650505050505050565b348015610ef657600080fd5b5061043561470d565b348015610f0b57600080fd5b5061040c600160a060020a0360043516614713565b348015610f2c57600080fd5b5061040c600160a060020a0360043516614821565b348015610f4d57600080fd5b50610435614836565b600054600160a060020a03163314610f6d57600080fd5b426001198101600655600019016007556040517fa968378e910134ded7db0a5144e2c6a2d157f1685baa51f39de6c13a5e8ffa8990600090a1565b60408051808201909152600881527f466f756e7461696e000000000000000000000000000000000000000000000000602082015281565b6000806000806000806000600e60009054906101000a900460ff16151561100557600080fd5b600654421015801561101957506007544211155b151561102457600080fd5b600e54610100900460ff161561103957600080fd5b600054600160a060020a0316331461105057600080fd5b600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152915162010000909304909116916370a08231916024808201926020929091908290030181600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b505050506040513d60208110156110e957600080fd5b5051600160a060020a03891660009081526010602052604090205490975060ff161580156111175750600087115b801561113c5750600160a060020a03881660009081526011602052604090205460ff16155b151561114757600080fd5b600160a060020a038089166000818152601060209081526040808320805460ff1916600117905560089091528082208b9055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050506040513d60808110156111f957600080fd5b508051602082015160408301516060909301519198509650909450925082915060008211156113af5750600160a060020a0387166000908152600d60209081526040808320838052909152902060030181905560015b8181116113af57600e546040805160e660020a63013f307f028152600160a060020a038b811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506040513d60808110156112e057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508096508197508298508399505050505060806040519081016040528087815260200186815260200185815260200184815250600d60008a600160a060020a0316600160a060020a03168152602001908152602001600020600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155905050808060010191505061124f565b6003546113c2908863ffffffff61483c16565b600355604080518881529051600160a060020a038a169160008051602061492a833981519152919081900360200190a2604080518881529051600160a060020a038a16916000916000805160206148ea8339815191529181900360200190a35050505050505050565b600060065442108061143e575060075442115b151561144957600080fd5b600160a060020a038316331415611462575060016114c4565b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035490565b600e5460ff1615156114e157600080fd5b600e54610100900460ff16156114f657600080fd5b600054600160a060020a0316331461150d57600080fd5b600e805460ff191690556040517f232033aa00cdc2e9205a0e3a1063da78353d21cd7724a0444927c906da0e021690600090a1565b600e5460ff161561155257600080fd5b600e54610100900460ff161561156757600080fd5b600054600160a060020a0316331461157e57600080fd5b600e805460ff191660011790556040517f28968b4d1fad9f3e651bf12ae7ae8581411755b430bd83a24d38eb700e4b011f90600090a1565b6000805481908190819081908190600160a060020a031633146115d857600080fd5b60065442101580156115ec57506007544211155b15156115f757600080fd5b875194506000851161160857600080fd5b865188511461161657600080fd5b5060005b8481101561175157878181518110151561163057fe5b602090810290910101519350600160a060020a038416158061165f5750600054600160a060020a038581169116145b1561166957611749565b868181518110151561167757fe5b90602001906020020151925061168c84614051565b91508183111561169a578192505b6003546116ad908463ffffffff61485216565b600355600160a060020a0384166000908152600860205260409020546116d9908463ffffffff61485216565b600160a060020a0385166000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a2604080518481529051600091600160a060020a038716916000805160206148ea8339815191529181900360200190a35b60010161161a565b506001979650505050505050565b600080600654421080611773575060075442115b151561177e57600080fd5b848484600160a060020a038316158015906117a15750600160a060020a03821615155b15156117ac57600080fd5b600160a060020a0383811690831614156117c557600080fd5b600081116117d257600080fd5b600054600160a060020a03898116911614156117ed57600080fd5b600054600160a060020a038881169116141561180857600080fd5b6118128887614864565b151561181d57600080fd5b33600160a060020a0389161461189557600160a060020a038816600090815260096020908152604080832033845290915290205493508386111561186057600080fd5b611870848763ffffffff61485216565b600160a060020a03891660009081526009602090815260408083203384529091529020555b600160a060020a0388166000908152600860205260409020546118be908763ffffffff61485216565b600160a060020a03808a1660009081526008602052604080822093909355908916815220546118f3908763ffffffff61483c16565b600160a060020a038089166000818152600860209081526040918290209490945580518a815290519193928c16926000805160206148ea83398151915292918290030190a3506001979650505050505050565b6000805481908190600160a060020a0316331461196257600080fd5b600654421015801561197657506007544211155b151561198157600080fd5b600160a060020a038516158015906119a75750600054600160a060020a03868116911614155b15156119b257600080fd5b600084116119bf57600080fd5b6119c885614051565b9150839050818411156119d85750805b6003546119eb908263ffffffff61485216565b600355600160a060020a038516600090815260086020526040902054611a17908263ffffffff61485216565b600160a060020a0386166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038816916000805160206148ea8339815191529181900360200190a3506001949350505050565b600054600160a060020a03163314611aa857600080fd5b818111611ab457600080fd5b60068290556007819055604080518381526020810183905281517fac04925986d687f5e264774dac7e393e920d61c9b99e92497853eb519484e4dd929181900390910190a15050565b600f54600160a060020a031681565b601281565b600e5460ff1615611b2157600080fd5b600e54610100900460ff1615611b3657600080fd5b600054600160a060020a03163314611b4d57600080fd5b600e805461ff0019166101001790556040517f31a51b3f3da1c639dced656c0599662c31b7a9822ed27f4079befb25036f66d590600090a1565b600080548190819081908190600160a060020a03163314611ba757600080fd5b6006544210158015611bbb57506007544211155b1515611bc657600080fd5b8551935060008411611bd757600080fd5b600091505b83821015611cf1578582815181101515611bf257fe5b602090810290910101519250600160a060020a0383161580611c215750600054600160a060020a038481169116145b15611c2b57611ce6565b611c3483614051565b600354909150611c4a908263ffffffff61485216565b600355600160a060020a038316600090815260086020526040902054611c76908263ffffffff61485216565b600160a060020a0384166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038616916000805160206148ea8339815191529181900360200190a35b600190910190611bdc565b50600195945050505050565b600e5460ff1681565b6000806000806000806000600654421080611d22575060075442115b1515611d2d57600080fd5b885188519096508614611d3f57600080fd5b6000945060009350600092505b85831015611dd8578883815181101515611d6257fe5b602090810290910101519150600160a060020a0382161580611d915750600054600160a060020a038381169116145b15611d9b57611dcd565b8751600190950194611dca90899085908110611db357fe5b60209081029091010151859063ffffffff61483c16565b93505b600190920191611d4c565b60008411611de557600080fd5b611def3385614864565b1515611dfa57600080fd5b33600090815260086020526040902054611e1a908563ffffffff61485216565b3360009081526008602052604081209190915592505b85831015611f1f578883815181101515611e4657fe5b602090810290910101519150600160a060020a0382161580611e755750600054600160a060020a038381169116145b15611e7f57611f14565b8783815181101515611e8d57fe5b9060200190602002015190508060001415611ea757611f14565b600160a060020a038216600090815260086020526040902054611ed0908263ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518481529051919233926000805160206148ea8339815191529281900390910190a35b600190920191611e30565b50600198975050505050505050565b60008054600160a060020a0316331480611f525750600154600160a060020a031633145b1515611f5d57600080fd5b600654421080611f6e575060075442115b1515611f7957600080fd5b60015460a060020a900460ff161515611f9157600080fd5b600054600160a060020a03848116911614801590611fbd5750600154600160a060020a03848116911614155b1515611fc857600080fd5b611fd1826129ca565b1515611fdc57600080fd5b600154600160a060020a031633141561201a57611ff88261487b565b151561200357600080fd5b600554612016908363ffffffff61483c16565b6005555b60035461202d908363ffffffff61483c16565b600355600160a060020a038316600090815260086020526040902054612059908363ffffffff61483c16565b600160a060020a0384166000818152600860209081526040918290209390935580518581529051919260008051602061492a83398151915292918290030190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a350600192915050565b6000806006544210806120e5575060075442115b15156120f057600080fd5b60015460a060020a900460ff16151561210857600080fd5b61211133614051565b90508083111561212057600080fd5b600354612133908463ffffffff61485216565b60035533600090815260086020526040902054612156908463ffffffff61485216565b336000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a260408051848152905160009133916000805160206148ea8339815191529181900360200190a350600192915050565b60008054600160a060020a031633146121d457600080fd5b6006544210806121e5575060075442115b15156121f057600080fd5b600a839055600b829055818301831061220857600080fd5b600c805460ff19169055604080518481526020810184905281517f4a1179f4d7ff6354606313c42f6054383e9549f9db56ac4b66b424bc940f79ed929181900390910190a150600192915050565b600e54600090819081908190819060ff16151561227257600080fd5b600e54610100900460ff161561228757600080fd5b600054600160a060020a0316331461229e57600080fd5b86519450855193506000851180156122b557508385145b15156122c057600080fd5b5060005b848110156123a35786818151811015156122da57fe5b90602001906020020151925085818151811015156122f457fe5b602090810290910101519150600160a060020a03831615806123235750600154600160a060020a038481169116145b8061233b5750600054600160a060020a038481169116145b156123455761239b565b600160a060020a0383166000818152601260209081526040918290208590558151928352820184905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15b6001016122c4565b50505050505050565b60008054600160a060020a031633146123c457600080fd5b60015460a060020a900460ff16156123db57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517fa039c7af624b7305fc7002f670d116cf0c8b61a558a10ff96be611c5c235751790600090a150600190565b60015460a060020a900460ff1681565b60008054600160a060020a0316331461245657600080fd5b600654421080612467575060075442115b151561247257600080fd5b600c5460ff16151561248357600080fd5b600c805460ff191690556040517f14245ee125d3810a2a28f6b656b676516364a51e95a688ddf08af4194fc3db1290600090a150600190565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000806000806000806124ff6148c0565b600160a060020a038816158015906125255750600054600160a060020a03898116911614155b801561253f5750600154600160a060020a03898116911614155b151561254a57600080fd5b600160a060020a0388166000908152600d60209081526040808320838052918290528220600301549097509095506001945092508391505b82821161263f5750600081815260208681526040918290208251608081018452815480825260018301549382019390935260028201549381019390935260030154606083015242116125eb5760608101516125e490869063ffffffff61483c16565b9450612634565b80602001514210156126345780516201518090420304935061263181604001518583606001510281151561261b57fe5b048260600151038661483c90919063ffffffff16565b94505b600190910190612582565b50929695505050505050565b600e5460ff16151561265c57600080fd5b600654421015801561267057506007544211155b151561267b57600080fd5b600e54610100900460ff161561269057600080fd5b600054600160a060020a031633146126a757600080fd5b60058190556040805182815290517f16b5fc7c36431451ea7ff18fe108b2a159992ef2a5b74d44613ff6749a2296af9181900360200190a150565b6000806000806000806000806006544210806126ff575060075442115b151561270a57600080fd5b600160a060020a038b16158015906127305750600054600160a060020a038c8116911614155b151561273b57600080fd5b89518951909750871461274d57600080fd5b6000955060009450600093505b868410156127e657898481518110151561277057fe5b602090810290910101519250600160a060020a038316158061279f5750600054600160a060020a038481169116145b156127a9576127db565b88516001909601956127d8908a90869081106127c157fe5b60209081029091010151869063ffffffff61483c16565b94505b60019093019261275a565b600085116127f357600080fd5b6127fd8b86614864565b151561280857600080fd5b33600160a060020a038c161461288057600160a060020a038b16600090815260096020908152604080832033845290915290205491508185111561284b57600080fd5b61285b828663ffffffff61485216565b600160a060020a038c1660009081526009602090815260408083203384529091529020555b600160a060020a038b166000908152600860205260409020546128a9908663ffffffff61485216565b600160a060020a038c1660009081526008602052604081209190915593505b868410156129b95789848151811015156128de57fe5b602090810290910101519250600160a060020a038316158061290d5750600054600160a060020a038481169116145b15612917576129ae565b888481518110151561292557fe5b906020019060200201519050806000141561293f576129ae565b600160a060020a038316600090815260086020526040902054612968908263ffffffff61483c16565b600160a060020a0380851660008181526008602090815260409182902094909455805185815290519193928f16926000805160206148ea83398151915292918290030190a35b6001909301926128c8565b5060019a9950505050505050505050565b6000600254600014806129f157506002546003546129ee908463ffffffff61483c16565b11155b90505b919050565b600080600654421080612a0d575060075442115b1515612a1857600080fd5b600160a060020a038416331415612a325760019150612add565b50336000908152600960209081526040808320600160a060020a038716845290915290205482811015612a6757506000612a7a565b612a77818463ffffffff61485216565b90505b336000818152600960209081526040808320600160a060020a03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b60008054819081908190819081908190819081908190600160a060020a03163314612b0e57600080fd5b600654421080612b1f575060075442115b1515612b2a57600080fd5b600c5460ff1615612b3a57600080fd5b8b518b519099508914612b4c57600080fd5b6000975060009650600095505b88861015612bfd578b86815181101515612b6f57fe5b602090810290910101519450600160a060020a0385161580612b9e5750600054600160a060020a038681169116145b80612bb65750600154600160a060020a038681169116145b15612bc057612bf2565b8a51600190980197612bef908c9088908110612bd857fe5b60209081029091010151889063ffffffff61483c16565b96505b600190950194612b59565b60008711612c0a57600080fd5b612c13876129ca565b1515612c1e57600080fd5b600354612c31908863ffffffff61483c16565b600355600095505b88861015612df9578b86815181101515612c4f57fe5b602090810290910101519450600160a060020a0385161580612c7e5750600054600160a060020a038681169116145b80612c965750600154600160a060020a038681169116145b15612ca057612dee565b8a86815181101515612cae57fe5b9060200190602002015193508360001415612cc857612dee565b600160a060020a038516600090815260086020526040902054612cf1908563ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518781529051919260008051602061492a83398151915292918290030190a2604080518581529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a3505050600160a060020a0382166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018c81526001948501808d529a89905298909a209151825551918101919091559651600288015593519501949094559082905591905b600190950194612c39565b5060019b9a5050505050505050505050565b600160a060020a031660009081526008602052604090205490565b6000805481908190600160a060020a03163314612e4257600080fd5b600160a060020a0384161515612e5757600080fd5b600154600160a060020a0385811691161415612e7257600080fd5b600054600160a060020a0385811691161415612e8d57600080fd5b600160a060020a03841660009081526008602052604090205415612eb057600080fd5b60018054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff19831617928390556040519181169450919091169083907ffc952dd6557f6861208ba39acbc0cfe5b4f12e76e6b467ed4200003f2b0cd8b090600090a350600160a060020a03808216600081815260086020908152604080832080549084905594881680845292819020859055805185815290519293926000805160206148ea833981519152929181900390910190a35060019392505050565b600a5481565b6000806000806000806000600654421080612f90575060075442115b1515612f9b57600080fd5b600160a060020a038a1615801590612fc15750600054600160a060020a038b8116911614155b1515612fcc57600080fd5b60008811612fd957600080fd5b8851955060009450600093505b85841015613047578884815181101515612ffc57fe5b602090810290910101519250600160a060020a038316158061302b5750600054600160a060020a038481169116145b156130355761303c565b6001909401935b600190930192612fe6565b6000851161305457600080fd5b613064888663ffffffff61489516565b91506130708a83614864565b151561307b57600080fd5b33600160a060020a038b16146130f25750600160a060020a0389166000908152600960209081526040808320338452909152902054808211156130bd57600080fd5b6130cd818363ffffffff61485216565b600160a060020a038b1660009081526009602090815260408083203384529091529020555b600160a060020a038a1660009081526008602052604090205461311b908363ffffffff61485216565b600160a060020a038b1660009081526008602052604081209190915593505b8584101561320357888481518110151561315057fe5b602090810290910101519250600160a060020a038316158061317f5750600054600160a060020a038481169116145b15613189576131f8565b600160a060020a0383166000908152600860205260409020546131b2908963ffffffff61483c16565b600160a060020a038085166000818152600860209081526040918290209490945580518c815290519193928e16926000805160206148ea83398151915292918290030190a35b60019093019261313a565b5060019998505050505050505050565b60008054600160a060020a0316331461322b57600080fd5b6003548210801561323c5750600082115b15613249575060006129f4565b50600255600190565b60008060008060008060065442108061326c575060075442115b151561327757600080fd5b6000871161328457600080fd5b8751945060009350600092505b848310156132f25787838151811015156132a757fe5b602090810290910101519150600160a060020a03821615806132d65750600054600160a060020a038381169116145b156132e0576132e7565b6001909301925b600190920191613291565b600084116132ff57600080fd5b61330f878563ffffffff61489516565b905061331b3382614864565b151561332657600080fd5b33600090815260086020526040902054613346908263ffffffff61485216565b3360009081526008602052604081209190915592505b8483101561175157878381518110151561337257fe5b602090810290910101519150600160a060020a03821615806133a15750600054600160a060020a038381169116145b156133ab57613418565b600160a060020a0382166000908152600860205260409020546133d4908863ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518a81529051919233926000805160206148ea8339815191529281900390910190a35b60019092019161335c565b600054600160a060020a0316331461343a57600080fd5b426000198101600655639a7ec800016007556040517fb7e43176b89d4cefed0cca5fc9b2f8e752d3d192b83123ef306a0a55dcd18a6b90600090a1565b60086020526000908152604090205481565b60055490565b60408051808201909152600381527f46544e0000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290205481565b600c5460ff1681565b60008060008060006134fc6148c0565b600160a060020a038716158015906135225750600054600160a060020a03888116911614155b801561353c5750600154600160a060020a03888116911614155b151561354757600080fd5b600160a060020a0387166000908152600d60209081526040808320838052918290528220600301549096509094509250600191505b8282116135e3575060008181526020858152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082018190526135d690859063ffffffff61483c16565b935060019091019061357c565b509195945050505050565b60008054600160a060020a0316331461360657600080fd5b600654421080613617575060075442115b151561362257600080fd5b600c5460ff161561363257600080fd5b600c805460ff191660011790556040517fcd16c719d9bfc829719d0e728b877ea1f29c77fd759480f077f4f6bc2a26e02590600090a150600190565b6000600654421080613681575060075442115b151561368c57600080fd5b33838382158015906136a65750600160a060020a03821615155b15156136b157600080fd5b600160a060020a0383811690831614156136ca57600080fd5b600081116136d757600080fd5b600054600160a060020a03878116911614156136f257600080fd5b6136fc3386614864565b151561370757600080fd5b33600090815260086020526040902054613727908663ffffffff61485216565b3360009081526008602052604080822092909255600160a060020a03881681522054613759908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919233926000805160206148ea8339815191529281900390910190a350600195945050505050565b600e5460009060ff1615156137bc57600080fd5b600e54610100900460ff16156137d157600080fd5b600054600160a060020a031633146137e857600080fd5b50600160a060020a03811660009081526012602090815260408083205460089092529091205461381e908263ffffffff61483c16565b600160a060020a03831660009081526008602052604090205560035461384a908263ffffffff61483c16565b600355600160a060020a0382166000818152601260209081526040808320929092558151928352820183905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518281529051600160a060020a0384169160008051602061492a833981519152919081900360200190a2604080518281529051600160a060020a038416916000916000805160206148ea8339815191529181900360200190a35050565b600e5460009081908190819060ff16151561391c57600080fd5b600e54610100900460ff161561393157600080fd5b600054600160a060020a0316331461394857600080fd5b845193506000841161395957600080fd5b5060005b83811015613a9d57848181518110151561397357fe5b6020908102909101810151600160a060020a03811660009081526012835260408082205460089094529020549094509092506139b5908363ffffffff61483c16565b600160a060020a0384166000908152600860205260409020556003546139e1908363ffffffff61483c16565b600355600160a060020a0383166000818152601260209081526040808320929092558151928352820184905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518381529051600160a060020a0385169160008051602061492a833981519152919081900360200190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a360010161395d565b5050505050565b60116020526000908152604090205460ff1681565b60008054600160a060020a03163314613ad157600080fd5b60015460a060020a900460ff161515613ae957600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f5f6f015054fd8937bdf17b86b7684be4ae883d459fb0bec23bc11f75a13b594490600090a150600190565b60008054819081908190600160a060020a03163314613b5457600080fd5b600654421080613b65575060075442115b1515613b7057600080fd5b600c5460ff1615613b8057600080fd5b600160a060020a0386161515613b9557600080fd5b600054600160a060020a0387811691161415613bb057600080fd5b600154600160a060020a0387811691161415613bcb57600080fd5b60008511613bd857600080fd5b613be1856129ca565b1515613bec57600080fd5b505050600160a060020a0383166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018d81526001948501808d529a89905298909a2091518255519181019190915596516002880155935195810195909555918390559254909190613c87908661483c565b600355600160a060020a038616600090815260086020526040902054613cb3908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919260008051602061492a83398151915292918290030190a2604080518681529051600160a060020a038816916000916000805160206148ea8339815191529181900360200190a350600195945050505050565b6000805481908190819081908190819081908190600160a060020a03163314613d5657600080fd5b600654421080613d67575060075442115b1515613d7257600080fd5b600c5460ff1615613d8257600080fd5b60008a11613d8f57600080fd5b8a51975060009650600095505b87861015613e15578a86815181101515613db257fe5b602090810290910101519450600160a060020a0385161580613de15750600054600160a060020a038681169116145b80613df95750600154600160a060020a038681169116145b15613e0357613e0a565b6001909601955b600190950194613d9c565b60008711613e2257600080fd5b613e328a8863ffffffff61489516565b9350613e3d846129ca565b1515613e4857600080fd5b600354613e5b908563ffffffff61483c16565b600355600095505b878610156129b9578a86815181101515613e7957fe5b602090810290910101519450600160a060020a0385161580613ea85750600054600160a060020a038681169116145b80613ec05750600154600160a060020a038681169116145b15613eca57613ff5565b505050600160a060020a0382166000908152600d602090815260408083208380528083529281902060038101548251608081018452600a54808252600b54908101958201959095529193600190910192820190620151809004815260209081018c90526000838152858252604080822084518155848401516001820155848201516002820155606090940151600394850155928501849055600160a060020a038816815260089091522054613f85908b63ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518d81529051919260008051602061492a83398151915292918290030190a2604080518b81529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a35b600190950194613e63565b60045481565b600054600160a060020a0316331461401d57600080fd5b600054600160a060020a0316ff5b600e54610100900460ff1681565b60126020526000908152604090205481565b60055481565b60006129f161405f836124ee565b600160a060020a0384166000908152600860205260409020549063ffffffff61485216565b600080600654421080614098575060075442115b15156140a357600080fd5b600160a060020a0384163314156140bd5760019150612add565b336000908152600960209081526040808320600160a060020a0388168452909152902054612a77908463ffffffff61483c16565b600080600080600080600080600080600e60009054906101000a900460ff16151561411b57600080fd5b600654421015801561412f57506007544211155b151561413a57600080fd5b600e54610100900460ff161561414f57600080fd5b600054600160a060020a0316331461416657600080fd5b8a51995060008a1161417757600080fd5b600094505b89851015614521578a8581518110151561419257fe5b6020908102909101810151600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291519398506201000090920416926370a08231926024808401938290030181600087803b15801561420757600080fd5b505af115801561421b573d6000803e3d6000fd5b505050506040513d602081101561423157600080fd5b5051600160a060020a03851660009081526010602052604090205490935060ff168061425b575082155b8061427e5750600160a060020a03841660009081526011602052604090205460ff165b1561428857614516565b600160a060020a038085166000818152601060209081526040808320805460ff191660011790556008909152808220879055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b15801561431057600080fd5b505af1158015614324573d6000803e3d6000fd5b505050506040513d608081101561433a57600080fd5b50805160208201516040830151606090930151919b509950909750955085915060008211156144a35750600160a060020a0383166000908152600d60209081526040808320838052909152902060030181905560015b8181116144a357600e546040805160e660020a63013f307f028152600160a060020a0387811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156143f757600080fd5b505af115801561440b573d6000803e3d6000fd5b505050506040513d608081101561442157600080fd5b5080516020808301516040808501516060958601518251608081018452868152808601858152818501848152988201838152600160a060020a038e166000908152600d89528681208c825290985294909620905181559451600180870191909155965160028601559151600390940193909355929c509a509850965001614390565b6003546144b6908463ffffffff61483c16565b600355604080518481529051600160a060020a0386169160008051602061492a833981519152919081900360200190a2604080518481529051600160a060020a038616916000916000805160206148ea8339815191529181900360200190a35b60019094019361417c565b5050505050505050505050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60035481565b600e5460ff16151561457057600080fd5b600e54610100900460ff161561458557600080fd5b600054600160a060020a0316331461459c57600080fd5b600160a060020a03821615156145b157600080fd5b600154600160a060020a03838116911614156145cc57600080fd5b600054600160a060020a03838116911614156145e757600080fd5b600160a060020a0382166000818152601260209081526040918290208490558151928352820183905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15050565b600e54600090819060ff16151561465657600080fd5b600654421015801561466a57506007544211155b151561467557600080fd5b600e54610100900460ff161561468a57600080fd5b600054600160a060020a031633146146a157600080fd5b825191506000821115614708575060005b818110156147085760016011600085848151811015156146ce57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001016146b2565b505050565b60025481565b600080548190600160a060020a0316331461472d57600080fd5b600160a060020a038316151561474257600080fd5b600054600160a060020a038481169116141561475d57600080fd5b600154600160a060020a038481169116141561477857600080fd5b60008054600160a060020a03168152600860205260409020541561479b57600080fd5b600160a060020a038316600090815260086020526040902054156147be57600080fd5b5060008054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b60106020526000908152604090205460ff1681565b600b5481565b60008282018381101561484b57fe5b9392505050565b60008282111561485e57fe5b50900390565b60008061487084614051565b909211159392505050565b60006004546129ee8360055461483c90919063ffffffff16565b6000808315156148a85760009150612add565b508282028284828115156148b857fe5b041461484b57fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca50f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885a165627a7a723058200c93bf3a33958c45ddd26de8ff997a2406db8cbba9192558666654f4254214b7002900000000000000000000000056325d180ec3878a9028afc7b0edcee7486cc9df

Deployed Bytecode

0x6080604052600436106103215763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663046f7da2811461032657806306fdde031461033d5780630900f010146103c7578063095ea7b3146103e857806318160ddd146104205780631e478649146104475780632239c48a1461045c578063223e21211461047157806323b872dd146104ff57806323b8fabd146105295780632d2155181461054d57806330503c4e14610568578063313ce56714610599578063340df28f146105c4578063348e7b3d146105d95780633b6c4fa81461062e5780633badca251461064357806340c10f19146106d157806342966c68146106f557806342bb66c41461070d57806347c27aed1461072857806348cc7b6e146107b657806348eac902146107cb578063491eeb3a146107e05780634fcc1fc0146107f5578063560ef1bf1461083f578063580d28821461086057806359dd7ad4146108785780635dd871a314610914578063661884631461092c5780636ad953171461095057806370a08231146109de57806373a72b18146109ff578063766e33f414610a2057806376f660f614610a35578063800edb9d14610a9a57806383f12fec14610ab25780638456cb5914610b0957806389b08f1114610b1e5780639433a49814610b3f57806395d89b4114610b545780639aa9897914610b695780639b89010414610b905780639cf4836514610ba5578063a4c673c514610bc6578063a9059cbb14610bdb578063b0491e4e14610bff578063b626487c14610c20578063b67cef3a14610c75578063b703aa3a14610c96578063b9b8c24614610cab578063bd632e1014610ccf578063c04e7e1714610d26578063c96cd46f14610d3b578063ca299b9614610d50578063d0e8cf4614610d65578063d26e141414610d86578063d28cb7b514610d9b578063d73dd62314610dbc578063dc87f8f714610de0578063dd62ed3e14610e35578063de8ae5c014610e5c578063e1736d2914610e71578063e900c27014610e95578063efc5d18314610eea578063f2fde38b14610eff578063f4b489e714610f20578063f9b4189114610f41575b600080fd5b34801561033257600080fd5b5061033b610f56565b005b34801561034957600080fd5b50610352610fa8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038c578181015183820152602001610374565b50505050905090810190601f1680156103b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d357600080fd5b5061033b600160a060020a0360043516610fdf565b3480156103f457600080fd5b5061040c600160a060020a036004351660243561142b565b604080519115158252519081900360200190f35b34801561042c57600080fd5b506104356114ca565b60408051918252519081900360200190f35b34801561045357600080fd5b5061033b6114d0565b34801561046857600080fd5b5061033b611542565b34801561047d57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506115b69650505050505050565b34801561050b57600080fd5b5061040c600160a060020a036004358116906024351660443561175f565b34801561053557600080fd5b5061040c600160a060020a0360043516602435611946565b34801561055957600080fd5b5061033b600435602435611a91565b34801561057457600080fd5b5061057d611afd565b60408051600160a060020a039092168252519081900360200190f35b3480156105a557600080fd5b506105ae611b0c565b6040805160ff9092168252519081900360200190f35b3480156105d057600080fd5b5061033b611b11565b3480156105e557600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750949750611b879650505050505050565b34801561063a57600080fd5b5061040c611cfd565b34801561064f57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750611d069650505050505050565b3480156106dd57600080fd5b5061040c600160a060020a0360043516602435611f2e565b34801561070157600080fd5b5061040c6004356120d1565b34801561071957600080fd5b5061040c6004356024356121bc565b34801561073457600080fd5b506040805160206004803580820135838102808601850190965280855261033b95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506122569650505050505050565b3480156107c257600080fd5b5061040c6123ac565b3480156107d757600080fd5b5061040c61242e565b3480156107ec57600080fd5b5061040c61243e565b34801561080157600080fd5b50610819600160a060020a03600435166024356124bc565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561084b57600080fd5b50610435600160a060020a03600435166124ee565b34801561086c57600080fd5b5061033b60043561264b565b34801561088457600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506126e29650505050505050565b34801561092057600080fd5b5061040c6004356129ca565b34801561093857600080fd5b5061040c600160a060020a03600435166024356129f9565b34801561095c57600080fd5b506040805160206004803580820135838102808601850190965280855261040c95369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750612ae49650505050505050565b3480156109ea57600080fd5b50610435600160a060020a0360043516612e0b565b348015610a0b57600080fd5b5061040c600160a060020a0360043516612e26565b348015610a2c57600080fd5b50610435612f6e565b348015610a4157600080fd5b5060408051602060046024803582810135848102808701860190975280865261040c968435600160a060020a0316963696604495919490910192918291850190849080828437509497505093359450612f749350505050565b348015610aa657600080fd5b5061040c600435613213565b348015610abe57600080fd5b506040805160206004803580820135838102808601850190965280855261040c9536959394602494938501929182918501908490808284375094975050933594506132529350505050565b348015610b1557600080fd5b5061033b613423565b348015610b2a57600080fd5b50610435600160a060020a0360043516613477565b348015610b4b57600080fd5b50610435613489565b348015610b6057600080fd5b5061035261348f565b348015610b7557600080fd5b50610435600160a060020a03600435811690602435166134c6565b348015610b9c57600080fd5b5061040c6134e3565b348015610bb157600080fd5b50610435600160a060020a03600435166134ec565b348015610bd257600080fd5b5061040c6135ee565b348015610be757600080fd5b5061040c600160a060020a036004351660243561366e565b348015610c0b57600080fd5b5061033b600160a060020a03600435166137a8565b348015610c2c57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506139029650505050505050565b348015610c8157600080fd5b5061040c600160a060020a0360043516613aa4565b348015610ca257600080fd5b5061040c613ab9565b348015610cb757600080fd5b5061040c600160a060020a0360043516602435613b36565b348015610cdb57600080fd5b506040805160206004803580820135838102808601850190965280855261040c953695939460249493850192918291850190849080828437509497505093359450613d2e9350505050565b348015610d3257600080fd5b50610435614000565b348015610d4757600080fd5b5061033b614006565b348015610d5c57600080fd5b5061040c61402b565b348015610d7157600080fd5b50610435600160a060020a0360043516614039565b348015610d9257600080fd5b5061043561404b565b348015610da757600080fd5b50610435600160a060020a0360043516614051565b348015610dc857600080fd5b5061040c600160a060020a0360043516602435614084565b348015610dec57600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506140f19650505050505050565b348015610e4157600080fd5b50610435600160a060020a036004358116906024351661452e565b348015610e6857600080fd5b50610435614559565b348015610e7d57600080fd5b5061033b600160a060020a036004351660243561455f565b348015610ea157600080fd5b506040805160206004803580820135838102808601850190965280855261033b953695939460249493850192918291850190849080828437509497506146409650505050505050565b348015610ef657600080fd5b5061043561470d565b348015610f0b57600080fd5b5061040c600160a060020a0360043516614713565b348015610f2c57600080fd5b5061040c600160a060020a0360043516614821565b348015610f4d57600080fd5b50610435614836565b600054600160a060020a03163314610f6d57600080fd5b426001198101600655600019016007556040517fa968378e910134ded7db0a5144e2c6a2d157f1685baa51f39de6c13a5e8ffa8990600090a1565b60408051808201909152600881527f466f756e7461696e000000000000000000000000000000000000000000000000602082015281565b6000806000806000806000600e60009054906101000a900460ff16151561100557600080fd5b600654421015801561101957506007544211155b151561102457600080fd5b600e54610100900460ff161561103957600080fd5b600054600160a060020a0316331461105057600080fd5b600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b81166004830152915162010000909304909116916370a08231916024808201926020929091908290030181600087803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b505050506040513d60208110156110e957600080fd5b5051600160a060020a03891660009081526010602052604090205490975060ff161580156111175750600087115b801561113c5750600160a060020a03881660009081526011602052604090205460ff16155b151561114757600080fd5b600160a060020a038089166000818152601060209081526040808320805460ff1916600117905560089091528082208b9055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b1580156111cf57600080fd5b505af11580156111e3573d6000803e3d6000fd5b505050506040513d60808110156111f957600080fd5b508051602082015160408301516060909301519198509650909450925082915060008211156113af5750600160a060020a0387166000908152600d60209081526040808320838052909152902060030181905560015b8181116113af57600e546040805160e660020a63013f307f028152600160a060020a038b811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b505050506040513d60808110156112e057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050508096508197508298508399505050505060806040519081016040528087815260200186815260200185815260200184815250600d60008a600160a060020a0316600160a060020a03168152602001908152602001600020600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030155905050808060010191505061124f565b6003546113c2908863ffffffff61483c16565b600355604080518881529051600160a060020a038a169160008051602061492a833981519152919081900360200190a2604080518881529051600160a060020a038a16916000916000805160206148ea8339815191529181900360200190a35050505050505050565b600060065442108061143e575060075442115b151561144957600080fd5b600160a060020a038316331415611462575060016114c4565b336000818152600960209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035490565b600e5460ff1615156114e157600080fd5b600e54610100900460ff16156114f657600080fd5b600054600160a060020a0316331461150d57600080fd5b600e805460ff191690556040517f232033aa00cdc2e9205a0e3a1063da78353d21cd7724a0444927c906da0e021690600090a1565b600e5460ff161561155257600080fd5b600e54610100900460ff161561156757600080fd5b600054600160a060020a0316331461157e57600080fd5b600e805460ff191660011790556040517f28968b4d1fad9f3e651bf12ae7ae8581411755b430bd83a24d38eb700e4b011f90600090a1565b6000805481908190819081908190600160a060020a031633146115d857600080fd5b60065442101580156115ec57506007544211155b15156115f757600080fd5b875194506000851161160857600080fd5b865188511461161657600080fd5b5060005b8481101561175157878181518110151561163057fe5b602090810290910101519350600160a060020a038416158061165f5750600054600160a060020a038581169116145b1561166957611749565b868181518110151561167757fe5b90602001906020020151925061168c84614051565b91508183111561169a578192505b6003546116ad908463ffffffff61485216565b600355600160a060020a0384166000908152600860205260409020546116d9908463ffffffff61485216565b600160a060020a0385166000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a2604080518481529051600091600160a060020a038716916000805160206148ea8339815191529181900360200190a35b60010161161a565b506001979650505050505050565b600080600654421080611773575060075442115b151561177e57600080fd5b848484600160a060020a038316158015906117a15750600160a060020a03821615155b15156117ac57600080fd5b600160a060020a0383811690831614156117c557600080fd5b600081116117d257600080fd5b600054600160a060020a03898116911614156117ed57600080fd5b600054600160a060020a038881169116141561180857600080fd5b6118128887614864565b151561181d57600080fd5b33600160a060020a0389161461189557600160a060020a038816600090815260096020908152604080832033845290915290205493508386111561186057600080fd5b611870848763ffffffff61485216565b600160a060020a03891660009081526009602090815260408083203384529091529020555b600160a060020a0388166000908152600860205260409020546118be908763ffffffff61485216565b600160a060020a03808a1660009081526008602052604080822093909355908916815220546118f3908763ffffffff61483c16565b600160a060020a038089166000818152600860209081526040918290209490945580518a815290519193928c16926000805160206148ea83398151915292918290030190a3506001979650505050505050565b6000805481908190600160a060020a0316331461196257600080fd5b600654421015801561197657506007544211155b151561198157600080fd5b600160a060020a038516158015906119a75750600054600160a060020a03868116911614155b15156119b257600080fd5b600084116119bf57600080fd5b6119c885614051565b9150839050818411156119d85750805b6003546119eb908263ffffffff61485216565b600355600160a060020a038516600090815260086020526040902054611a17908263ffffffff61485216565b600160a060020a0386166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038816916000805160206148ea8339815191529181900360200190a3506001949350505050565b600054600160a060020a03163314611aa857600080fd5b818111611ab457600080fd5b60068290556007819055604080518381526020810183905281517fac04925986d687f5e264774dac7e393e920d61c9b99e92497853eb519484e4dd929181900390910190a15050565b600f54600160a060020a031681565b601281565b600e5460ff1615611b2157600080fd5b600e54610100900460ff1615611b3657600080fd5b600054600160a060020a03163314611b4d57600080fd5b600e805461ff0019166101001790556040517f31a51b3f3da1c639dced656c0599662c31b7a9822ed27f4079befb25036f66d590600090a1565b600080548190819081908190600160a060020a03163314611ba757600080fd5b6006544210158015611bbb57506007544211155b1515611bc657600080fd5b8551935060008411611bd757600080fd5b600091505b83821015611cf1578582815181101515611bf257fe5b602090810290910101519250600160a060020a0383161580611c215750600054600160a060020a038481169116145b15611c2b57611ce6565b611c3483614051565b600354909150611c4a908263ffffffff61485216565b600355600160a060020a038316600090815260086020526040902054611c76908263ffffffff61485216565b600160a060020a0384166000818152600860209081526040918290209390935580518481529051919260008051602061490a83398151915292918290030190a2604080518281529051600091600160a060020a038616916000805160206148ea8339815191529181900360200190a35b600190910190611bdc565b50600195945050505050565b600e5460ff1681565b6000806000806000806000600654421080611d22575060075442115b1515611d2d57600080fd5b885188519096508614611d3f57600080fd5b6000945060009350600092505b85831015611dd8578883815181101515611d6257fe5b602090810290910101519150600160a060020a0382161580611d915750600054600160a060020a038381169116145b15611d9b57611dcd565b8751600190950194611dca90899085908110611db357fe5b60209081029091010151859063ffffffff61483c16565b93505b600190920191611d4c565b60008411611de557600080fd5b611def3385614864565b1515611dfa57600080fd5b33600090815260086020526040902054611e1a908563ffffffff61485216565b3360009081526008602052604081209190915592505b85831015611f1f578883815181101515611e4657fe5b602090810290910101519150600160a060020a0382161580611e755750600054600160a060020a038381169116145b15611e7f57611f14565b8783815181101515611e8d57fe5b9060200190602002015190508060001415611ea757611f14565b600160a060020a038216600090815260086020526040902054611ed0908263ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518481529051919233926000805160206148ea8339815191529281900390910190a35b600190920191611e30565b50600198975050505050505050565b60008054600160a060020a0316331480611f525750600154600160a060020a031633145b1515611f5d57600080fd5b600654421080611f6e575060075442115b1515611f7957600080fd5b60015460a060020a900460ff161515611f9157600080fd5b600054600160a060020a03848116911614801590611fbd5750600154600160a060020a03848116911614155b1515611fc857600080fd5b611fd1826129ca565b1515611fdc57600080fd5b600154600160a060020a031633141561201a57611ff88261487b565b151561200357600080fd5b600554612016908363ffffffff61483c16565b6005555b60035461202d908363ffffffff61483c16565b600355600160a060020a038316600090815260086020526040902054612059908363ffffffff61483c16565b600160a060020a0384166000818152600860209081526040918290209390935580518581529051919260008051602061492a83398151915292918290030190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a350600192915050565b6000806006544210806120e5575060075442115b15156120f057600080fd5b60015460a060020a900460ff16151561210857600080fd5b61211133614051565b90508083111561212057600080fd5b600354612133908463ffffffff61485216565b60035533600090815260086020526040902054612156908463ffffffff61485216565b336000818152600860209081526040918290209390935580518681529051919260008051602061490a83398151915292918290030190a260408051848152905160009133916000805160206148ea8339815191529181900360200190a350600192915050565b60008054600160a060020a031633146121d457600080fd5b6006544210806121e5575060075442115b15156121f057600080fd5b600a839055600b829055818301831061220857600080fd5b600c805460ff19169055604080518481526020810184905281517f4a1179f4d7ff6354606313c42f6054383e9549f9db56ac4b66b424bc940f79ed929181900390910190a150600192915050565b600e54600090819081908190819060ff16151561227257600080fd5b600e54610100900460ff161561228757600080fd5b600054600160a060020a0316331461229e57600080fd5b86519450855193506000851180156122b557508385145b15156122c057600080fd5b5060005b848110156123a35786818151811015156122da57fe5b90602001906020020151925085818151811015156122f457fe5b602090810290910101519150600160a060020a03831615806123235750600154600160a060020a038481169116145b8061233b5750600054600160a060020a038481169116145b156123455761239b565b600160a060020a0383166000818152601260209081526040918290208590558151928352820184905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15b6001016122c4565b50505050505050565b60008054600160a060020a031633146123c457600080fd5b60015460a060020a900460ff16156123db57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040517fa039c7af624b7305fc7002f670d116cf0c8b61a558a10ff96be611c5c235751790600090a150600190565b60015460a060020a900460ff1681565b60008054600160a060020a0316331461245657600080fd5b600654421080612467575060075442115b151561247257600080fd5b600c5460ff16151561248357600080fd5b600c805460ff191690556040517f14245ee125d3810a2a28f6b656b676516364a51e95a688ddf08af4194fc3db1290600090a150600190565b600d60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6000806000806000806124ff6148c0565b600160a060020a038816158015906125255750600054600160a060020a03898116911614155b801561253f5750600154600160a060020a03898116911614155b151561254a57600080fd5b600160a060020a0388166000908152600d60209081526040808320838052918290528220600301549097509095506001945092508391505b82821161263f5750600081815260208681526040918290208251608081018452815480825260018301549382019390935260028201549381019390935260030154606083015242116125eb5760608101516125e490869063ffffffff61483c16565b9450612634565b80602001514210156126345780516201518090420304935061263181604001518583606001510281151561261b57fe5b048260600151038661483c90919063ffffffff16565b94505b600190910190612582565b50929695505050505050565b600e5460ff16151561265c57600080fd5b600654421015801561267057506007544211155b151561267b57600080fd5b600e54610100900460ff161561269057600080fd5b600054600160a060020a031633146126a757600080fd5b60058190556040805182815290517f16b5fc7c36431451ea7ff18fe108b2a159992ef2a5b74d44613ff6749a2296af9181900360200190a150565b6000806000806000806000806006544210806126ff575060075442115b151561270a57600080fd5b600160a060020a038b16158015906127305750600054600160a060020a038c8116911614155b151561273b57600080fd5b89518951909750871461274d57600080fd5b6000955060009450600093505b868410156127e657898481518110151561277057fe5b602090810290910101519250600160a060020a038316158061279f5750600054600160a060020a038481169116145b156127a9576127db565b88516001909601956127d8908a90869081106127c157fe5b60209081029091010151869063ffffffff61483c16565b94505b60019093019261275a565b600085116127f357600080fd5b6127fd8b86614864565b151561280857600080fd5b33600160a060020a038c161461288057600160a060020a038b16600090815260096020908152604080832033845290915290205491508185111561284b57600080fd5b61285b828663ffffffff61485216565b600160a060020a038c1660009081526009602090815260408083203384529091529020555b600160a060020a038b166000908152600860205260409020546128a9908663ffffffff61485216565b600160a060020a038c1660009081526008602052604081209190915593505b868410156129b95789848151811015156128de57fe5b602090810290910101519250600160a060020a038316158061290d5750600054600160a060020a038481169116145b15612917576129ae565b888481518110151561292557fe5b906020019060200201519050806000141561293f576129ae565b600160a060020a038316600090815260086020526040902054612968908263ffffffff61483c16565b600160a060020a0380851660008181526008602090815260409182902094909455805185815290519193928f16926000805160206148ea83398151915292918290030190a35b6001909301926128c8565b5060019a9950505050505050505050565b6000600254600014806129f157506002546003546129ee908463ffffffff61483c16565b11155b90505b919050565b600080600654421080612a0d575060075442115b1515612a1857600080fd5b600160a060020a038416331415612a325760019150612add565b50336000908152600960209081526040808320600160a060020a038716845290915290205482811015612a6757506000612a7a565b612a77818463ffffffff61485216565b90505b336000818152600960209081526040808320600160a060020a03891680855290835292819020859055805185815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a3600191505b5092915050565b60008054819081908190819081908190819081908190600160a060020a03163314612b0e57600080fd5b600654421080612b1f575060075442115b1515612b2a57600080fd5b600c5460ff1615612b3a57600080fd5b8b518b519099508914612b4c57600080fd5b6000975060009650600095505b88861015612bfd578b86815181101515612b6f57fe5b602090810290910101519450600160a060020a0385161580612b9e5750600054600160a060020a038681169116145b80612bb65750600154600160a060020a038681169116145b15612bc057612bf2565b8a51600190980197612bef908c9088908110612bd857fe5b60209081029091010151889063ffffffff61483c16565b96505b600190950194612b59565b60008711612c0a57600080fd5b612c13876129ca565b1515612c1e57600080fd5b600354612c31908863ffffffff61483c16565b600355600095505b88861015612df9578b86815181101515612c4f57fe5b602090810290910101519450600160a060020a0385161580612c7e5750600054600160a060020a038681169116145b80612c965750600154600160a060020a038681169116145b15612ca057612dee565b8a86815181101515612cae57fe5b9060200190602002015193508360001415612cc857612dee565b600160a060020a038516600090815260086020526040902054612cf1908563ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518781529051919260008051602061492a83398151915292918290030190a2604080518581529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a3505050600160a060020a0382166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018c81526001948501808d529a89905298909a209151825551918101919091559651600288015593519501949094559082905591905b600190950194612c39565b5060019b9a5050505050505050505050565b600160a060020a031660009081526008602052604090205490565b6000805481908190600160a060020a03163314612e4257600080fd5b600160a060020a0384161515612e5757600080fd5b600154600160a060020a0385811691161415612e7257600080fd5b600054600160a060020a0385811691161415612e8d57600080fd5b600160a060020a03841660009081526008602052604090205415612eb057600080fd5b60018054600160a060020a0386811673ffffffffffffffffffffffffffffffffffffffff19831617928390556040519181169450919091169083907ffc952dd6557f6861208ba39acbc0cfe5b4f12e76e6b467ed4200003f2b0cd8b090600090a350600160a060020a03808216600081815260086020908152604080832080549084905594881680845292819020859055805185815290519293926000805160206148ea833981519152929181900390910190a35060019392505050565b600a5481565b6000806000806000806000600654421080612f90575060075442115b1515612f9b57600080fd5b600160a060020a038a1615801590612fc15750600054600160a060020a038b8116911614155b1515612fcc57600080fd5b60008811612fd957600080fd5b8851955060009450600093505b85841015613047578884815181101515612ffc57fe5b602090810290910101519250600160a060020a038316158061302b5750600054600160a060020a038481169116145b156130355761303c565b6001909401935b600190930192612fe6565b6000851161305457600080fd5b613064888663ffffffff61489516565b91506130708a83614864565b151561307b57600080fd5b33600160a060020a038b16146130f25750600160a060020a0389166000908152600960209081526040808320338452909152902054808211156130bd57600080fd5b6130cd818363ffffffff61485216565b600160a060020a038b1660009081526009602090815260408083203384529091529020555b600160a060020a038a1660009081526008602052604090205461311b908363ffffffff61485216565b600160a060020a038b1660009081526008602052604081209190915593505b8584101561320357888481518110151561315057fe5b602090810290910101519250600160a060020a038316158061317f5750600054600160a060020a038481169116145b15613189576131f8565b600160a060020a0383166000908152600860205260409020546131b2908963ffffffff61483c16565b600160a060020a038085166000818152600860209081526040918290209490945580518c815290519193928e16926000805160206148ea83398151915292918290030190a35b60019093019261313a565b5060019998505050505050505050565b60008054600160a060020a0316331461322b57600080fd5b6003548210801561323c5750600082115b15613249575060006129f4565b50600255600190565b60008060008060008060065442108061326c575060075442115b151561327757600080fd5b6000871161328457600080fd5b8751945060009350600092505b848310156132f25787838151811015156132a757fe5b602090810290910101519150600160a060020a03821615806132d65750600054600160a060020a038381169116145b156132e0576132e7565b6001909301925b600190920191613291565b600084116132ff57600080fd5b61330f878563ffffffff61489516565b905061331b3382614864565b151561332657600080fd5b33600090815260086020526040902054613346908263ffffffff61485216565b3360009081526008602052604081209190915592505b8483101561175157878381518110151561337257fe5b602090810290910101519150600160a060020a03821615806133a15750600054600160a060020a038381169116145b156133ab57613418565b600160a060020a0382166000908152600860205260409020546133d4908863ffffffff61483c16565b600160a060020a0383166000818152600860209081526040918290209390935580518a81529051919233926000805160206148ea8339815191529281900390910190a35b60019092019161335c565b600054600160a060020a0316331461343a57600080fd5b426000198101600655639a7ec800016007556040517fb7e43176b89d4cefed0cca5fc9b2f8e752d3d192b83123ef306a0a55dcd18a6b90600090a1565b60086020526000908152604090205481565b60055490565b60408051808201909152600381527f46544e0000000000000000000000000000000000000000000000000000000000602082015281565b600960209081526000928352604080842090915290825290205481565b600c5460ff1681565b60008060008060006134fc6148c0565b600160a060020a038716158015906135225750600054600160a060020a03888116911614155b801561353c5750600154600160a060020a03888116911614155b151561354757600080fd5b600160a060020a0387166000908152600d60209081526040808320838052918290528220600301549096509094509250600191505b8282116135e3575060008181526020858152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082018190526135d690859063ffffffff61483c16565b935060019091019061357c565b509195945050505050565b60008054600160a060020a0316331461360657600080fd5b600654421080613617575060075442115b151561362257600080fd5b600c5460ff161561363257600080fd5b600c805460ff191660011790556040517fcd16c719d9bfc829719d0e728b877ea1f29c77fd759480f077f4f6bc2a26e02590600090a150600190565b6000600654421080613681575060075442115b151561368c57600080fd5b33838382158015906136a65750600160a060020a03821615155b15156136b157600080fd5b600160a060020a0383811690831614156136ca57600080fd5b600081116136d757600080fd5b600054600160a060020a03878116911614156136f257600080fd5b6136fc3386614864565b151561370757600080fd5b33600090815260086020526040902054613727908663ffffffff61485216565b3360009081526008602052604080822092909255600160a060020a03881681522054613759908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919233926000805160206148ea8339815191529281900390910190a350600195945050505050565b600e5460009060ff1615156137bc57600080fd5b600e54610100900460ff16156137d157600080fd5b600054600160a060020a031633146137e857600080fd5b50600160a060020a03811660009081526012602090815260408083205460089092529091205461381e908263ffffffff61483c16565b600160a060020a03831660009081526008602052604090205560035461384a908263ffffffff61483c16565b600355600160a060020a0382166000818152601260209081526040808320929092558151928352820183905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518281529051600160a060020a0384169160008051602061492a833981519152919081900360200190a2604080518281529051600160a060020a038416916000916000805160206148ea8339815191529181900360200190a35050565b600e5460009081908190819060ff16151561391c57600080fd5b600e54610100900460ff161561393157600080fd5b600054600160a060020a0316331461394857600080fd5b845193506000841161395957600080fd5b5060005b83811015613a9d57848181518110151561397357fe5b6020908102909101810151600160a060020a03811660009081526012835260408082205460089094529020549094509092506139b5908363ffffffff61483c16565b600160a060020a0384166000908152600860205260409020556003546139e1908363ffffffff61483c16565b600355600160a060020a0383166000818152601260209081526040808320929092558151928352820184905280517fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d9281900390910190a1604080518381529051600160a060020a0385169160008051602061492a833981519152919081900360200190a2604080518381529051600160a060020a038516916000916000805160206148ea8339815191529181900360200190a360010161395d565b5050505050565b60116020526000908152604090205460ff1681565b60008054600160a060020a03163314613ad157600080fd5b60015460a060020a900460ff161515613ae957600080fd5b6001805474ff0000000000000000000000000000000000000000191690556040517f5f6f015054fd8937bdf17b86b7684be4ae883d459fb0bec23bc11f75a13b594490600090a150600190565b60008054819081908190600160a060020a03163314613b5457600080fd5b600654421080613b65575060075442115b1515613b7057600080fd5b600c5460ff1615613b8057600080fd5b600160a060020a0386161515613b9557600080fd5b600054600160a060020a0387811691161415613bb057600080fd5b600154600160a060020a0387811691161415613bcb57600080fd5b60008511613bd857600080fd5b613be1856129ca565b1515613bec57600080fd5b505050600160a060020a0383166000908152600d60209081526040808320838052808352818420600380820180548551608081018752600a54808252600b54908101828a0190815262015180909104828901908152606083018d81526001948501808d529a89905298909a2091518255519181019190915596516002880155935195810195909555918390559254909190613c87908661483c565b600355600160a060020a038616600090815260086020526040902054613cb3908663ffffffff61483c16565b600160a060020a0387166000818152600860209081526040918290209390935580518881529051919260008051602061492a83398151915292918290030190a2604080518681529051600160a060020a038816916000916000805160206148ea8339815191529181900360200190a350600195945050505050565b6000805481908190819081908190819081908190600160a060020a03163314613d5657600080fd5b600654421080613d67575060075442115b1515613d7257600080fd5b600c5460ff1615613d8257600080fd5b60008a11613d8f57600080fd5b8a51975060009650600095505b87861015613e15578a86815181101515613db257fe5b602090810290910101519450600160a060020a0385161580613de15750600054600160a060020a038681169116145b80613df95750600154600160a060020a038681169116145b15613e0357613e0a565b6001909601955b600190950194613d9c565b60008711613e2257600080fd5b613e328a8863ffffffff61489516565b9350613e3d846129ca565b1515613e4857600080fd5b600354613e5b908563ffffffff61483c16565b600355600095505b878610156129b9578a86815181101515613e7957fe5b602090810290910101519450600160a060020a0385161580613ea85750600054600160a060020a038681169116145b80613ec05750600154600160a060020a038681169116145b15613eca57613ff5565b505050600160a060020a0382166000908152600d602090815260408083208380528083529281902060038101548251608081018452600a54808252600b54908101958201959095529193600190910192820190620151809004815260209081018c90526000838152858252604080822084518155848401516001820155848201516002820155606090940151600394850155928501849055600160a060020a038816815260089091522054613f85908b63ffffffff61483c16565b600160a060020a0386166000818152600860209081526040918290209390935580518d81529051919260008051602061492a83398151915292918290030190a2604080518b81529051600160a060020a038716916000916000805160206148ea8339815191529181900360200190a35b600190950194613e63565b60045481565b600054600160a060020a0316331461401d57600080fd5b600054600160a060020a0316ff5b600e54610100900460ff1681565b60126020526000908152604090205481565b60055481565b60006129f161405f836124ee565b600160a060020a0384166000908152600860205260409020549063ffffffff61485216565b600080600654421080614098575060075442115b15156140a357600080fd5b600160a060020a0384163314156140bd5760019150612add565b336000908152600960209081526040808320600160a060020a0388168452909152902054612a77908463ffffffff61483c16565b600080600080600080600080600080600e60009054906101000a900460ff16151561411b57600080fd5b600654421015801561412f57506007544211155b151561413a57600080fd5b600e54610100900460ff161561414f57600080fd5b600054600160a060020a0316331461416657600080fd5b8a51995060008a1161417757600080fd5b600094505b89851015614521578a8581518110151561419257fe5b6020908102909101810151600e54604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03808516600483015291519398506201000090920416926370a08231926024808401938290030181600087803b15801561420757600080fd5b505af115801561421b573d6000803e3d6000fd5b505050506040513d602081101561423157600080fd5b5051600160a060020a03851660009081526010602052604090205490935060ff168061425b575082155b8061427e5750600160a060020a03841660009081526011602052604090205460ff165b1561428857614516565b600160a060020a038085166000818152601060209081526040808320805460ff191660011790556008909152808220879055600e54815160e660020a63013f307f02815260048101949094526024840183905290516201000090910490931692634fcc1fc0926044808201936080939283900390910190829087803b15801561431057600080fd5b505af1158015614324573d6000803e3d6000fd5b505050506040513d608081101561433a57600080fd5b50805160208201516040830151606090930151919b509950909750955085915060008211156144a35750600160a060020a0383166000908152600d60209081526040808320838052909152902060030181905560015b8181116144a357600e546040805160e660020a63013f307f028152600160a060020a0387811660048301526024820185905291516201000090930490911691634fcc1fc0916044808201926080929091908290030181600087803b1580156143f757600080fd5b505af115801561440b573d6000803e3d6000fd5b505050506040513d608081101561442157600080fd5b5080516020808301516040808501516060958601518251608081018452868152808601858152818501848152988201838152600160a060020a038e166000908152600d89528681208c825290985294909620905181559451600180870191909155965160028601559151600390940193909355929c509a509850965001614390565b6003546144b6908463ffffffff61483c16565b600355604080518481529051600160a060020a0386169160008051602061492a833981519152919081900360200190a2604080518481529051600160a060020a038616916000916000805160206148ea8339815191529181900360200190a35b60019094019361417c565b5050505050505050505050565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b60035481565b600e5460ff16151561457057600080fd5b600e54610100900460ff161561458557600080fd5b600054600160a060020a0316331461459c57600080fd5b600160a060020a03821615156145b157600080fd5b600154600160a060020a03838116911614156145cc57600080fd5b600054600160a060020a03838116911614156145e757600080fd5b600160a060020a0382166000818152601260209081526040918290208490558151928352820183905280517f22e6de62acad655dbe35cea5e534f6d5b5fd376e597e6163f29f49f691b00de39281900390910190a15050565b600e54600090819060ff16151561465657600080fd5b600654421015801561466a57506007544211155b151561467557600080fd5b600e54610100900460ff161561468a57600080fd5b600054600160a060020a031633146146a157600080fd5b825191506000821115614708575060005b818110156147085760016011600085848151811015156146ce57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790556001016146b2565b505050565b60025481565b600080548190600160a060020a0316331461472d57600080fd5b600160a060020a038316151561474257600080fd5b600054600160a060020a038481169116141561475d57600080fd5b600154600160a060020a038481169116141561477857600080fd5b60008054600160a060020a03168152600860205260409020541561479b57600080fd5b600160a060020a038316600090815260086020526040902054156147be57600080fd5b5060008054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b60106020526000908152604090205460ff1681565b600b5481565b60008282018381101561484b57fe5b9392505050565b60008282111561485e57fe5b50900390565b60008061487084614051565b909211159392505050565b60006004546129ee8360055461483c90919063ffffffff16565b6000808315156148a85760009150612add565b508282028284828115156148b857fe5b041461484b57fe5b6080604051908101604052806000815260200160008152602001600081526020016000815250905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca50f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885a165627a7a723058200c93bf3a33958c45ddd26de8ff997a2406db8cbba9192558666654f4254214b70029

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

00000000000000000000000056325d180ec3878a9028afc7b0edcee7486cc9df

-----Decoded View---------------
Arg [0] : old (address): 0x56325d180Ec3878A9028AfC7B0EDCEe7486Cc9df

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000056325d180ec3878a9028afc7b0edcee7486cc9df


Deployed Bytecode Sourcemap

22031:4681:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2597:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2597:113:0;;;;;;20443:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20443:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20443:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25128:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25128:687:0;-1:-1:-1;;;;;25128:687:0;;;;;4765:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4765:244:0;-1:-1:-1;;;;;4765:244:0;;;;;;;;;;;;;;;;;;;;;;;;;6627:84;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6627:84:0;;;;;;;;;;;;;;;;;;;;24779:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24779:121:0;;;;24649:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24649:125:0;;;;19580:802;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19580:802:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19580:802:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19580:802:0;;;;-1:-1:-1;19580:802:0;-1:-1:-1;19580:802:0;;-1:-1:-1;19580:802:0;;;;;;;;;-1:-1:-1;19580:802:0;;-1:-1:-1;19580:802:0;;-1:-1:-1;;;;;;;19580:802:0;15679:538;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15679:538:0;-1:-1:-1;;;;;15679:538:0;;;;;;;;;;;;18461:549;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18461:549:0;-1:-1:-1;;;;;18461:549:0;;;;;;;2426:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2426:166:0;;;;;;;22341:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22341:26:0;;;;;;;;-1:-1:-1;;;;;22341:26:0;;;;;;;;;;;;;;20536:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20536:37:0;;;;;;;;;;;;;;;;;;;;;;;22803:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22803:125:0;;;;19016:555;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19016:555:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19016:555:0;;-1:-1:-1;19016:555:0;;-1:-1:-1;;;;;;;19016:555:0;22251:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22251:27:0;;;;14784:890;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14784:890:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14784:890:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14784:890:0;;;;-1:-1:-1;14784:890:0;-1:-1:-1;14784:890:0;;-1:-1:-1;14784:890:0;;;;;;;;;-1:-1:-1;14784:890:0;;-1:-1:-1;14784:890:0;;-1:-1:-1;;;;;;;14784:890:0;6822:547;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6822:547:0;-1:-1:-1;;;;;6822:547:0;;;;;;;7374:370;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7374:370:0;;;;;8801:347;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8801:347:0;;;;;;;23358:457;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23358:457:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23358:457:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23358:457:0;;;;-1:-1:-1;23358:457:0;-1:-1:-1;23358:457:0;;-1:-1:-1;23358:457:0;;;;;;;;;-1:-1:-1;23358:457:0;;-1:-1:-1;23358:457:0;;-1:-1:-1;;;;;;;23358:457:0;2967:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2967:135:0;;;;2797:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2797:32:0;;;;8626:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8626:170:0;;;;8161:60;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8161:60:0;-1:-1:-1;;;;;8161:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12849:614;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12849:614:0;-1:-1:-1;;;;;12849:614:0;;;;;22933:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22933:163:0;;;;;17244:1129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17244:1129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17244:1129:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17244:1129:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17244:1129:0;;;;-1:-1:-1;17244:1129:0;-1:-1:-1;17244:1129:0;;-1:-1:-1;17244:1129:0;;;;;;;;;-1:-1:-1;17244:1129:0;;-1:-1:-1;17244:1129:0;;-1:-1:-1;;;;;;;17244:1129:0;3766:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3766:138:0;;;;;5335:394;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5335:394:0;-1:-1:-1;;;;;5335:394:0;;;;;;;11135:1291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11135:1291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11135:1291:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11135:1291:0;;;;-1:-1:-1;11135:1291:0;-1:-1:-1;11135:1291:0;;-1:-1:-1;11135:1291:0;;;;;;;;;-1:-1:-1;11135:1291:0;;-1:-1:-1;11135:1291:0;;-1:-1:-1;;;;;;;11135:1291:0;4382:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4382:94:0;-1:-1:-1;;;;;4382:94:0;;;;;21379:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21379:638:0;-1:-1:-1;;;;;21379:638:0;;;;;8065:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8065:27:0;;;;16222:1017;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16222:1017:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16222:1017:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16222:1017:0;;-1:-1:-1;;16222:1017:0;;;-1:-1:-1;16222:1017:0;;-1:-1:-1;;;;16222:1017:0;3598:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3598:163:0;;;;;13999:780;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13999:780:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13999:780:0;;-1:-1:-1;;13999:780:0;;;-1:-1:-1;13999:780:0;;-1:-1:-1;;;;13999:780:0;2301:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2301:120:0;;;;4144:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4144:42:0;-1:-1:-1;;;;;4144:42:0;;;;;6716:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6716:101:0;;;;20492:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20492:40:0;;;;4564:63;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4564:63:0;-1:-1:-1;;;;;4564:63:0;;;;;;;;;;8130:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8130:27:0;;;;12431:413;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12431:413:0;-1:-1:-1;;;;;12431:413:0;;;;;8453:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8453:168:0;;;;13627:365;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13627:365:0;-1:-1:-1;;;;;13627:365:0;;;;;;;23822:335;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23822:335:0;-1:-1:-1;;;;;23822:335:0;;;;;24162:482;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24162:482:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24162:482:0;;-1:-1:-1;24162:482:0;;-1:-1:-1;;;;;;;24162:482:0;22416:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22416:38:0;-1:-1:-1;;;;;22416:38:0;;;;;3107:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3107:131:0;;;;9153:787;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9153:787:0;-1:-1:-1;;;;;9153:787:0;;;;;;;9945:1185;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9945:1185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9945:1185:0;;-1:-1:-1;;9945:1185:0;;;-1:-1:-1;9945:1185:0;;-1:-1:-1;;;;9945:1185:0;3381:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3381:35:0;;;;20920:66;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20920:66:0;;;;22284:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22284:26:0;;;;22460:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22460:40:0;-1:-1:-1;;;;;22460:40:0;;;;;3420:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3420:39:0;;;;6010:126;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6010:126:0;-1:-1:-1;;;;;6010:126:0;;;;;5014:316;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5014:316:0;-1:-1:-1;;;;;5014:316:0;;;;;;;25824:883;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25824:883:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25824:883:0;;-1:-1:-1;25824:883:0;;-1:-1:-1;;;;;;;25824:883:0;4633:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4633:127:0;-1:-1:-1;;;;;4633:127:0;;;;;;;;;;3349:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3349:28:0;;;;23101:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23101:252:0;-1:-1:-1;;;;;23101:252:0;;;;;;;24905:218;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;24905:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24905:218:0;;-1:-1:-1;24905:218:0;;-1:-1:-1;;;;;;;24905:218:0;3321:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3321:24:0;;;;20991:382;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20991:382:0;-1:-1:-1;;;;;20991:382:0;;;;;22374:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22374:38:0;-1:-1:-1;;;;;22374:38:0;;;;;8096:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8096:30:0;;;;2597:113;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2650:3;-1:-1:-1;;2650:7:0;;2638:9;:19;-1:-1:-1;;2672:7:0;2662;:17;2689:16;;;;-1:-1:-1;;2689:16:0;2597:113::o;20443:45::-;;;;;;;;;;;;;;;;;;;:::o;25128:687::-;25209:11;25365:6;25373;25381;25389;25424:8;25501:6;22697:15;;;;;;;;;;;22689:24;;;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;25223:3;;:19;;;;;;-1:-1:-1;;;;;25223:19:0;;;;;;;;;:3;;;;;;;;:13;;:19;;;;;;;;;;;;;;;-1:-1:-1;25223:3:0;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;25223:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25223:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25223:19:0;-1:-1:-1;;;;;25256:14:0;;;;;;:8;25223:19;25256:14;;;;;25223:19;;-1:-1:-1;25256:14:0;;25255:15;:27;;;;;25281:1;25274:6;:8;25255:27;:46;;;;-1:-1:-1;;;;;;25287:14:0;;;;;;:8;:14;;;;;;;;25286:15;25255:46;25247:55;;;;;;;;-1:-1:-1;;;;;25309:14:0;;;;;;;:8;:14;;;;;;;;:21;;-1:-1:-1;;25309:21:0;25326:4;25309:21;;;25335:7;:13;;;;;;:22;;;25399:3;;:20;;-1:-1:-1;;;;;25399:20:0;;;;;;;;;;;;;;;;;:3;;;;;;;;:12;;:20;;;;;;;;;;;;;;;;;:3;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;25399:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25399:20:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;25399:20:0;;;;;;;;;;;;;;;;;-1:-1:-1;25399:20:0;-1:-1:-1;25399:20:0;;-1:-1:-1;25399:20:0;-1:-1:-1;25399:20:0;;-1:-1:-1;25451:1:0;25445:7;;25441:250;;;-1:-1:-1;;;;;;25459:14:0;;;;;;:8;:14;;;;;;;;:17;;;;;;;;:24;;:30;;;25508:1;25496:190;25511:8;;;25496:190;;25547:3;;:20;;;-1:-1:-1;;;;;25547:20:0;;-1:-1:-1;;;;;25547:20:0;;;;;;;;;;;;;;;:3;;;;;;;;:12;;:20;;;;;;;;;;;;;;;-1:-1:-1;25547:3:0;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;25547:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25547:20:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;25547:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25532:35;;;;;;;;;;;;;;;;25594:85;;;;;;;;;25617:1;25594:85;;;;25634:1;25594:85;;;;25653:1;25594:85;;;;25670:1;25594:85;;;25574:8;:14;25583:4;-1:-1:-1;;;;;25574:14:0;-1:-1:-1;;;;;25574:14:0;;;;;;;;;;;;:17;25589:1;25574:17;;;;;;;;;;;:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25521:3;;;;;;;25496:190;;;25713:13;;:25;;25731:6;25713:25;:17;:25;:::i;:::-;25697:13;:41;25748:18;;;;;;;;-1:-1:-1;;;;;25748:18:0;;;-1:-1:-1;;;;;;;;;;;25748:18:0;;;;;;;;;25776:34;;;;;;;;-1:-1:-1;;;;;25776:34:0;;;25793:1;;-1:-1:-1;;;;;;;;;;;25776:34:0;;;;;;;;25128:687;;;;;;;;:::o;4765:244::-;4845:4;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;-1:-1:-1;;;;;4860:23:0;;4873:10;4860:23;4856:40;;;-1:-1:-1;4892:4:0;4885:11;;4856:40;4910:10;4901:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;4901:31:0;;;;;;;;;;;;:39;;;4950:38;;;;;;;4901:31;;4910:10;4950:38;;;;;;;;;;;-1:-1:-1;5000:4:0;2203:1;4765:244;;;;:::o;6627:84::-;6693:13;;6627:84;:::o;24779:121::-;22697:15;;;;22689:24;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;24849:15;:23;;-1:-1:-1;;24849:23:0;;;24882:13;;;;24867:5;;24882:13;24779:121::o;24649:125::-;22771:15;;;;22770:16;22762:25;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;24723:15;:22;;-1:-1:-1;;24723:22:0;24741:4;24723:22;;;24755:14;;;;24723:15;;24755:14;24649:125::o;19580:802::-;19675:4;1634:5;;19675:4;;;;;;;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;19700:12;;;-1:-1:-1;19735:1:0;19729:7;;19720:17;;;;;;19770:14;;19754:12;;:30;19745:40;;;;;;-1:-1:-1;19889:1:0;19875:487;19896:3;19892:1;:7;19875:487;;;19925:5;19931:1;19925:8;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19949:18:0;;;;:35;;-1:-1:-1;19979:5:0;;-1:-1:-1;;;;;19971:13:0;;;19979:5;;19971:13;19949:35;19945:49;;;19986:8;;19945:49;20015:7;20023:1;20015:10;;;;;;;;;;;;;;;;;;20006:19;;20055:21;20071:4;20055:15;:21::i;:::-;20037:39;;20101:15;20092:6;:24;20088:83;;;20143:15;20134:24;;20088:83;20198:13;;:25;;20216:6;20198:25;:17;:25;:::i;:::-;20182:13;:41;-1:-1:-1;;;;;20248:13:0;;;;;;:7;:13;;;;;;:25;;20266:6;20248:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;20232:13:0;;;;;;:7;:13;;;;;;;;;:41;;;;20287:18;;;;;;;20232:13;;-1:-1:-1;;;;;;;;;;;20287:18:0;;;;;;;;20319:34;;;;;;;;20342:1;;-1:-1:-1;;;;;20319:34:0;;;-1:-1:-1;;;;;;;;;;;20319:34:0;;;;;;;;19875:487;19901:3;;19875:487;;;-1:-1:-1;20373:4:0;;19580:802;-1:-1:-1;;;;;;;19580:802:0:o;15679:538::-;15800:4;15898:15;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;15774:4;15780:2;15784:5;-1:-1:-1;;;;;4272:19:0;;;;;;4271:44;;-1:-1:-1;;;;;;4297:17:0;;;;4271:44;4263:53;;;;;;;;-1:-1:-1;;;;;4329:12:0;;;;;;;;4321:21;;;;;;4364:1;4355:10;;4347:19;;;;;;15827:5;;-1:-1:-1;;;;;15819:13:0;;;15827:5;;15819:13;;15811:22;;;;;;15852:5;;-1:-1:-1;;;;;15846:11:0;;;15852:5;;15846:11;;15838:20;;;;;;15871:19;15878:4;15884:5;15871:6;:19::i;:::-;15863:28;;;;;;;;15922:10;-1:-1:-1;;;;;15922:18:0;;;15918:156;;-1:-1:-1;;;;;15958:14:0;;;;;;:8;:14;;;;;;;;15973:10;15958:26;;;;;;;;;-1:-1:-1;15998:16:0;;;;15990:25;;;;;;16050:18;:7;16062:5;16050:18;:11;:18;:::i;:::-;-1:-1:-1;;;;;16021:14:0;;;;;;:8;:14;;;;;;;;16036:10;16021:26;;;;;;;:47;15918:156;-1:-1:-1;;;;;16096:13:0;;;;;;:7;:13;;;;;;:24;;16114:5;16096:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;16080:13:0;;;;;;;:7;:13;;;;;;:40;;;;16139:11;;;;;;;:22;;16155:5;16139:22;:15;:22;:::i;:::-;-1:-1:-1;;;;;16125:11:0;;;;;;;:7;:11;;;;;;;;;:36;;;;16171:25;;;;;;;16125:11;;16171:25;;;;-1:-1:-1;;;;;;;;;;;16171:25:0;;;;;;;;-1:-1:-1;16208:4:0;;15679:538;-1:-1:-1;;;;;;;15679:538:0:o;18461:549::-;18544:4;1634:5;;18544:4;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;-1:-1:-1;;;;;18566:18:0;;;;;;:35;;-1:-1:-1;18596:5:0;;-1:-1:-1;;;;;18588:13:0;;;18596:5;;18588:13;;18566:35;18558:44;;;;;;;;18624:1;18615:10;;18607:19;;;;;;18658:21;18674:4;18658:15;:21::i;:::-;18634:45;;18708:6;18687:27;;18735:13;18726:6;:22;18722:75;;;-1:-1:-1;18775:13:0;18722:75;18820:13;;:29;;18838:10;18820:29;:17;:29;:::i;:::-;18804:13;:45;-1:-1:-1;;;;;18870:13:0;;;;;;:7;:13;;;;;;:29;;18888:10;18870:29;:17;:29;:::i;:::-;-1:-1:-1;;;;;18854:13:0;;;;;;:7;:13;;;;;;;;;:45;;;;18909:22;;;;;;;18854:13;;-1:-1:-1;;;;;;;;;;;18909:22:0;;;;;;;;18941:38;;;;;;;;18964:1;;-1:-1:-1;;;;;18941:38:0;;;-1:-1:-1;;;;;;;;;;;18941:38:0;;;;;;;;-1:-1:-1;19001:4:0;;18461:549;-1:-1:-1;;;;18461:549:0:o;2426:166::-;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2498:9;;;2490:18;;;;;;2513:9;:16;;;2534:7;:12;;;2556:31;;;;;;;;;;;;;;;;;;;;;;;;;2426:166;;:::o;22341:26::-;;;-1:-1:-1;;;;;22341:26:0;;:::o;20536:37::-;20571:2;20536:37;:::o;22803:125::-;22771:15;;;;22770:16;22762:25;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;22877:14;:21;;-1:-1:-1;;22877:21:0;;;;;22908:15;;;;22877:21;;22908:15;22803:125::o;19016:555::-;19093:4;1634:5;;19093:4;;;;;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;19118:12;;;-1:-1:-1;19153:1:0;19147:7;;19138:17;;;;;;19204:1;19195:10;;19190:361;19211:3;19207:1;:7;19190:361;;;19240:5;19246:1;19240:8;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19264:18:0;;;;:35;;-1:-1:-1;19294:5:0;;-1:-1:-1;;;;;19286:13:0;;;19294:5;;19286:13;19264:35;19260:49;;;19301:8;;19260:49;19338:21;19354:4;19338:15;:21::i;:::-;19387:13;;19321:38;;-1:-1:-1;19387:25:0;;19321:38;19387:25;:17;:25;:::i;:::-;19371:13;:41;-1:-1:-1;;;;;19437:13:0;;;;;;:7;:13;;;;;;:25;;19455:6;19437:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;19421:13:0;;;;;;:7;:13;;;;;;;;;:41;;;;19476:18;;;;;;;19421:13;;-1:-1:-1;;;;;;;;;;;19476:18:0;;;;;;;;19508:34;;;;;;;;19531:1;;-1:-1:-1;;;;;19508:34:0;;;-1:-1:-1;;;;;;;;;;;19508:34:0;;;;;;;;19190:361;19216:3;;;;;19190:361;;;-1:-1:-1;19562:4:0;;19016:555;-1:-1:-1;;;;;19016:555:0:o;22251:27::-;;;;;;:::o;14784:890::-;14877:4;14888:18;14977;15004:19;15032:6;15043:9;15383:14;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;14909:16;;14955:14;;14909:16;;-1:-1:-1;14938:31:0;;14930:40;;;;;;14998:1;14977:22;;15026:1;15004:23;;15066:1;15062:5;;15057:183;15073:13;15069:1;:17;15057:183;;;15104:9;15114:1;15104:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15126:15:0;;;;:29;;-1:-1:-1;15150:5:0;;-1:-1:-1;;;;;15145:10:0;;;15150:5;;15145:10;15126:29;15122:43;;;15157:8;;15122:43;15223:10;;15171:16;;;;;15207:27;;15223:7;;15231:1;;15223:10;;;;;;;;;;;;;;;15207:11;;:27;:15;:27;:::i;:::-;15193:41;;15057:183;15088:4;;;;;15057:183;;;15266:1;15252:15;;15244:24;;;;;;15281:31;15288:10;15300:11;15281:6;:31::i;:::-;15273:40;;;;;;;;15350:10;15342:19;;;;:7;:19;;;;;;:36;;15366:11;15342:36;:23;:36;:::i;:::-;15328:10;15320:19;;;;:7;:19;;;;;:58;;;;:19;-1:-1:-1;15402:252:0;15418:13;15414:1;:17;15402:252;;;15448:9;15458:1;15448:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15470:15:0;;;;:29;;-1:-1:-1;15494:5:0;;-1:-1:-1;;;;;15489:10:0;;;15494:5;;15489:10;15470:29;15466:43;;;15501:8;;15466:43;15524:7;15532:1;15524:10;;;;;;;;;;;;;;;;;;15515:19;;15544:6;15554:1;15544:11;15540:25;;;15557:8;;15540:25;-1:-1:-1;;;;;15584:10:0;;;;;;:7;:10;;;;;;:22;;15599:6;15584:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;15571:10:0;;;;;;:7;:10;;;;;;;;;:35;;;;15617:31;;;;;;;15571:10;;15626;;-1:-1:-1;;;;;;;;;;;15617:31:0;;;;;;;;;15402:252;15433:3;;;;;15402:252;;;-1:-1:-1;15665:4:0;;14784:890;-1:-1:-1;;;;;;;;14784:890:0:o;6822:547::-;6921:4;1710:5;;-1:-1:-1;;;;;1710:5:0;1696:10;:19;;:52;;-1:-1:-1;1733:15:0;;-1:-1:-1;;;;;1733:15:0;1719:10;:29;1696:52;1688:61;;;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;2869:13;;-1:-1:-1;;;2869:13:0;;;;2861:22;;;;;;;;6950:5;;-1:-1:-1;;;;;6940:15:0;;;6950:5;;6940:15;;;;:44;;-1:-1:-1;6969:15:0;;-1:-1:-1;;;;;6959:25:0;;;6969:15;;6959:25;;6940:44;6932:53;;;;;;;;6998:15;7006:6;6998:7;:15::i;:::-;6990:24;;;;;;;;7039:15;;-1:-1:-1;;;;;7039:15:0;7025:10;:29;7021:150;;;7070:25;7088:6;7070:17;:25::i;:::-;7062:34;;;;;;;;7129:24;;:36;;7158:6;7129:36;:28;:36;:::i;:::-;7102:24;:63;7021:150;7195:13;;:25;;7213:6;7195:25;:17;:25;:::i;:::-;7179:13;:41;-1:-1:-1;;;;;7243:15:0;;;;;;:7;:15;;;;;;:27;;7263:6;7243:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;7225:15:0;;;;;;:7;:15;;;;;;;;;:45;;;;7282:20;;;;;;;7225:15;;-1:-1:-1;;;;;;;;;;;7282:20:0;;;;;;;;7312:36;;;;;;;;-1:-1:-1;;;;;7312:36:0;;;7329:1;;-1:-1:-1;;;;;;;;;;;7312:36:0;;;;;;;;-1:-1:-1;7360:4:0;6822:547;;;;:::o;7374:370::-;7442:4;7453:15;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;2869:13;;-1:-1:-1;;;2869:13:0;;;;2861:22;;;;;;;;7471:27;7487:10;7471:15;:27::i;:::-;7453:45;-1:-1:-1;7511:17:0;;;;7503:26;;;;;;7552:13;;:25;;7570:6;7552:25;:17;:25;:::i;:::-;7536:13;:41;7612:10;7604:19;;;;:7;:19;;;;;;:31;;7628:6;7604:31;:23;:31;:::i;:::-;7590:10;7582:19;;;;:7;:19;;;;;;;;;:53;;;;7647:24;;;;;;;7590:10;;-1:-1:-1;;;;;;;;;;;7647:24:0;;;;;;;;7681:40;;;;;;;;7710:1;;7690:10;;-1:-1:-1;;;;;;;;;;;7681:40:0;;;;;;;;-1:-1:-1;7735:4:0;;7374:370;-1:-1:-1;;7374:370:0:o;8801:347::-;8908:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8919:12;:28;;;8952:15;:34;;;8999:30;;;:45;-1:-1:-1;8991:54:0;;;;;;9050:15;:23;;-1:-1:-1;;9050:23:0;;;9085:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9139:4:0;8801:347;;;;:::o;23358:457::-;22697:15;;23462:7;;;;;;;;;;22697:15;;22689:24;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;23472:5;:12;23462:22;;23499:7;:14;23489:24;;23564:1;23559:2;:6;:18;;;;;23575:2;23569;:8;23559:18;23551:27;;;;;;;;-1:-1:-1;23597:1:0;23583:228;23604:2;23600:1;:6;23583:228;;;23625:5;23631:1;23625:8;;;;;;;;;;;;;;;;;;23618:15;;23648:7;23656:1;23648:10;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23668:18:0;;;;:45;;-1:-1:-1;23698:15:0;;-1:-1:-1;;;;;23690:23:0;;;23698:15;;23690:23;23668:45;:62;;;-1:-1:-1;23725:5:0;;-1:-1:-1;;;;;23717:13:0;;;23725:5;;23717:13;23668:62;23664:76;;;23732:8;;23664:76;-1:-1:-1;;;;;23746:16:0;;;;;;:10;:16;;;;;;;;;:25;;;23782:23;;;;;;;;;;;;;;;;;;;;;;23583:228;23608:3;;23583:228;;;23358:457;;;;;;;:::o;2967:135::-;3028:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2937:13;;-1:-1:-1;;;2937:13:0;;;;2936:14;2928:23;;;;;;3055:4;3039:20;;-1:-1:-1;;3039:20:0;-1:-1:-1;;;3039:20:0;;;3069:12;;;;3039:20;;3069:12;-1:-1:-1;3093:4:0;2967:135;:::o;2797:32::-;;;-1:-1:-1;;;2797:32:0;;;;;:::o;8626:170::-;8689:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8708:15;;;;8700:24;;;;;;;;8729:15;:23;;-1:-1:-1;;8729:23:0;;;8762:13;;;;8747:5;;8762:13;-1:-1:-1;8787:4:0;8626:170;:::o;8161:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12849:614::-;12913:7;13017:30;13073:15;13097:9;13115:6;13149;13181:18;;:::i;:::-;-1:-1:-1;;;;;12935:22:0;;;;;;:43;;-1:-1:-1;12973:5:0;;-1:-1:-1;;;;;12961:17:0;;;12973:5;;12961:17;;12935:43;:74;;;;-1:-1:-1;12994:15:0;;-1:-1:-1;;;;;12982:27:0;;;12994:15;;12982:27;;12935:74;12927:83;;;;;;;;-1:-1:-1;;;;;13050:18:0;;;;;;:8;:18;;;;;;;;13124:8;;;;;;;;;:15;;;13050:18;;-1:-1:-1;13050:18:0;;-1:-1:-1;13109:1:0;;-1:-1:-1;13124:15:0;-1:-1:-1;13109:1:0;;-1:-1:-1;13144:296:0;13161:6;;;13144:296;;-1:-1:-1;13202:8:0;;;;;;;;;;;;;13181:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13220:3;:16;13216:219;;13267:10;;;;13255:23;;:7;;:23;:11;:23;:::i;:::-;13245:33;;13216:219;;;13305:3;:10;;;13299:3;:16;13295:140;;;13335:9;;13349:6;;13329:3;:15;13328:28;13324:32;;13373:55;13415:3;:12;;;13411:1;13398:3;:10;;;:14;:29;;;;;;;;13385:3;:10;;;:42;13373:7;:11;;:55;;;;:::i;:::-;13363:65;;13295:140;13169:4;;;;;13144:296;;;-1:-1:-1;13451:7:0;;12849:614;-1:-1:-1;;;;;;12849:614:0:o;22933:163::-;22697:15;;;;22689:24;;;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;23027:24;:33;;;23070:21;;;;;;;;;;;;;;;;;22933:163;:::o;17244:1129::-;17355:4;17417:18;17506;17533:19;17561:6;17572:9;17843:15;18088:14;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;-1:-1:-1;;;;;17374:18:0;;;;;;:35;;-1:-1:-1;17404:5:0;;-1:-1:-1;;;;;17396:13:0;;;17404:5;;17396:13;;17374:35;17366:44;;;;;;;;17438:16;;17484:14;;17438:16;;-1:-1:-1;17467:31:0;;17459:40;;;;;;17527:1;17506:22;;17555:1;17533:23;;17595:1;17591:5;;17586:183;17602:13;17598:1;:17;17586:183;;;17633:9;17643:1;17633:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17655:15:0;;;;:29;;-1:-1:-1;17679:5:0;;-1:-1:-1;;;;;17674:10:0;;;17679:5;;17674:10;17655:29;17651:43;;;17686:8;;17651:43;17752:10;;17700:16;;;;;17736:27;;17752:7;;17760:1;;17752:10;;;;;;;;;;;;;;;17736:11;;:27;:15;:27;:::i;:::-;17722:41;;17586:183;17617:4;;;;;17586:183;;;17795:1;17781:15;;17773:24;;;;;;17810:25;17817:4;17823:11;17810:6;:25::i;:::-;17802:34;;;;;;;;17867:10;-1:-1:-1;;;;;17867:18:0;;;17863:168;;-1:-1:-1;;;;;17903:14:0;;;;;;:8;:14;;;;;;;;17918:10;17903:26;;;;;;;;;-1:-1:-1;17943:22:0;;;;17935:31;;;;;;18001:24;:7;18013:11;18001:24;:11;:24;:::i;:::-;-1:-1:-1;;;;;17972:14:0;;;;;;:8;:14;;;;;;;;17987:10;17972:26;;;;;;;:53;17863:168;-1:-1:-1;;;;;18053:13:0;;;;;;:7;:13;;;;;;:30;;18071:11;18053:30;:17;:30;:::i;:::-;-1:-1:-1;;;;;18037:13:0;;;;;;:7;:13;;;;;:46;;;;:13;-1:-1:-1;18107:246:0;18123:13;18119:1;:17;18107:246;;;18153:9;18163:1;18153:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18175:15:0;;;;:29;;-1:-1:-1;18199:5:0;;-1:-1:-1;;;;;18194:10:0;;;18199:5;;18194:10;18175:29;18171:43;;;18206:8;;18171:43;18229:7;18237:1;18229:10;;;;;;;;;;;;;;;;;;18220:19;;18249:6;18259:1;18249:11;18245:25;;;18262:8;;18245:25;-1:-1:-1;;;;;18289:10:0;;;;;;:7;:10;;;;;;:22;;18304:6;18289:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;18276:10:0;;;;;;;:7;:10;;;;;;;;;:35;;;;18322:25;;;;;;;18276:10;;18322:25;;;;-1:-1:-1;;;;;;;;;;;18322:25:0;;;;;;;;18107:246;18138:3;;;;;18107:246;;;-1:-1:-1;18364:4:0;;17244:1129;-1:-1:-1;;;;;;;;;;17244:1129:0:o;3766:138::-;3821:4;3840:9;;3853:1;3840:14;3839:60;;;-1:-1:-1;3889:9:0;;3860:13;;:25;;3878:6;3860:25;:17;:25;:::i;:::-;:38;;3839:60;3832:67;;3766:138;;;;:::o;5335:394::-;5424:4;5480:13;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;-1:-1:-1;;;;;5439:23:0;;5452:10;5439:23;5435:40;;;5471:4;5464:11;;;;5435:40;-1:-1:-1;5505:10:0;5496:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5496:31:0;;;;;;;;;;5536:13;;;5532:85;;;-1:-1:-1;5565:1:0;5532:85;;;5595:16;:5;5605;5595:16;:9;:16;:::i;:::-;5587:24;;5532:85;5630:10;5621:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5621:31:0;;;;;;;;;;;;:39;;;5670:38;;;;;;;5621:31;;5630:10;5670:38;;;;;;;;;;;5720:4;5713:11;;2203:1;5335:394;;;;;:::o;11135:1291::-;11246:4;1634:5;;11246:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8263:15;;;;8262:16;8254:25;;;;;;11280:16;;11328:14;;11280:16;;-1:-1:-1;11309:33:0;;11301:42;;;;;;11372:1;11350:23;;11400:1;11378:23;;11440:1;11436:5;;11431:210;11447:15;11443:1;:19;11431:210;;;11480:9;11490:1;11480:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11502:15:0;;;;:29;;-1:-1:-1;11526:5:0;;-1:-1:-1;;;;;11521:10:0;;;11526:5;;11521:10;11502:29;:53;;;-1:-1:-1;11540:15:0;;-1:-1:-1;;;;;11535:20:0;;;11540:15;;11535:20;11502:53;11498:67;;;11557:8;;11498:67;11624:10;;11571:17;;;;;11608:27;;11624:7;;11632:1;;11624:10;;;;;;;;;;;;;;;11608:11;;:27;:15;:27;:::i;:::-;11594:41;;11431:210;11464:4;;;;;11431:210;;;11667:1;11653:15;;11645:24;;;;;;11682:20;11690:11;11682:7;:20::i;:::-;11674:29;;;;;;;;11745:13;;:30;;11763:11;11745:30;:17;:30;:::i;:::-;11729:13;:46;11789:1;;-1:-1:-1;11780:624:0;11796:15;11792:1;:19;11780:624;;;11829:9;11839:1;11829:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11851:15:0;;;;:29;;-1:-1:-1;11875:5:0;;-1:-1:-1;;;;;11870:10:0;;;11875:5;;11870:10;11851:29;:53;;;-1:-1:-1;11889:15:0;;-1:-1:-1;;;;;11884:20:0;;;11889:15;;11884:20;11851:53;11847:67;;;11906:8;;11847:67;11929:7;11937:1;11929:10;;;;;;;;;;;;;;;;;;11920:19;;11949:6;11959:1;11949:11;11945:25;;;11962:8;;11945:25;-1:-1:-1;;;;;11989:10:0;;;;;;:7;:10;;;;;;:22;;12004:6;11989:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;11976:10:0;;;;;;:7;:10;;;;;;;;;:35;;;;12022:15;;;;;;;11976:10;;-1:-1:-1;;;;;;;;;;;12022:15:0;;;;;;;;12048:31;;;;;;;;-1:-1:-1;;;;;12048:31:0;;;12065:1;;-1:-1:-1;;;;;;;;;;;12048:31:0;;;;;;;;-1:-1:-1;;;;;;;;12120:11:0;;;;;;:8;:11;;;;;;;;12160:8;;;;;;;;;12187:11;;;;;;12223:150;;;;;;;12245:12;;12223:150;;;12287:15;;12272:30;;;12223:150;;;;;;12338:6;12319:26;;;12223:150;;;;;;;;;;;;12201:1;12187:15;;;12208:12;;;;;;;;;;;:165;;;;;;;;;;;;;;;;;;;;;;;;;;12379:19;;;;12120:11;12160:8;11780:624;11813:4;;;;;11780:624;;;-1:-1:-1;12417:4:0;;11135:1291;-1:-1:-1;;;;;;;;;;;11135:1291:0:o;4382:94::-;-1:-1:-1;;;;;4458:13:0;4437:7;4458:13;;;:7;:13;;;;;;;4382:94::o;21379:638::-;21470:4;1634:5;;21470:4;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;-1:-1:-1;;;;;21489:32:0;;;;21481:41;;;;;;21557:15;;-1:-1:-1;;;;;21535:37:0;;;21557:15;;21535:37;;21527:46;;;;;;21608:5;;-1:-1:-1;;;;;21586:27:0;;;21608:5;;21586:27;;21578:36;;;;;;-1:-1:-1;;;;;21627:27:0;;;;;;:7;:27;;;;;;:32;21619:41;;;;;;21691:15;;;-1:-1:-1;;;;;21711:36:0;;;-1:-1:-1;;21711:36:0;;;;;;;21759:62;;21691:15;;;;-1:-1:-1;21805:15:0;;;;;21691;;21759:62;;21691:15;;21759:62;-1:-1:-1;;;;;;21842:22:0;;;;;;;:7;:22;;;;;;;;;;21869:29;;;;21903:27;;;;;;;;;;:33;;;21946:48;;;;;;;21903:27;;21842:22;-1:-1:-1;;;;;;;;;;;21946:48:0;;;;;;;;;;-1:-1:-1;22008:4:0;;21379:638;-1:-1:-1;;;21379:638:0:o;8065:27::-;;;;:::o;16222:1017::-;16329:4;16415:18;16457;16484:6;16495:9;16682:19;16784:15;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;-1:-1:-1;;;;;16348:18:0;;;;;;:35;;-1:-1:-1;16378:5:0;;-1:-1:-1;;;;;16370:13:0;;;16378:5;;16370:13;;16348:35;16340:44;;;;;;;;16406:1;16397:10;;16389:19;;;;;;16436:9;:16;16415:37;;16478:1;16457:22;;16518:1;16514:5;;16509:136;16525:13;16521:1;:17;16509:136;;;16556:9;16566:1;16556:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16578:15:0;;;;:29;;-1:-1:-1;16602:5:0;;-1:-1:-1;;;;;16597:10:0;;;16602:5;;16597:10;16578:29;16574:43;;;16609:8;;16574:43;16623:16;;;;;16509:136;16540:4;;;;;16509:136;;;16673:1;16657:17;;16649:26;;;;;;16704:34;:6;16723:13;16704:34;:10;:34;:::i;:::-;16682:56;;16751:25;16758:4;16764:11;16751:6;:25::i;:::-;16743:34;;;;;;;;16808:10;-1:-1:-1;;;;;16808:18:0;;;16804:168;;-1:-1:-1;;;;;;16844:14:0;;;;;;:8;:14;;;;;;;;16859:10;16844:26;;;;;;;;16884:22;;;;16876:31;;;;;;16942:24;:7;16954:11;16942:24;:11;:24;:::i;:::-;-1:-1:-1;;;;;16913:14:0;;;;;;:8;:14;;;;;;;;16928:10;16913:26;;;;;;;:53;16804:168;-1:-1:-1;;;;;16994:13:0;;;;;;:7;:13;;;;;;:30;;17012:11;16994:30;:17;:30;:::i;:::-;-1:-1:-1;;;;;16978:13:0;;;;;;:7;:13;;;;;:46;;;;:13;-1:-1:-1;17029:190:0;17045:13;17041:1;:17;17029:190;;;17075:9;17085:1;17075:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17097:15:0;;;;:29;;-1:-1:-1;17121:5:0;;-1:-1:-1;;;;;17116:10:0;;;17121:5;;17116:10;17097:29;17093:43;;;17128:8;;17093:43;-1:-1:-1;;;;;17155:10:0;;;;;;:7;:10;;;;;;:22;;17170:6;17155:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;17142:10:0;;;;;;;:7;:10;;;;;;;;;:35;;;;17188:25;;;;;;;17142:10;;17188:25;;;;-1:-1:-1;;;;;;;;;;;17188:25:0;;;;;;;;17029:190;17060:3;;;;;17029:190;;;-1:-1:-1;17230:4:0;;16222:1017;-1:-1:-1;;;;;;;;;16222:1017:0:o;3598:163::-;3658:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;3680:13;;3673:4;:20;:32;;;;;3704:1;3697:4;:8;3673:32;3669:50;;;-1:-1:-1;3714:5:0;3707:12;;3669:50;-1:-1:-1;3724:9:0;:16;3752:4;;3598:163::o;13999:780::-;14088:4;14125:18;14167;14194:6;14205:9;14392:19;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;14116:1;14107:10;;14099:19;;;;;;14146:9;:16;14125:37;;14188:1;14167:22;;14228:1;14224:5;;14219:136;14235:13;14231:1;:17;14219:136;;;14266:9;14276:1;14266:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14288:15:0;;;;:29;;-1:-1:-1;14312:5:0;;-1:-1:-1;;;;;14307:10:0;;;14312:5;;14307:10;14288:29;14284:43;;;14319:8;;14284:43;14333:16;;;;;14219:136;14250:4;;;;;14219:136;;;14383:1;14367:17;;14359:26;;;;;;14414:34;:6;14433:13;14414:34;:10;:34;:::i;:::-;14392:56;;14461:31;14468:10;14480:11;14461:6;:31::i;:::-;14453:40;;;;;;;;14530:10;14522:19;;;;:7;:19;;;;;;:36;;14546:11;14522:36;:23;:36;:::i;:::-;14508:10;14500:19;;;;:7;:19;;;;;:58;;;;:19;-1:-1:-1;14563:196:0;14579:13;14575:1;:17;14563:196;;;14609:9;14619:1;14609:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14631:15:0;;;;:29;;-1:-1:-1;14655:5:0;;-1:-1:-1;;;;;14650:10:0;;;14655:5;;14650:10;14631:29;14627:43;;;14662:8;;14627:43;-1:-1:-1;;;;;14689:10:0;;;;;;:7;:10;;;;;;:22;;14704:6;14689:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;14676:10:0;;;;;;:7;:10;;;;;;;;;:35;;;;14722:31;;;;;;;14676:10;;14731;;-1:-1:-1;;;;;;;;;;;14722:31:0;;;;;;;;;14563:196;14594:3;;;;;14563:196;;2301:120;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2353:3;-1:-1:-1;;2353:7:0;;2341:9;:19;2381:10;2375:16;2365:7;:26;2401:15;;;;-1:-1:-1;;2401:15:0;2301:120::o;4144:42::-;;;;;;;;;;;;;:::o;6716:101::-;6788:24;;6716:101;:::o;20492:40::-;;;;;;;;;;;;;;;;;;;:::o;4564:63::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8130:27::-;;;;;;:::o;12431:413::-;12497:7;12601:30;12657:15;12681:6;12715;12747:18;;:::i;:::-;-1:-1:-1;;;;;12519:22:0;;;;;;:43;;-1:-1:-1;12557:5:0;;-1:-1:-1;;;;;12545:17:0;;;12557:5;;12545:17;;12519:43;:74;;;;-1:-1:-1;12578:15:0;;-1:-1:-1;;;;;12566:27:0;;;12578:15;;12566:27;;12519:74;12511:83;;;;;;;;-1:-1:-1;;;;;12634:18:0;;;;;;:8;:18;;;;;;;;12690:8;;;;;;;;;:15;;;12634:18;;-1:-1:-1;12634:18:0;;-1:-1:-1;12690:15:0;-1:-1:-1;12724:1:0;;-1:-1:-1;12710:111:0;12727:6;;;12710:111;;-1:-1:-1;12768:8:0;;;;;;;;;;;;;12747:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12792:23;;:7;;:23;:11;:23;:::i;:::-;12782:33;-1:-1:-1;12735:4:0;;;;;12710:111;;;-1:-1:-1;12832:7:0;;12431:413;-1:-1:-1;;;;;12431:413:0:o;8453:168::-;8515:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8535:15;;;;8534:16;8526:25;;;;;;8556:15;:22;;-1:-1:-1;;8556:22:0;8574:4;8556:22;;;8588:12;;;;8556:15;;8588:12;-1:-1:-1;8612:4:0;8453:168;:::o;13627:365::-;13744:4;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;13708:10;13720:6;13728:5;4272:19;;;;;4271:44;;-1:-1:-1;;;;;;4297:17:0;;;;4271:44;4263:53;;;;;;;;-1:-1:-1;;;;;4329:12:0;;;;;;;;4321:21;;;;;;4364:1;4355:10;;4347:19;;;;;;13773:5;;-1:-1:-1;;;;;13763:15:0;;;13773:5;;13763:15;;13755:24;;;;;;13792:25;13799:10;13811:5;13792:6;:25::i;:::-;13784:34;;;;;;;;13855:10;13847:19;;;;:7;:19;;;;;;:30;;13871:5;13847:30;:23;:30;:::i;:::-;13833:10;13825:19;;;;:7;:19;;;;;;:52;;;;-1:-1:-1;;;;;13900:15:0;;;;;;:26;;13920:5;13900:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;13882:15:0;;;;;;:7;:15;;;;;;;;;:44;;;;13936:35;;;;;;;13882:15;;13945:10;;-1:-1:-1;;;;;;;;;;;13936:35:0;;;;;;;;;-1:-1:-1;13983:4:0;;13627:365;-1:-1:-1;;;;;13627:365:0:o;23822:335::-;22697:15;;23902:11;;22697:15;;22689:24;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;-1:-1:-1;;;;;;23916:16:0;;;;;;:10;:16;;;;;;;;;23953:7;:13;;;;;;;:25;;23916:16;23953:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;23937:13:0;;;;;;:7;:13;;;;;:41;24000:13;;:25;;24018:6;24000:25;:17;:25;:::i;:::-;23984:13;:41;-1:-1:-1;;;;;24030:16:0;;24049:1;24030:16;;;:10;:16;;;;;;;;:20;;;;24060;;;;;;;;;;;;;;;;;;;;;;24090:18;;;;;;;;-1:-1:-1;;;;;24090:18:0;;;-1:-1:-1;;;;;;;;;;;24090:18:0;;;;;;;;;24118:34;;;;;;;;-1:-1:-1;;;;;24118:34:0;;;24135:1;;-1:-1:-1;;;;;;;;;;;24118:34:0;;;;;;;;23822:335;;:::o;24162:482::-;22697:15;;24250:6;;;;;;;;22697:15;;22689:24;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;24259:12;;;-1:-1:-1;24321:1:0;24317:5;;24309:14;;;;;;-1:-1:-1;24342:1:0;24328:312;24349:1;24345;:5;24328:312;;;24369:5;24375:1;24369:8;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24392:16:0;;;;;;:10;:16;;;;;;;24430:7;:13;;;;;;24369:8;;-1:-1:-1;24392:16:0;;-1:-1:-1;24430:25:0;;24392:16;24430:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;24414:13:0;;;;;;:7;:13;;;;;:41;24478:13;;:25;;24496:6;24478:25;:17;:25;:::i;:::-;24462:13;:41;-1:-1:-1;;;;;24509:16:0;;24528:1;24509:16;;;:10;:16;;;;;;;;:20;;;;24540;;;;;;;;;;;;;;;;;;;;;;24571:18;;;;;;;;-1:-1:-1;;;;;24571:18:0;;;-1:-1:-1;;;;;;;;;;;24571:18:0;;;;;;;;;24600:34;;;;;;;;-1:-1:-1;;;;;24600:34:0;;;24617:1;;-1:-1:-1;;;;;;;;;;;24600:34:0;;;;;;;;24352:3;;24328:312;;;24162:482;;;;;:::o;22416:38::-;;;;;;;;;;;;;;;:::o;3107:131::-;3164:4;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2869:13;;-1:-1:-1;;;2869:13:0;;;;2861:22;;;;;;;;3175:13;:21;;-1:-1:-1;;3175:21:0;;;3206:11;;;;3191:5;;3206:11;-1:-1:-1;3229:4:0;3107:131;:::o;9153:787::-;9252:4;1634:5;;9252:4;;;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8263:15;;;;8262:16;8254:25;;;;;;-1:-1:-1;;;;;9271:22:0;;;;9263:31;;;;;;9319:5;;-1:-1:-1;;;;;9307:17:0;;;9319:5;;9307:17;;9299:26;;;;;;9350:15;;-1:-1:-1;;;;;9338:27:0;;;9350:15;;9338:27;;9330:36;;;;;;9388:1;9379:10;;9371:19;;;;;;9403:15;9411:6;9403:7;:15::i;:::-;9395:24;;;;;;;;-1:-1:-1;;;;;;;;9459:18:0;;;;;;:8;:18;;;;;;;;9505:8;;;;;;;;;9531:11;;;;;;9566:145;;;;;;;9587:12;;9566:145;;;9628:15;;9613:30;;;9566:145;;;;;;9678:6;9659:26;;;9566:145;;;;;;;;;;;;9545:1;9531:15;;;9551:12;;;;;;;;;;;:160;;;;;;;;;;;;;;;;;;;;;;;;;;;9716:19;;;;9758:13;;9505:8;;9531:15;9758:25;;9566:145;9758:17;:25::i;:::-;9742:13;:41;-1:-1:-1;;;;;9808:17:0;;;;;;:7;:17;;;;;;:29;;9830:6;9808:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;9788:17:0;;;;;;:7;:17;;;;;;;;;:49;;;;9847:22;;;;;;;9788:17;;-1:-1:-1;;;;;;;;;;;9847:22:0;;;;;;;;9879:38;;;;;;;;-1:-1:-1;;;;;9879:38:0;;;9896:1;;-1:-1:-1;;;;;;;;;;;9879:38:0;;;;;;;;-1:-1:-1;9931:4:0;;9153:787;-1:-1:-1;;;;;9153:787:0:o;9945:1185::-;10052:4;1634:5;;10052:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;8263:15;;;;8262:16;8254:25;;;;;;10080:1;10071:10;;10063:19;;;;;;10112:9;:16;10089:39;;10155:1;10133:23;;10195:1;10191:5;;10186:163;10202:15;10198:1;:19;10186:163;;;10235:9;10245:1;10235:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10257:15:0;;;;:29;;-1:-1:-1;10281:5:0;;-1:-1:-1;;;;;10276:10:0;;;10281:5;;10276:10;10257:29;:53;;;-1:-1:-1;10295:15:0;;-1:-1:-1;;;;;10290:20:0;;;10295:15;;10290:20;10257:53;10253:67;;;10312:8;;10253:67;10326:17;;;;;10186:163;10219:4;;;;;10186:163;;;10378:1;10361:18;;10353:27;;;;;;10409:35;:6;10428:14;10409:35;:10;:35;:::i;:::-;10387:57;;10457:20;10465:11;10457:7;:20::i;:::-;10449:29;;;;;;;;10501:13;;:30;;10519:11;10501:30;:17;:30;:::i;:::-;10485:13;:46;10547:1;;-1:-1:-1;10538:570:0;10554:15;10550:1;:19;10538:570;;;10587:9;10597:1;10587:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10609:15:0;;;;:29;;-1:-1:-1;10633:5:0;;-1:-1:-1;;;;;10628:10:0;;;10633:5;;10628:10;10609:29;:53;;;-1:-1:-1;10647:15:0;;-1:-1:-1;;;;;10642:20:0;;;10647:15;;10642:20;10609:53;10605:67;;;10664:8;;10605:67;-1:-1:-1;;;;;;;;10713:11:0;;;;;;:8;:11;;;;;;;;10753:8;;;;;;;;;;10780:11;;;;10816:150;;;;;;;10838:12;;10816:150;;;10880:15;;10865:30;;;10816:150;;;;;;;10753:8;;10794:1;10780:15;;;;10816:150;;;10931:6;;10912:26;10816:150;;;;;;;;;-1:-1:-1;10801:12:0;;;;;;;;;;:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10972:11;;;:19;;;-1:-1:-1;;;;;11012:10:0;;;;:7;:10;;;;;:22;;10953:6;11012:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;10999:10:0;;;;;;:7;:10;;;;;;;;;:35;;;;11045:15;;;;;;;10999:10;;-1:-1:-1;;;;;;;;;;;11045:15:0;;;;;;;;11071:31;;;;;;;;-1:-1:-1;;;;;11071:31:0;;;11088:1;;-1:-1:-1;;;;;;;;;;;11071:31:0;;;;;;;;10538:570;10571:4;;;;;10538:570;;3381:35;;;;:::o;20920:66::-;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;20975:5;;-1:-1:-1;;;;;20975:5:0;20962:19;22284:26;;;;;;;;;:::o;22460:40::-;;;;;;;;;;;;;:::o;3420:39::-;;;;:::o;6010:126::-;6071:7;6092:39;6110:20;6125:4;6110:14;:20::i;:::-;-1:-1:-1;;;;;6092:13:0;;;;;;:7;:13;;;;;;;:39;:17;:39;:::i;5014:316::-;5103:4;5159:13;2171:9;;2165:3;:15;:32;;;;2190:7;;2184:3;:13;2165:32;2157:41;;;;;;;;-1:-1:-1;;;;;5118:23:0;;5131:10;5118:23;5114:40;;;5150:4;5143:11;;;;5114:40;5184:10;5175:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5175:31:0;;;;;;;;;;:42;;5211:5;5175:42;:35;:42;:::i;25824:883::-;25913:6;25958;25969;25981;25993;26009;26040:12;26069:11;26288:8;26368:6;22697:15;;;;;;;;;;;22689:24;;;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;25922:12;;;-1:-1:-1;25951:1:0;25947:5;;25939:14;;;;;;26018:1;26009:10;;26004:694;26025:1;26021;:5;26004:694;;;26055:5;26061:1;26055:8;;;;;;;;;;;;;;;;;;;;26083:3;;:19;;;;;;-1:-1:-1;;;;;26083:19:0;;;;;;;;;26055:8;;-1:-1:-1;26083:3:0;;;;;;:13;;:19;;;;;;;;;;-1:-1:-1;26083:3:0;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;26083:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26083:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26083:19:0;-1:-1:-1;;;;;26112:14:0;;;;;;:8;26083:19;26112:14;;;;;26083:19;;-1:-1:-1;26112:14:0;;;:29;;-1:-1:-1;26130:11:0;;26112:29;:47;;;-1:-1:-1;;;;;;26145:14:0;;;;;;:8;:14;;;;;;;;26112:47;26108:74;;;26167:8;;26108:74;-1:-1:-1;;;;;26189:14:0;;;;;;;:8;:14;;;;;;;;:21;;-1:-1:-1;;26189:21:0;26206:4;26189:21;;;26216:7;:13;;;;;;:22;;;26262:3;;:20;;-1:-1:-1;;;;;26262:20:0;;;;;;;;;;;;;;;;;:3;;;;;;;;:12;;:20;;;;;;;;;;;;;;;;;:3;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;26262:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26262:20:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;26262:20:0;;;;;;;;;;;;;;;;;-1:-1:-1;26262:20:0;-1:-1:-1;26262:20:0;;-1:-1:-1;26262:20:0;-1:-1:-1;26262:20:0;;-1:-1:-1;26316:1:0;26310:7;;26306:262;;;-1:-1:-1;;;;;;26325:14:0;;;;;;:8;:14;;;;;;;;:17;;;;;;;;:24;;:30;;;26375:1;26363:199;26378:8;;;26363:199;;26415:3;;:21;;;-1:-1:-1;;;;;26415:21:0;;-1:-1:-1;;;;;26415:21:0;;;;;;;;;;;;;;;:3;;;;;;;;:12;;:21;;;;;;;;;;;;;;;-1:-1:-1;26415:3:0;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;26415:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26415:21:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;26415:21:0;;;;;;;;;;;;;;;;;26464:90;;26415:21;26464:90;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26444:14:0;;-1:-1:-1;26444:14:0;;;:8;:14;;;;;:17;;;;;;;;;;:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26415:21;;-1:-1:-1;26415:21:0;-1:-1:-1;26415:21:0;-1:-1:-1;26415:21:0;-1:-1:-1;26388:3:0;26363:199;;;26591:13;;:25;;26609:6;26591:25;:17;:25;:::i;:::-;26575:13;:41;26627:18;;;;;;;;-1:-1:-1;;;;;26627:18:0;;;-1:-1:-1;;;;;;;;;;;26627:18:0;;;;;;;;;26656:34;;;;;;;;-1:-1:-1;;;;;26656:34:0;;;26673:1;;-1:-1:-1;;;;;;;;;;;26656:34:0;;;;;;;;26004:694;26028:3;;;;;26004:694;;;25824:883;;;;;;;;;;;:::o;4633:127::-;-1:-1:-1;;;;;4729:15:0;;;4708:7;4729:15;;;:8;:15;;;;;;;;:26;;;;;;;;;;;;;4633:127::o;3349:28::-;;;;:::o;23101:252::-;22697:15;;;;22689:24;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;-1:-1:-1;;;;;23202:18:0;;;;23194:27;;;;;;23242:15;;-1:-1:-1;;;;;23234:23:0;;;23242:15;;23234:23;;23226:32;;;;;;23279:5;;-1:-1:-1;;;;;23271:13:0;;;23279:5;;23271:13;;23263:22;;;;;;-1:-1:-1;;;;;23290:16:0;;;;;;:10;:16;;;;;;;;;:25;;;23325:23;;;;;;;;;;;;;;;;;;;;;;23101:252;;:::o;24905:218::-;22697:15;;25001:8;;;;22697:15;;22689:24;;;;;;;;2257:9;;2250:3;:16;;:34;;;;;2277:7;;2270:3;:14;;2250:34;2242:43;;;;;;;;22628:14;;;;;;;22627:15;22619:24;;;;;;1634:5;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;25012:5;:12;25001:23;;25037:1;25033:3;:5;25029:90;;;-1:-1:-1;25059:1:0;25045:69;25066:3;25062:1;:7;25045:69;;;25103:4;25082:8;:18;25091:5;25097:1;25091:8;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25082:18:0;;;;;;;;;;;-1:-1:-1;25082:18:0;:25;;-1:-1:-1;;25082:25:0;;;;;;;;;;-1:-1:-1;25071:3:0;25045:69;;;24905:218;;;:::o;3321:24::-;;;;:::o;20991:382::-;21063:4;1634:5;;21063:4;;-1:-1:-1;;;;;1634:5:0;1620:10;:19;1612:28;;;;;;-1:-1:-1;;;;;21082:22:0;;;;21074:31;;;;;;21130:5;;-1:-1:-1;;;;;21118:17:0;;;21130:5;;21118:17;;21110:26;;;;;;21161:15;;-1:-1:-1;;;;;21149:27:0;;;21161:15;;21149:27;;21141:36;;;;;;21190:14;21198:5;;-1:-1:-1;;;;;21198:5:0;21190:14;;:7;:14;;;;;;:19;21182:28;;;;;;-1:-1:-1;;;;;21223:17:0;;;;;;:7;:17;;;;;;:22;21215:31;;;;;;-1:-1:-1;21272:5:0;;;-1:-1:-1;;;;;21282:16:0;;;-1:-1:-1;;21282:16:0;;;;;;21308:40;;21272:5;;;;;;;21308:40;;21272:5;21308:40;-1:-1:-1;21364:4:0;;20991:382;-1:-1:-1;;20991:382:0:o;22374:38::-;;;;;;;;;;;;;;;:::o;8096:30::-;;;;:::o;429:127::-;488:7;514:5;;;531:6;;;;524:14;;;;550:1;429:127;-1:-1:-1;;;429:127:0:o;315:109::-;374:7;395:6;;;;388:14;;;;-1:-1:-1;414:5:0;;;315:109::o;13468:154::-;13538:4;13549:15;13567:21;13583:4;13567:15;:21::i;:::-;13600:17;;;;;13468:154;-1:-1:-1;;;13468:154:0:o;3910:149::-;3975:4;4033:20;;3993:36;4022:6;3993:24;;:28;;:36;;;;:::i;48:167::-;107:7;;125:6;;121:32;;;146:1;139:8;;;;121:32;-1:-1:-1;169:5:0;;;173:1;169;:5;186;;;;;;;;:10;179:18;;;22031:4681;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://0c93bf3a33958c45ddd26de8ff997a2406db8cbba9192558666654f4254214b7
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.