More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 389 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20455346 | 69 days ago | IN | 0 ETH | 0.00009178 | ||||
Approve | 20425073 | 73 days ago | IN | 0 ETH | 0.00023602 | ||||
Transfer | 20425061 | 73 days ago | IN | 0 ETH | 0.00048361 | ||||
Approve | 17670378 | 459 days ago | IN | 0 ETH | 0.00072523 | ||||
Approve | 17085578 | 541 days ago | IN | 0 ETH | 0.00356033 | ||||
Approve | 17047305 | 547 days ago | IN | 0 ETH | 0.00125169 | ||||
Approve | 17025560 | 550 days ago | IN | 0 ETH | 0.00086938 | ||||
Approve | 17023379 | 550 days ago | IN | 0 ETH | 0.00104675 | ||||
Approve | 17020055 | 551 days ago | IN | 0 ETH | 0.00117682 | ||||
Approve | 17019049 | 551 days ago | IN | 0 ETH | 0.00130395 | ||||
Approve | 17019004 | 551 days ago | IN | 0 ETH | 0.00191236 | ||||
Approve | 17011383 | 552 days ago | IN | 0 ETH | 0.00055676 | ||||
Approve | 17006270 | 553 days ago | IN | 0 ETH | 0.00087421 | ||||
Approve | 17005354 | 553 days ago | IN | 0 ETH | 0.00275608 | ||||
Approve | 17003983 | 553 days ago | IN | 0 ETH | 0.0009298 | ||||
Approve | 17002034 | 553 days ago | IN | 0 ETH | 0.00105385 | ||||
Approve | 17000456 | 553 days ago | IN | 0 ETH | 0.00085961 | ||||
Approve | 16999820 | 553 days ago | IN | 0 ETH | 0.00136315 | ||||
Approve | 16999760 | 553 days ago | IN | 0 ETH | 0.00120271 | ||||
Approve | 16999127 | 554 days ago | IN | 0 ETH | 0.00077808 | ||||
Approve | 16999115 | 554 days ago | IN | 0 ETH | 0.00116094 | ||||
Approve | 16994953 | 554 days ago | IN | 0 ETH | 0.00058005 | ||||
Approve | 16991749 | 555 days ago | IN | 0 ETH | 0.00144034 | ||||
Approve | 16991269 | 555 days ago | IN | 0 ETH | 0.00127882 | ||||
Approve | 16991187 | 555 days ago | IN | 0 ETH | 0.00192335 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16976780 | 557 days ago | 0.74981305 ETH | ||||
16976780 | 557 days ago | 0.74981305 ETH | ||||
16976767 | 557 days ago | 0.37167809 ETH | ||||
16976767 | 557 days ago | 0.37167809 ETH | ||||
16976767 | 557 days ago | 0.39814559 ETH | ||||
16976767 | 557 days ago | 0.39814559 ETH | ||||
16976767 | 557 days ago | 0.42754624 ETH | ||||
16976767 | 557 days ago | 0.42754624 ETH | ||||
16976767 | 557 days ago | 0.46033022 ETH | ||||
16976767 | 557 days ago | 0.46033022 ETH | ||||
16976765 | 557 days ago | 0.42153375 ETH | ||||
16976765 | 557 days ago | 0.42153375 ETH | ||||
16976764 | 557 days ago | 0.45330168 ETH | ||||
16976764 | 557 days ago | 0.45330168 ETH | ||||
16976764 | 557 days ago | 0.49795828 ETH | ||||
16976764 | 557 days ago | 0.49795828 ETH | ||||
16976763 | 557 days ago | 0.53645181 ETH | ||||
16976763 | 557 days ago | 0.53645181 ETH | ||||
16976760 | 557 days ago | 0.49598665 ETH | ||||
16976760 | 557 days ago | 0.49598665 ETH | ||||
16976759 | 557 days ago | 0.55275791 ETH | ||||
16976759 | 557 days ago | 0.55275791 ETH | ||||
16976756 | 557 days ago | 0.59647006 ETH | ||||
16976756 | 557 days ago | 0.59647006 ETH | ||||
16976755 | 557 days ago | 0.65055452 ETH |
Loading...
Loading
Contract Name:
Vulpini
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-04 */ /* This is the contract for launch of Vulpini ($VULPI) token. LP burned at launch, 0 tax token, contract renounced! Author: @Arrnaya Website: https://vulpinitoken.com Twitter: https://twitter.com/Vulpinitoken Telegram: https://t.me/vulpiniofficial */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** This function will be used to generate the total supply * while deploying the contract * * This function can never be called again after deploying contract */ function _tokengeneration(address account, uint256 amount) internal virtual { _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0xdead), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; // _balances[address(0xdead)] += amount; } emit Transfer(account, address(0xdead), amount); _afterTokenTransfer(account, address(0xdead), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } contract Vulpini is ERC20, ERC20Burnable, Ownable { using Address for address payable; IRouter public router; address public pair; bool private _interlock = false; bool public providingLiquidity = true; uint256 public tokenLiquidityThreshold = 1_000_000 * 10**decimals(); uint256 public maxBuyLimit = 10_000_000 * 10**decimals(); uint256 public maxSellLimit = 5_000_000 * 10**decimals(); uint256 public maxWalletLimit = 20_000_000 * 10**decimals(); address public marketingWallet = 0x9752d8d9196C27e8C4bF1DB5131e7907a1B33985; address private vulpini = 0x1DB94C1b29b2D85674b3F8226197739A524b2cc7; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; uint256 burn; } Taxes public taxes = Taxes(20, 0, 0); Taxes public sellTaxes = Taxes(50, 0, 0); Taxes public transferTaxes = Taxes(0, 0, 0); mapping(address => bool) public exemptFee; modifier lockTheSwap() { if (!_interlock) { _interlock = true; _; _interlock = false; } } constructor() ERC20("VULPINI", "$VULPI") { _tokengeneration(msg.sender, 1_000_000_000 * 10**decimals()); exemptFee[msg.sender] = true; IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UNISWAP V2 address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; exemptFee[address(this)] = true; exemptFee[marketingWallet] = true; exemptFee[deadWallet] = true; exemptFee[vulpini] = true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); if (sender == pair && !exemptFee[recipient] && !_interlock) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (recipient != pair) { require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } uint256 feeswap; uint256 feesum; uint256 fee; uint256 feeBurn; uint256 burnAmount; Taxes memory currentTaxes; //set fee to zero if fees in contract are handled or exempted if (_interlock || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair) { feeswap = sellTaxes.liquidity + sellTaxes.marketing; feesum = feeswap; feeBurn = sellTaxes.burn; currentTaxes = sellTaxes; } else if (sender == pair) { feeswap = taxes.liquidity + taxes.marketing; feesum = feeswap; feeBurn = taxes.burn; currentTaxes = taxes; } else { feeswap = transferTaxes.liquidity + transferTaxes.marketing ; feesum = feeswap; feeBurn = transferTaxes.burn; currentTaxes = transferTaxes; } fee = (amount * feesum) / 100; burnAmount = (amount * feeBurn) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - (fee + burnAmount)); // burn the tokens if(burnAmount > 0) { super._burn(sender, burnAmount); } if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold require(new_amount <= 10_000_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens"); tokenLiquidityThreshold = new_amount * 10**decimals(); } function SetBuyTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { taxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 30, "Must keep fees at 30% or less"); } function SetSellTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { sellTaxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 100, "Must keep fees at 100% or less"); } function SetTransferTaxes( uint256 _marketing, uint256 _liquidity, uint256 _burn ) external onlyOwner { transferTaxes = Taxes(_marketing, _liquidity, _burn); require((_marketing + _liquidity + _burn) <= 10, "Must keep fees at 10% or less"); } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner { router = IRouter(newRouter); pair = newPair; } function updateWallets(address _marketingWallet) external { require(msg.sender == vulpini, "Not authorized!"); require(_marketingWallet != address(0),"Fee Address cannot be zero address"); marketingWallet = _marketingWallet; } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%"); require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%"); require(maxWallet >= 5_000_000, "Cannot set max wallet amount lower than 0.5%"); maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); maxWalletLimit = maxWallet * 10**decimals(); } function rescueERC20(address tokenAdd, uint256 amount) external { require(msg.sender == vulpini, "Not authorized!"); require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens"); IERC20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetTransferTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506200004a6200077360201b60201c565b600a62000058919062000a9a565b620f424062000068919062000aeb565b6008556200007b6200077360201b60201c565b600a62000089919062000a9a565b6298968062000099919062000aeb565b600955620000ac6200077360201b60201c565b600a620000ba919062000a9a565b624c4b40620000ca919062000aeb565b600a55620000dd6200077360201b60201c565b600a620000eb919062000a9a565b6301312d00620000fc919062000aeb565b600b55739752d8d9196c27e8c4bf1db5131e7907a1b33985600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731db94c1b29b2d85674b3f8226197739a524b2cc7600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806060016040528060148152602001600081526020016000815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806032815260200160008152602001600081525060116000820151816000015560208201518160010155604082015181600201555050604051806060016040528060008152602001600081526020016000815250601460008201518160000155602082015181600101556040820151816002015550503480156200027657600080fd5b506040518060400160405280600781526020017f56554c50494e49000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f2456554c504900000000000000000000000000000000000000000000000000008152508160039081620002f4919062000da6565b50806004908162000306919062000da6565b505050620003296200031d6200077c60201b60201c565b6200078460201b60201c565b62000369336200033e6200077360201b60201c565b600a6200034c919062000a9a565b633b9aca006200035d919062000aeb565b6200084a60201b60201c565b6001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000428573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044e919062000ef7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004dc919062000ef7565b6040518363ffffffff1660e01b8152600401620004fb92919062000f3a565b6020604051808303816000875af11580156200051b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000541919062000ef7565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000f95565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008f4919062000f78565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200098e5780860481111562000966576200096562000900565b5b6001851615620009765780820291505b808102905062000986856200092f565b945062000946565b94509492505050565b600082620009a9576001905062000a7c565b81620009b9576000905062000a7c565b8160018114620009d25760028114620009dd5762000a13565b600191505062000a7c565b60ff841115620009f257620009f162000900565b5b8360020a91508482111562000a0c5762000a0b62000900565b5b5062000a7c565b5060208310610133831016604e8410600b841016171562000a4d5782820a90508381111562000a475762000a4662000900565b5b62000a7c565b62000a5c84848460016200093c565b9250905081840481111562000a765762000a7562000900565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aa78262000a83565b915062000ab48362000a8d565b925062000ae37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000997565b905092915050565b600062000af88262000a83565b915062000b058362000a83565b925082820262000b158162000a83565b9150828204841483151762000b2f5762000b2e62000900565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bb857607f821691505b60208210810362000bce5762000bcd62000b70565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000bf9565b62000c44868362000bf9565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000c8762000c8162000c7b8462000a83565b62000c5c565b62000a83565b9050919050565b6000819050919050565b62000ca38362000c66565b62000cbb62000cb28262000c8e565b84845462000c06565b825550505050565b600090565b62000cd262000cc3565b62000cdf81848462000c98565b505050565b5b8181101562000d075762000cfb60008262000cc8565b60018101905062000ce5565b5050565b601f82111562000d565762000d208162000bd4565b62000d2b8462000be9565b8101602085101562000d3b578190505b62000d5362000d4a8562000be9565b83018262000ce4565b50505b505050565b600082821c905092915050565b600062000d7b6000198460080262000d5b565b1980831691505092915050565b600062000d96838362000d68565b9150826002028217905092915050565b62000db18262000b36565b67ffffffffffffffff81111562000dcd5762000dcc62000b41565b5b62000dd9825462000b9f565b62000de682828562000d0b565b600060209050601f83116001811462000e1e576000841562000e09578287015190505b62000e15858262000d88565b86555062000e85565b601f19841662000e2e8662000bd4565b60005b8281101562000e585784890151825560018201915060208501945060208101905062000e31565b8683101562000e78578489015162000e74601f89168262000d68565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ebf8262000e92565b9050919050565b62000ed18162000eb2565b811462000edd57600080fd5b50565b60008151905062000ef18162000ec6565b92915050565b60006020828403121562000f105762000f0f62000e8d565b5b600062000f208482850162000ee0565b91505092915050565b62000f348162000eb2565b82525050565b600060408201905062000f51600083018562000f29565b62000f60602083018462000f29565b9392505050565b62000f728162000a83565b82525050565b600060208201905062000f8f600083018462000f67565b92915050565b6149a28062000fa56000396000f3fe6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063e1b450ad1161006f578063e1b450ad1461082c578063f2fde38b14610855578063f66895a31461087e578063f887ea40146108ab578063fbe6324e146108d657610230565b8063a457c2d71461070d578063a8aa1b311461074a578063a9059cbb14610775578063c5d32bb2146107b2578063dd62ed3e146107ef57610230565b806379cc6790116100f257806379cc67901461063a57806385141a77146106635780638cd4426d1461068e5780638da5cb5b146106b757806395d89b41146106e257610230565b806370a082311461058e578063715018a6146105cb578063728f8eea146105e257806375f0a8741461060f57610230565b806339509351116101b15780634e736f22116101755780634e736f22146104b75780635331803c146104e0578063652e2f041461050d57806366a88d96146105385780636aa5b37f1461056357610230565b806339509351146103d657806340b28c2f1461041357806342966c681461043c57806342b6fa11146104655780634a2b3b131461048e57610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c578063244cffa5146103595780632851a5cf14610382578063313ce567146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780631340538f1461029d5780631675d802146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610901565b6040516102579190613066565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613121565b610993565b604051610294919061317c565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906131c3565b6109b1565b005b3480156102d257600080fd5b506102db610a4a565b6040516102e891906131ff565b60405180910390f35b3480156102fd57600080fd5b50610306610a50565b60405161031391906131ff565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061321a565b610a5a565b604051610350919061317c565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061326d565b610b5b565b005b34801561038e57600080fd5b506103a960048036038101906103a491906132c0565b610c74565b005b3480156103b757600080fd5b506103c0610db7565b6040516103cd9190613309565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613121565b610dc0565b60405161040a919061317c565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190613324565b610e6c565b005b34801561044857600080fd5b50610463600480360381019061045e9190613364565b610f6e565b005b34801561047157600080fd5b5061048c60048036038101906104879190613364565b610f82565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061326d565b611078565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061326d565b611191565b005b3480156104ec57600080fd5b506104f56112aa565b60405161050493929190613391565b60405180910390f35b34801561051957600080fd5b506105226112c2565b60405161052f91906131ff565b60405180910390f35b34801561054457600080fd5b5061054d6112c8565b60405161055a91906131ff565b60405180910390f35b34801561056f57600080fd5b506105786112ce565b60405161058591906131ff565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906132c0565b6112d4565b6040516105c291906131ff565b60405180910390f35b3480156105d757600080fd5b506105e061131c565b005b3480156105ee57600080fd5b506105f76113a4565b60405161060693929190613391565b60405180910390f35b34801561061b57600080fd5b506106246113bc565b60405161063191906133d7565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613121565b6113e2565b005b34801561066f57600080fd5b50610678611402565b60405161068591906133d7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613121565b611408565b005b3480156106c357600080fd5b506106cc611590565b6040516106d991906133d7565b60405180910390f35b3480156106ee57600080fd5b506106f76115ba565b6040516107049190613066565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190613121565b61164c565b604051610741919061317c565b60405180910390f35b34801561075657600080fd5b5061075f611740565b60405161076c91906133d7565b60405180910390f35b34801561078157600080fd5b5061079c60048036038101906107979190613121565b611766565b6040516107a9919061317c565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906132c0565b61177d565b6040516107e6919061317c565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190613324565b61179d565b60405161082391906131ff565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e919061326d565b611824565b005b34801561086157600080fd5b5061087c600480360381019061087791906132c0565b6119e6565b005b34801561088a57600080fd5b50610893611add565b6040516108a293929190613391565b60405180910390f35b3480156108b757600080fd5b506108c0611af5565b6040516108cd9190613451565b60405180910390f35b3480156108e257600080fd5b506108eb611b1b565b6040516108f8919061317c565b60405180910390f35b6060600380546109109061349b565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061349b565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a76109a0611b2e565b8484611b36565b6001905092915050565b6109b9611b2e565b73ffffffffffffffffffffffffffffffffffffffff166109d7611590565b73ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490613518565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b6000610a67848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab2611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b29906135aa565b60405180910390fd5b610b4f85610b3e611b2e565b8584610b4a91906135f9565b611b36565b60019150509392505050565b610b63611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610b81611590565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050600a818385610c24919061362d565b610c2e919061362d565b1115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906136ad565b60405180910390fd5b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613719565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906137ab565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000610e62610dcd611b2e565b848460016000610ddb611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5d919061362d565b611b36565b6001905092915050565b610e74611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e92611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613518565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610f7f610f79611b2e565b8261245c565b50565b610f8a611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fa8611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590613518565b60405180910390fd5b6298968081111580156110115750600081115b611050576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110479061383d565b60405180910390fd5b611058610db7565b600a6110649190613990565b8161106f91906139db565b60088190555050565b611080611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661109e611590565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90613518565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050601e818385611141919061362d565b61114b919061362d565b111561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613a69565b60405180910390fd5b505050565b611199611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111b7611590565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050606481838561125a919061362d565b611264919061362d565b11156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613ad5565b60405180910390fd5b505050565b60148060000154908060010154908060020154905083565b600a5481565b600b5481565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611324611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611342611590565b73ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613518565b60405180910390fd5b6113a2600061262c565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f4826113ee611b2e565b836126f2565b6113fe828261245c565b5050565b61dead81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613719565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613b67565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61152a611590565b836040518363ffffffff1660e01b8152600401611548929190613b87565b6020604051808303816000875af1158015611567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158b9190613bc5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115c99061349b565b80601f01602080910402602001604051908101604052809291908181526020018280546115f59061349b565b80156116425780601f1061161757610100808354040283529160200191611642565b820191906000526020600020905b81548152906001019060200180831161162557829003601f168201915b5050505050905090565b6000806001600061165b611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613c64565b60405180910390fd5b611735611723611b2e565b85858461173091906135f9565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611773338484611cff565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61182c611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661184a611590565b73ffffffffffffffffffffffffffffffffffffffff16146118a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189790613518565b60405180910390fd5b620f42408310156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613cf6565b60405180910390fd5b620f424082101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613d88565b60405180910390fd5b624c4b40811015611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613e1a565b60405180910390fd5b61197a610db7565b600a6119869190613990565b8361199191906139db565b60098190555061199f610db7565b600a6119ab9190613990565b826119b691906139db565b600a819055506119c4610db7565b600a6119d09190613990565b816119db91906139db565b600b81905550505050565b6119ee611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0c611590565b73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613518565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613eac565b60405180910390fd5b611ada8161262c565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613fd0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf291906131ff565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614062565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611de95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e025750600760149054906101000a900460ff16155b15611ea557600954811115611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906140ce565b60405180910390fd5b600b5481611e59846112d4565b611e63919061362d565b1115611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b9061413a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f4d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fa35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fbc5750600760149054906101000a900460ff16155b156120b557600a54811115612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd906141a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120b457600b5481612068846112d4565b612072919061362d565b11156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9061413a565b60405180910390fd5b5b5b60008060008060006120c5612fb5565b600760149054906101000a900460ff16806121295750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061217d5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561218b5760009350612332565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612235576011600001546011600101546121f6919061362d565b95508594506011600201549250601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612331565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036122df57600e60000154600e600101546122a0919061362d565b9550859450600e600201549250600e60405180606001604052908160008201548152602001600182015481526020016002820154815250509050612330565b6014600001546014600101546122f5919061362d565b955085945060146002015492506014604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064858861234091906139db565b61234a91906141f5565b93506064838861235a91906139db565b61236491906141f5565b9150600760159054906101000a900460ff1680156123d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156123e0576123df868261277e565b5b612401898984876123f1919061362d565b8a6123fc91906135f9565b612922565b600082111561241557612414898361245c565b5b60008411156124515760008611156124505760006064878961243791906139db565b61244191906141f5565b905061244e8a3083612922565b505b5b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614298565b60405180910390fd5b6124d88261dead83612b94565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125559061432a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254039250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261291906131ff565b60405180910390a36126278361dead84612b99565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126fe848461179d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612778578181101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614396565b60405180910390fd5b6127778484848403611b36565b5b50505050565b600760149054906101000a900460ff1661291e576001600760146101000a81548160ff02191690831515021790555060008203156129025760006127c1306112d4565b9050600854811061290057600160085411156127dd5760085490505b60006002846127ec91906139db565b905060008184602001518461280191906139db565b61280b91906141f5565b90506000818461281b91906135f9565b9050600047905061282b82612b9e565b6000814761283991906135f9565b9050600087602001518661284d91906135f9565b8261285891906141f5565b9050600088602001518261286c91906139db565b90506000811115612882576128818682612de1565b5b6000896000015160028461289691906139db565b6128a091906139db565b905060008111156128f7576128f681600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ec190919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298890614428565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f7906144ba565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d9061454c565b60405180910390fd5b8181612a9291906135f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b22919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b8691906131ff565b60405180910390a350505050565b505050565b505050565b6000600267ffffffffffffffff811115612bbb57612bba61456c565b5b604051908082528060200260200182016040528015612be95781602001602082028036833780820191505090505b5090503081600081518110612c0157612c0061459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ccc91906145df565b81600181518110612ce057612cdf61459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dab959493929190614705565b600060405180830381600087803b158015612dc557600080fd5b505af1158015612dd9573d6000803e3d6000fd5b505050505050565b612e0e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e779695949392919061475f565b60606040518083038185885af1158015612e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eba91906147d5565b5050505050565b80471015612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb90614874565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f2a906148c5565b60006040518083038185875af1925050503d8060008114612f67576040519150601f19603f3d011682016040523d82523d6000602084013e612f6c565b606091505b5050905080612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa79061494c565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613010578082015181840152602081019050612ff5565b60008484015250505050565b6000601f19601f8301169050919050565b600061303882612fd6565b6130428185612fe1565b9350613052818560208601612ff2565b61305b8161301c565b840191505092915050565b60006020820190508181036000830152613080818461302d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130b88261308d565b9050919050565b6130c8816130ad565b81146130d357600080fd5b50565b6000813590506130e5816130bf565b92915050565b6000819050919050565b6130fe816130eb565b811461310957600080fd5b50565b60008135905061311b816130f5565b92915050565b6000806040838503121561313857613137613088565b5b6000613146858286016130d6565b92505060206131578582860161310c565b9150509250929050565b60008115159050919050565b61317681613161565b82525050565b6000602082019050613191600083018461316d565b92915050565b6131a081613161565b81146131ab57600080fd5b50565b6000813590506131bd81613197565b92915050565b6000602082840312156131d9576131d8613088565b5b60006131e7848285016131ae565b91505092915050565b6131f9816130eb565b82525050565b600060208201905061321460008301846131f0565b92915050565b60008060006060848603121561323357613232613088565b5b6000613241868287016130d6565b9350506020613252868287016130d6565b92505060406132638682870161310c565b9150509250925092565b60008060006060848603121561328657613285613088565b5b60006132948682870161310c565b93505060206132a58682870161310c565b92505060406132b68682870161310c565b9150509250925092565b6000602082840312156132d6576132d5613088565b5b60006132e4848285016130d6565b91505092915050565b600060ff82169050919050565b613303816132ed565b82525050565b600060208201905061331e60008301846132fa565b92915050565b6000806040838503121561333b5761333a613088565b5b6000613349858286016130d6565b925050602061335a858286016130d6565b9150509250929050565b60006020828403121561337a57613379613088565b5b60006133888482850161310c565b91505092915050565b60006060820190506133a660008301866131f0565b6133b360208301856131f0565b6133c060408301846131f0565b949350505050565b6133d1816130ad565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b6000819050919050565b600061341761341261340d8461308d565b6133f2565b61308d565b9050919050565b6000613429826133fc565b9050919050565b600061343b8261341e565b9050919050565b61344b81613430565b82525050565b60006020820190506134666000830184613442565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134b357607f821691505b6020821081036134c6576134c561346c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613502602083612fe1565b915061350d826134cc565b602082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613594602883612fe1565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613604826130eb565b915061360f836130eb565b9250828203905081811115613627576136266135ca565b5b92915050565b6000613638826130eb565b9150613643836130eb565b925082820190508082111561365b5761365a6135ca565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613697601d83612fe1565b91506136a282613661565b602082019050919050565b600060208201905081810360008301526136c68161368a565b9050919050565b7f4e6f7420617574686f72697a6564210000000000000000000000000000000000600082015250565b6000613703600f83612fe1565b915061370e826136cd565b602082019050919050565b60006020820190508181036000830152613732816136f6565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602283612fe1565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e730000602082015250565b6000613827603e83612fe1565b9150613832826137cb565b604082019050919050565b600060208201905081810360008301526138568161381a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138b4578086048111156138905761388f6135ca565b5b600185161561389f5780820291505b80810290506138ad8561385d565b9450613874565b94509492505050565b6000826138cd5760019050613989565b816138db5760009050613989565b81600181146138f157600281146138fb5761392a565b6001915050613989565b60ff84111561390d5761390c6135ca565b5b8360020a915084821115613924576139236135ca565b5b50613989565b5060208310610133831016604e8410600b841016171561395f5782820a90508381111561395a576139596135ca565b5b613989565b61396c848484600161386a565b92509050818404811115613983576139826135ca565b5b81810290505b9392505050565b600061399b826130eb565b91506139a6836132ed565b92506139d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138bd565b905092915050565b60006139e6826130eb565b91506139f1836130eb565b92508282026139ff816130eb565b91508282048414831517613a1657613a156135ca565b5b5092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613a53601d83612fe1565b9150613a5e82613a1d565b602082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613abf601e83612fe1565b9150613aca82613a89565b602082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613b51603683612fe1565b9150613b5c82613af5565b604082019050919050565b60006020820190508181036000830152613b8081613b44565b9050919050565b6000604082019050613b9c60008301856133c8565b613ba960208301846131f0565b9392505050565b600081519050613bbf81613197565b92915050565b600060208284031215613bdb57613bda613088565b5b6000613be984828501613bb0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c4e602583612fe1565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ce0602983612fe1565b9150613ceb82613c84565b604082019050919050565b60006020820190508181036000830152613d0f81613cd3565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000613d72602a83612fe1565b9150613d7d82613d16565b604082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000613e04602c83612fe1565b9150613e0f82613da8565b604082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e96602683612fe1565b9150613ea182613e3a565b604082019050919050565b60006020820190508181036000830152613ec581613e89565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f28602483612fe1565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fba602283612fe1565b9150613fc582613f5e565b604082019050919050565b60006020820190508181036000830152613fe981613fad565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061404c602983612fe1565b915061405782613ff0565b604082019050919050565b6000602082019050818103600083015261407b8161403f565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006140b8601d83612fe1565b91506140c382614082565b602082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000614124602083612fe1565b915061412f826140ee565b602082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b6000614190601e83612fe1565b915061419b8261415a565b602082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614200826130eb565b915061420b836130eb565b92508261421b5761421a6141c6565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614282602183612fe1565b915061428d82614226565b604082019050919050565b600060208201905081810360008301526142b181614275565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614314602283612fe1565b915061431f826142b8565b604082019050919050565b6000602082019050818103600083015261434381614307565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614380601d83612fe1565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614412602583612fe1565b915061441d826143b6565b604082019050919050565b6000602082019050818103600083015261444181614405565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144a4602383612fe1565b91506144af82614448565b604082019050919050565b600060208201905081810360008301526144d381614497565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614536602683612fe1565b9150614541826144da565b604082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506145d9816130bf565b92915050565b6000602082840312156145f5576145f4613088565b5b6000614603848285016145ca565b91505092915050565b6000819050919050565b600061463161462c6146278461460c565b6133f2565b6130eb565b9050919050565b61464181614616565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61467c816130ad565b82525050565b600061468e8383614673565b60208301905092915050565b6000602082019050919050565b60006146b282614647565b6146bc8185614652565b93506146c783614663565b8060005b838110156146f85781516146df8882614682565b97506146ea8361469a565b9250506001810190506146cb565b5085935050505092915050565b600060a08201905061471a60008301886131f0565b6147276020830187614638565b818103604083015261473981866146a7565b905061474860608301856133c8565b61475560808301846131f0565b9695505050505050565b600060c08201905061477460008301896133c8565b61478160208301886131f0565b61478e6040830187614638565b61479b6060830186614638565b6147a860808301856133c8565b6147b560a08301846131f0565b979650505050505050565b6000815190506147cf816130f5565b92915050565b6000806000606084860312156147ee576147ed613088565b5b60006147fc868287016147c0565b935050602061480d868287016147c0565b925050604061481e868287016147c0565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061485e601d83612fe1565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b600081905092915050565b50565b60006148af600083614894565b91506148ba8261489f565b600082019050919050565b60006148d0826148a2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614936603a83612fe1565b9150614941826148da565b604082019050919050565b6000602082019050818103600083015261496581614929565b905091905056fea2646970667358221220ea4acad8fd36696ad7863fa7c66fe42d18043604fb7d0858f15b05c194cbafa064736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806370a0823111610123578063a457c2d7116100ab578063e1b450ad1161006f578063e1b450ad1461082c578063f2fde38b14610855578063f66895a31461087e578063f887ea40146108ab578063fbe6324e146108d657610230565b8063a457c2d71461070d578063a8aa1b311461074a578063a9059cbb14610775578063c5d32bb2146107b2578063dd62ed3e146107ef57610230565b806379cc6790116100f257806379cc67901461063a57806385141a77146106635780638cd4426d1461068e5780638da5cb5b146106b757806395d89b41146106e257610230565b806370a082311461058e578063715018a6146105cb578063728f8eea146105e257806375f0a8741461060f57610230565b806339509351116101b15780634e736f22116101755780634e736f22146104b75780635331803c146104e0578063652e2f041461050d57806366a88d96146105385780636aa5b37f1461056357610230565b806339509351146103d657806340b28c2f1461041357806342966c681461043c57806342b6fa11146104655780634a2b3b131461048e57610230565b806318160ddd116101f857806318160ddd146102f157806323b872dd1461031c578063244cffa5146103595780632851a5cf14610382578063313ce567146103ab57610230565b806306fdde0314610235578063095ea7b3146102605780631340538f1461029d5780631675d802146102c657610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a610901565b6040516102579190613066565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613121565b610993565b604051610294919061317c565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906131c3565b6109b1565b005b3480156102d257600080fd5b506102db610a4a565b6040516102e891906131ff565b60405180910390f35b3480156102fd57600080fd5b50610306610a50565b60405161031391906131ff565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e919061321a565b610a5a565b604051610350919061317c565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061326d565b610b5b565b005b34801561038e57600080fd5b506103a960048036038101906103a491906132c0565b610c74565b005b3480156103b757600080fd5b506103c0610db7565b6040516103cd9190613309565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190613121565b610dc0565b60405161040a919061317c565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190613324565b610e6c565b005b34801561044857600080fd5b50610463600480360381019061045e9190613364565b610f6e565b005b34801561047157600080fd5b5061048c60048036038101906104879190613364565b610f82565b005b34801561049a57600080fd5b506104b560048036038101906104b0919061326d565b611078565b005b3480156104c357600080fd5b506104de60048036038101906104d9919061326d565b611191565b005b3480156104ec57600080fd5b506104f56112aa565b60405161050493929190613391565b60405180910390f35b34801561051957600080fd5b506105226112c2565b60405161052f91906131ff565b60405180910390f35b34801561054457600080fd5b5061054d6112c8565b60405161055a91906131ff565b60405180910390f35b34801561056f57600080fd5b506105786112ce565b60405161058591906131ff565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b091906132c0565b6112d4565b6040516105c291906131ff565b60405180910390f35b3480156105d757600080fd5b506105e061131c565b005b3480156105ee57600080fd5b506105f76113a4565b60405161060693929190613391565b60405180910390f35b34801561061b57600080fd5b506106246113bc565b60405161063191906133d7565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190613121565b6113e2565b005b34801561066f57600080fd5b50610678611402565b60405161068591906133d7565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190613121565b611408565b005b3480156106c357600080fd5b506106cc611590565b6040516106d991906133d7565b60405180910390f35b3480156106ee57600080fd5b506106f76115ba565b6040516107049190613066565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190613121565b61164c565b604051610741919061317c565b60405180910390f35b34801561075657600080fd5b5061075f611740565b60405161076c91906133d7565b60405180910390f35b34801561078157600080fd5b5061079c60048036038101906107979190613121565b611766565b6040516107a9919061317c565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906132c0565b61177d565b6040516107e6919061317c565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190613324565b61179d565b60405161082391906131ff565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e919061326d565b611824565b005b34801561086157600080fd5b5061087c600480360381019061087791906132c0565b6119e6565b005b34801561088a57600080fd5b50610893611add565b6040516108a293929190613391565b60405180910390f35b3480156108b757600080fd5b506108c0611af5565b6040516108cd9190613451565b60405180910390f35b3480156108e257600080fd5b506108eb611b1b565b6040516108f8919061317c565b60405180910390f35b6060600380546109109061349b565b80601f016020809104026020016040519081016040528092919081815260200182805461093c9061349b565b80156109895780601f1061095e57610100808354040283529160200191610989565b820191906000526020600020905b81548152906001019060200180831161096c57829003601f168201915b5050505050905090565b60006109a76109a0611b2e565b8484611b36565b6001905092915050565b6109b9611b2e565b73ffffffffffffffffffffffffffffffffffffffff166109d7611590565b73ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490613518565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b6000600254905090565b6000610a67848484611cff565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ab2611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b29906135aa565b60405180910390fd5b610b4f85610b3e611b2e565b8584610b4a91906135f9565b611b36565b60019150509392505050565b610b63611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610b81611590565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506014600082015181600001556020820151816001015560408201518160020155905050600a818385610c24919061362d565b610c2e919061362d565b1115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906136ad565b60405180910390fd5b505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfb90613719565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906137ab565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b6000610e62610dcd611b2e565b848460016000610ddb611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5d919061362d565b611b36565b6001905092915050565b610e74611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610e92611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edf90613518565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610f7f610f79611b2e565b8261245c565b50565b610f8a611b2e565b73ffffffffffffffffffffffffffffffffffffffff16610fa8611590565b73ffffffffffffffffffffffffffffffffffffffff1614610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590613518565b60405180910390fd5b6298968081111580156110115750600081115b611050576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110479061383d565b60405180910390fd5b611058610db7565b600a6110649190613990565b8161106f91906139db565b60088190555050565b611080611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661109e611590565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90613518565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e600082015181600001556020820151816001015560408201518160020155905050601e818385611141919061362d565b61114b919061362d565b111561118c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118390613a69565b60405180910390fd5b505050565b611199611b2e565b73ffffffffffffffffffffffffffffffffffffffff166111b7611590565b73ffffffffffffffffffffffffffffffffffffffff161461120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120490613518565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506011600082015181600001556020820151816001015560408201518160020155905050606481838561125a919061362d565b611264919061362d565b11156112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613ad5565b60405180910390fd5b505050565b60148060000154908060010154908060020154905083565b600a5481565b600b5481565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611324611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611342611590565b73ffffffffffffffffffffffffffffffffffffffff1614611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138f90613518565b60405180910390fd5b6113a2600061262c565b565b600e8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113f4826113ee611b2e565b836126f2565b6113fe828261245c565b5050565b61dead81565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148f90613719565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90613b67565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61152a611590565b836040518363ffffffff1660e01b8152600401611548929190613b87565b6020604051808303816000875af1158015611567573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158b9190613bc5565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546115c99061349b565b80601f01602080910402602001604051908101604052809291908181526020018280546115f59061349b565b80156116425780601f1061161757610100808354040283529160200191611642565b820191906000526020600020905b81548152906001019060200180831161162557829003601f168201915b5050505050905090565b6000806001600061165b611b2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90613c64565b60405180910390fd5b611735611723611b2e565b85858461173091906135f9565b611b36565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611773338484611cff565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61182c611b2e565b73ffffffffffffffffffffffffffffffffffffffff1661184a611590565b73ffffffffffffffffffffffffffffffffffffffff16146118a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189790613518565b60405180910390fd5b620f42408310156118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd90613cf6565b60405180910390fd5b620f424082101561192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613d88565b60405180910390fd5b624c4b40811015611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990613e1a565b60405180910390fd5b61197a610db7565b600a6119869190613990565b8361199191906139db565b60098190555061199f610db7565b600a6119ab9190613990565b826119b691906139db565b600a819055506119c4610db7565b600a6119d09190613990565b816119db91906139db565b600b81905550505050565b6119ee611b2e565b73ffffffffffffffffffffffffffffffffffffffff16611a0c611590565b73ffffffffffffffffffffffffffffffffffffffff1614611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5990613518565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac890613eac565b60405180910390fd5b611ada8161262c565b50565b60118060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f3e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0b90613fd0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cf291906131ff565b60405180910390a3505050565b60008111611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614062565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611de95750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e025750600760149054906101000a900460ff16155b15611ea557600954811115611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e43906140ce565b60405180910390fd5b600b5481611e59846112d4565b611e63919061362d565b1115611ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9b9061413a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f4d5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fa35750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fbc5750600760149054906101000a900460ff16155b156120b557600a54811115612006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffd906141a6565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120b457600b5481612068846112d4565b612072919061362d565b11156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa9061413a565b60405180910390fd5b5b5b60008060008060006120c5612fb5565b600760149054906101000a900460ff16806121295750601760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061217d5750601760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561218b5760009350612332565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603612235576011600001546011600101546121f6919061362d565b95508594506011600201549250601160405180606001604052908160008201548152602001600182015481526020016002820154815250509050612331565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036122df57600e60000154600e600101546122a0919061362d565b9550859450600e600201549250600e60405180606001604052908160008201548152602001600182015481526020016002820154815250509050612330565b6014600001546014600101546122f5919061362d565b955085945060146002015492506014604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b5b5b6064858861234091906139db565b61234a91906141f5565b93506064838861235a91906139db565b61236491906141f5565b9150600760159054906101000a900460ff1680156123d05750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b156123e0576123df868261277e565b5b612401898984876123f1919061362d565b8a6123fc91906135f9565b612922565b600082111561241557612414898361245c565b5b60008411156124515760008611156124505760006064878961243791906139db565b61244191906141f5565b905061244e8a3083612922565b505b5b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c290614298565b60405180910390fd5b6124d88261dead83612b94565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561255e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125559061432a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254039250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161261291906131ff565b60405180910390a36126278361dead84612b99565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126fe848461179d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612778578181101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276190614396565b60405180910390fd5b6127778484848403611b36565b5b50505050565b600760149054906101000a900460ff1661291e576001600760146101000a81548160ff02191690831515021790555060008203156129025760006127c1306112d4565b9050600854811061290057600160085411156127dd5760085490505b60006002846127ec91906139db565b905060008184602001518461280191906139db565b61280b91906141f5565b90506000818461281b91906135f9565b9050600047905061282b82612b9e565b6000814761283991906135f9565b9050600087602001518661284d91906135f9565b8261285891906141f5565b9050600088602001518261286c91906139db565b90506000811115612882576128818682612de1565b5b6000896000015160028461289691906139db565b6128a091906139db565b905060008111156128f7576128f681600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ec190919063ffffffff16565b5b50505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298890614428565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f7906144ba565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d9061454c565b60405180910390fd5b8181612a9291906135f9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b22919061362d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b8691906131ff565b60405180910390a350505050565b505050565b505050565b6000600267ffffffffffffffff811115612bbb57612bba61456c565b5b604051908082528060200260200182016040528015612be95781602001602082028036833780820191505090505b5090503081600081518110612c0157612c0061459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ccc91906145df565b81600181518110612ce057612cdf61459b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d4730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dab959493929190614705565b600060405180830381600087803b158015612dc557600080fd5b505af1158015612dd9573d6000803e3d6000fd5b505050505050565b612e0e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b36565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612e779695949392919061475f565b60606040518083038185885af1158015612e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eba91906147d5565b5050505050565b80471015612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb90614874565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f2a906148c5565b60006040518083038185875af1925050503d8060008114612f67576040519150601f19603f3d011682016040523d82523d6000602084013e612f6c565b606091505b5050905080612fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa79061494c565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613010578082015181840152602081019050612ff5565b60008484015250505050565b6000601f19601f8301169050919050565b600061303882612fd6565b6130428185612fe1565b9350613052818560208601612ff2565b61305b8161301c565b840191505092915050565b60006020820190508181036000830152613080818461302d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130b88261308d565b9050919050565b6130c8816130ad565b81146130d357600080fd5b50565b6000813590506130e5816130bf565b92915050565b6000819050919050565b6130fe816130eb565b811461310957600080fd5b50565b60008135905061311b816130f5565b92915050565b6000806040838503121561313857613137613088565b5b6000613146858286016130d6565b92505060206131578582860161310c565b9150509250929050565b60008115159050919050565b61317681613161565b82525050565b6000602082019050613191600083018461316d565b92915050565b6131a081613161565b81146131ab57600080fd5b50565b6000813590506131bd81613197565b92915050565b6000602082840312156131d9576131d8613088565b5b60006131e7848285016131ae565b91505092915050565b6131f9816130eb565b82525050565b600060208201905061321460008301846131f0565b92915050565b60008060006060848603121561323357613232613088565b5b6000613241868287016130d6565b9350506020613252868287016130d6565b92505060406132638682870161310c565b9150509250925092565b60008060006060848603121561328657613285613088565b5b60006132948682870161310c565b93505060206132a58682870161310c565b92505060406132b68682870161310c565b9150509250925092565b6000602082840312156132d6576132d5613088565b5b60006132e4848285016130d6565b91505092915050565b600060ff82169050919050565b613303816132ed565b82525050565b600060208201905061331e60008301846132fa565b92915050565b6000806040838503121561333b5761333a613088565b5b6000613349858286016130d6565b925050602061335a858286016130d6565b9150509250929050565b60006020828403121561337a57613379613088565b5b60006133888482850161310c565b91505092915050565b60006060820190506133a660008301866131f0565b6133b360208301856131f0565b6133c060408301846131f0565b949350505050565b6133d1816130ad565b82525050565b60006020820190506133ec60008301846133c8565b92915050565b6000819050919050565b600061341761341261340d8461308d565b6133f2565b61308d565b9050919050565b6000613429826133fc565b9050919050565b600061343b8261341e565b9050919050565b61344b81613430565b82525050565b60006020820190506134666000830184613442565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806134b357607f821691505b6020821081036134c6576134c561346c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613502602083612fe1565b915061350d826134cc565b602082019050919050565b60006020820190508181036000830152613531816134f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613594602883612fe1565b915061359f82613538565b604082019050919050565b600060208201905081810360008301526135c381613587565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613604826130eb565b915061360f836130eb565b9250828203905081811115613627576136266135ca565b5b92915050565b6000613638826130eb565b9150613643836130eb565b925082820190508082111561365b5761365a6135ca565b5b92915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b6000613697601d83612fe1565b91506136a282613661565b602082019050919050565b600060208201905081810360008301526136c68161368a565b9050919050565b7f4e6f7420617574686f72697a6564210000000000000000000000000000000000600082015250565b6000613703600f83612fe1565b915061370e826136cd565b602082019050919050565b60006020820190508181036000830152613732816136f6565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602283612fe1565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060008201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e730000602082015250565b6000613827603e83612fe1565b9150613832826137cb565b604082019050919050565b600060208201905081810360008301526138568161381a565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156138b4578086048111156138905761388f6135ca565b5b600185161561389f5780820291505b80810290506138ad8561385d565b9450613874565b94509492505050565b6000826138cd5760019050613989565b816138db5760009050613989565b81600181146138f157600281146138fb5761392a565b6001915050613989565b60ff84111561390d5761390c6135ca565b5b8360020a915084821115613924576139236135ca565b5b50613989565b5060208310610133831016604e8410600b841016171561395f5782820a90508381111561395a576139596135ca565b5b613989565b61396c848484600161386a565b92509050818404811115613983576139826135ca565b5b81810290505b9392505050565b600061399b826130eb565b91506139a6836132ed565b92506139d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846138bd565b905092915050565b60006139e6826130eb565b91506139f1836130eb565b92508282026139ff816130eb565b91508282048414831517613a1657613a156135ca565b5b5092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613a53601d83612fe1565b9150613a5e82613a1d565b602082019050919050565b60006020820190508181036000830152613a8281613a46565b9050919050565b7f4d757374206b65657020666565732061742031303025206f72206c6573730000600082015250565b6000613abf601e83612fe1565b9150613aca82613a89565b602082019050919050565b60006020820190508181036000830152613aee81613ab2565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c60008201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b6000613b51603683612fe1565b9150613b5c82613af5565b604082019050919050565b60006020820190508181036000830152613b8081613b44565b9050919050565b6000604082019050613b9c60008301856133c8565b613ba960208301846131f0565b9392505050565b600081519050613bbf81613197565b92915050565b600060208284031215613bdb57613bda613088565b5b6000613be984828501613bb0565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613c4e602583612fe1565b9150613c5982613bf2565b604082019050919050565b60006020820190508181036000830152613c7d81613c41565b9050919050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000613ce0602983612fe1565b9150613ceb82613c84565b604082019050919050565b60006020820190508181036000830152613d0f81613cd3565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000613d72602a83612fe1565b9150613d7d82613d16565b604082019050919050565b60006020820190508181036000830152613da181613d65565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e35250000000000000000000000000000000000000000602082015250565b6000613e04602c83612fe1565b9150613e0f82613da8565b604082019050919050565b60006020820190508181036000830152613e3381613df7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e96602683612fe1565b9150613ea182613e3a565b604082019050919050565b60006020820190508181036000830152613ec581613e89565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f28602483612fe1565b9150613f3382613ecc565b604082019050919050565b60006020820190508181036000830152613f5781613f1b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fba602283612fe1565b9150613fc582613f5e565b604082019050919050565b60006020820190508181036000830152613fe981613fad565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061404c602983612fe1565b915061405782613ff0565b604082019050919050565b6000602082019050818103600083015261407b8161403f565b9050919050565b7f596f752061726520657863656564696e67206d61784275794c696d6974000000600082015250565b60006140b8601d83612fe1565b91506140c382614082565b602082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000614124602083612fe1565b915061412f826140ee565b602082019050919050565b6000602082019050818103600083015261415381614117565b9050919050565b7f596f752061726520657863656564696e67206d617853656c6c4c696d69740000600082015250565b6000614190601e83612fe1565b915061419b8261415a565b602082019050919050565b600060208201905081810360008301526141bf81614183565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614200826130eb565b915061420b836130eb565b92508261421b5761421a6141c6565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614282602183612fe1565b915061428d82614226565b604082019050919050565b600060208201905081810360008301526142b181614275565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614314602283612fe1565b915061431f826142b8565b604082019050919050565b6000602082019050818103600083015261434381614307565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614380601d83612fe1565b915061438b8261434a565b602082019050919050565b600060208201905081810360008301526143af81614373565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614412602583612fe1565b915061441d826143b6565b604082019050919050565b6000602082019050818103600083015261444181614405565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144a4602383612fe1565b91506144af82614448565b604082019050919050565b600060208201905081810360008301526144d381614497565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614536602683612fe1565b9150614541826144da565b604082019050919050565b6000602082019050818103600083015261456581614529565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506145d9816130bf565b92915050565b6000602082840312156145f5576145f4613088565b5b6000614603848285016145ca565b91505092915050565b6000819050919050565b600061463161462c6146278461460c565b6133f2565b6130eb565b9050919050565b61464181614616565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61467c816130ad565b82525050565b600061468e8383614673565b60208301905092915050565b6000602082019050919050565b60006146b282614647565b6146bc8185614652565b93506146c783614663565b8060005b838110156146f85781516146df8882614682565b97506146ea8361469a565b9250506001810190506146cb565b5085935050505092915050565b600060a08201905061471a60008301886131f0565b6147276020830187614638565b818103604083015261473981866146a7565b905061474860608301856133c8565b61475560808301846131f0565b9695505050505050565b600060c08201905061477460008301896133c8565b61478160208301886131f0565b61478e6040830187614638565b61479b6060830186614638565b6147a860808301856133c8565b6147b560a08301846131f0565b979650505050505050565b6000815190506147cf816130f5565b92915050565b6000806000606084860312156147ee576147ed613088565b5b60006147fc868287016147c0565b935050602061480d868287016147c0565b925050604061481e868287016147c0565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061485e601d83612fe1565b915061486982614828565b602082019050919050565b6000602082019050818103600083015261488d81614851565b9050919050565b600081905092915050565b50565b60006148af600083614894565b91506148ba8261489f565b600082019050919050565b60006148d0826148a2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614936603a83612fe1565b9150614941826148da565b604082019050919050565b6000602082019050818103600083015261496581614929565b905091905056fea2646970667358221220ea4acad8fd36696ad7863fa7c66fe42d18043604fb7d0858f15b05c194cbafa064736f6c63430008130033
Deployed Bytecode Sourcemap
16155:11234:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17935:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24715:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16394:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3773:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18104:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25782:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26251:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3615:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18560:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26088:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15574:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24875:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25188:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25482:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17102:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16531:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16594:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16468:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3944:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13858:94;;;;;;;;;;;;;:::i;:::-;;17012:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16662:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15984:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16816:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27043:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13635:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2872:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18816:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16282:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19234:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17154:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4563:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26517:518;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13960:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17055:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;16254:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16348:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2653:100;2707:13;2740:5;2733:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2653:100;:::o;17935:161::-;18010:4;18027:39;18036:12;:10;:12::i;:::-;18050:7;18059:6;18027:8;:39::i;:::-;18084:4;18077:11;;17935:161;;;;:::o;24715:152::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24854:5:::1;24833:18;;:26;;;;;;;;;;;;;;;;;;24715:152:::0;:::o;16394:67::-;;;;:::o;3773:108::-;3834:7;3861:12;;3854:19;;3773:108;:::o;18104:448::-;18236:4;18253:36;18263:6;18271:9;18282:6;18253:9;:36::i;:::-;18302:24;18329:11;:19;18341:6;18329:19;;;;;;;;;;;;;;;:33;18349:12;:10;:12::i;:::-;18329:33;;;;;;;;;;;;;;;;18302:60;;18401:6;18381:16;:26;;18373:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18463:57;18472:6;18480:12;:10;:12::i;:::-;18513:6;18494:16;:25;;;;:::i;:::-;18463:8;:57::i;:::-;18540:4;18533:11;;;18104:448;;;;;:::o;25782:298::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25943:37:::1;;;;;;;;25949:10;25943:37;;;;25961:10;25943:37;;;;25974:5;25943:37;;::::0;25927:13:::1;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;26036:2;26026:5;26013:10;26000;:23;;;;:::i;:::-;:31;;;;:::i;:::-;25999:39;;25991:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25782:298:::0;;;:::o;26251:258::-;26342:7;;;;;;;;;;;26328:21;;:10;:21;;;26320:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26416:1;26388:30;;:16;:30;;;26380:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26485:16;26467:15;;:34;;;;;;;;;;;;;;;;;;26251:258;:::o;3615:93::-;3673:5;3698:2;3691:9;;3615:93;:::o;18560:248::-;18676:4;18698:80;18707:12;:10;:12::i;:::-;18721:7;18767:10;18730:11;:25;18742:12;:10;:12::i;:::-;18730:25;;;;;;;;;;;;;;;:34;18756:7;18730:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;18698:8;:80::i;:::-;18796:4;18789:11;;18560:248;;;;:::o;26088:155::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26200:9:::1;26183:6;;:27;;;;;;;;;;;;;;;;;;26228:7;26221:4;;:14;;;;;;;;;;;;;;;;;;26088:155:::0;;:::o;15574:91::-;15630:27;15636:12;:10;:12::i;:::-;15650:6;15630:5;:27::i;:::-;15574:91;:::o;24875:305::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25013:10:::1;24999;:24;;:42;;;;;25040:1;25027:10;:14;24999:42;24991:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;25162:10;:8;:10::i;:::-;25158:2;:14;;;;:::i;:::-;25145:10;:27;;;;:::i;:::-;25119:23;:53;;;;24875:305:::0;:::o;25188:286::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25336:37:::1;;;;;;;;25342:10;25336:37;;;;25354:10;25336:37;;;;25367:5;25336:37;;::::0;25328:5:::1;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;25430:2;25420:5;25406:10;25393;:23;;;;:::i;:::-;:32;;;;:::i;:::-;25392:40;;25384:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;25188:286:::0;;;:::o;25482:292::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25635:37:::1;;;;;;;;25641:10;25635:37;;;;25653:10;25635:37;;;;25666:5;25635:37;;::::0;25623:9:::1;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;25728:3;25718:5;25705:10;25692;:23;;;;:::i;:::-;:31;;;;:::i;:::-;25691:40;;25683:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25482:292:::0;;;:::o;17102:43::-;;;;;;;;;;;;;;;;;;;:::o;16531:56::-;;;;:::o;16594:59::-;;;;:::o;16468:56::-;;;;:::o;3944:127::-;4018:7;4045:9;:18;4055:7;4045:18;;;;;;;;;;;;;;;;4038:25;;3944:127;;;:::o;13858:94::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13923:21:::1;13941:1;13923:9;:21::i;:::-;13858:94::o:0;17012:36::-;;;;;;;;;;;;;;;;;;;:::o;16662:75::-;;;;;;;;;;;;;:::o;15984:164::-;16061:46;16077:7;16086:12;:10;:12::i;:::-;16100:6;16061:15;:46::i;:::-;16118:22;16124:7;16133:6;16118:5;:22::i;:::-;15984:164;;:::o;16816:79::-;16853:42;16816:79;:::o;27043:288::-;27140:7;;;;;;;;;;;27126:21;;:10;:21;;;27118:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;27206:4;27186:25;;:8;:25;;;27178:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;27288:8;27281:25;;;27307:7;:5;:7::i;:::-;27316:6;27281:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27043:288;;:::o;13635:87::-;13681:7;13708:6;;;;;;;;;;;13701:13;;13635:87;:::o;2872:104::-;2928:13;2961:7;2954:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:104;:::o;18816:410::-;18937:4;18959:24;18986:11;:25;18998:12;:10;:12::i;:::-;18986:25;;;;;;;;;;;;;;;:34;19012:7;18986:34;;;;;;;;;;;;;;;;18959:61;;19059:15;19039:16;:35;;19031:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;19127:67;19136:12;:10;:12::i;:::-;19150:7;19178:15;19159:16;:34;;;;:::i;:::-;19127:8;:67::i;:::-;19214:4;19207:11;;;18816:410;;;;:::o;16282:19::-;;;;;;;;;;;;;:::o;19234:165::-;19312:4;19329:40;19339:10;19351:9;19362:6;19329:9;:40::i;:::-;19387:4;19380:11;;19234:165;;;;:::o;17154:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;4563:201::-;4697:7;4729:11;:18;4741:5;4729:18;;;;;;;;;;;;;;;:27;4748:7;4729:27;;;;;;;;;;;;;;;;4722:34;;4563:201;;;;:::o;26517:518::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26643:9:::1;26633:6;:19;;26625:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26728:9;26717:7;:20;;26709:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;26816:9;26803;:22;;26795:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;26912:10;:8;:10::i;:::-;26908:2;:14;;;;:::i;:::-;26899:6;:23;;;;:::i;:::-;26885:11;:37;;;;26962:10;:8;:10::i;:::-;26958:2;:14;;;;:::i;:::-;26948:7;:24;;;;:::i;:::-;26933:12;:39;;;;27016:10;:8;:10::i;:::-;27012:2;:14;;;;:::i;:::-;27000:9;:26;;;;:::i;:::-;26983:14;:43;;;;26517:518:::0;;;:::o;13960:192::-;13781:12;:10;:12::i;:::-;13770:23;;:7;:5;:7::i;:::-;:23;;;13762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14069:1:::1;14049:22;;:8;:22;;::::0;14041:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14125:19;14135:8;14125:9;:19::i;:::-;13960:192:::0;:::o;17055:40::-;;;;;;;;;;;;;;;;;;;:::o;16254:21::-;;;;;;;;;;;;;:::o;16348:37::-;;;;;;;;;;;;;:::o;375:98::-;428:7;455:10;448:17;;375:98;:::o;11283:380::-;11436:1;11419:19;;:5;:19;;;11411:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11517:1;11498:21;;:7;:21;;;11490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11601:6;11571:11;:18;11583:5;11571:18;;;;;;;;;;;;;;;:27;11590:7;11571:27;;;;;;;;;;;;;;;:36;;;;11639:7;11623:32;;11632:5;11623:32;;;11648:6;11623:32;;;;;;:::i;:::-;;;;;;;;11283:380;;;:::o;19407:2805::-;19557:1;19548:6;:10;19540:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19631:4;;;;;;;;;;;19621:14;;:6;:14;;;:39;;;;;19640:9;:20;19650:9;19640:20;;;;;;;;;;;;;;;;;;;;;;;;;19639:21;19621:39;:54;;;;;19665:10;;;;;;;;;;;19664:11;19621:54;19617:306;;;19710:11;;19700:6;:21;;19692:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19829:14;;19819:6;19796:20;19806:9;19796;:20::i;:::-;:29;;;;:::i;:::-;:47;;19770:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19617:306;19963:4;;;;;;;;;;;19953:14;;:6;:14;;;;:39;;;;;19972:9;:20;19982:9;19972:20;;;;;;;;;;;;;;;;;;;;;;;;;19971:21;19953:39;:61;;;;;19997:9;:17;20007:6;19997:17;;;;;;;;;;;;;;;;;;;;;;;;;19996:18;19953:61;:76;;;;;20019:10;;;;;;;;;;;20018:11;19953:76;19935:423;;;20074:12;;20064:6;:22;;20056:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20153:4;;;;;;;;;;;20140:17;;:9;:17;;;20136:211;;20241:14;;20231:6;20208:20;20218:9;20208;:20::i;:::-;:29;;;;:::i;:::-;:47;;20178:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;20136:211;19935:423;20370:15;20396:14;20421:11;20443:15;20469:18;20498:25;;:::i;:::-;20611:10;;;;;;;;;;;:31;;;;20625:9;:17;20635:6;20625:17;;;;;;;;;;;;;;;;;;;;;;;;;20611:31;:55;;;;20646:9;:20;20656:9;20646:20;;;;;;;;;;;;;;;;;;;;;;;;;20611:55;20607:847;;;20687:1;20681:7;;20607:847;;;20752:4;;;;;;;;;;;20739:17;;:9;:17;;;20735:719;;20839:9;:19;;;20800:9;:19;;;:58;;;;:::i;:::-;20773:85;;20882:7;20873:16;;20914:9;:14;;;20904:24;;20958:9;20943:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20735:719;;;20999:4;;;;;;;;;;;20989:14;;:6;:14;;;20985:469;;21082:5;:15;;;21047:5;:15;;;:50;;;;:::i;:::-;21020:77;;21121:7;21112:16;;21153:5;:10;;;21143:20;;21193:5;21178:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:469;;;21301:13;:23;;;21258:13;:23;;;:66;;;;:::i;:::-;21231:93;;21349:7;21340:16;;21381:13;:18;;;21371:28;;21429:13;21414:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20985:469;20735:719;20607:847;21492:3;21482:6;21473;:15;;;;:::i;:::-;21472:23;;;;:::i;:::-;21466:29;;21540:3;21529:7;21520:6;:16;;;;:::i;:::-;21519:24;;;;:::i;:::-;21506:37;;21657:18;;;;;;;;;;;:36;;;;;21689:4;;;;;;;;;;;21679:14;;:6;:14;;;;21657:36;21653:72;;;21695:30;21703:7;21712:12;21695:7;:30::i;:::-;21653:72;21767:63;21783:6;21791:9;21818:10;21812:3;:16;;;;:::i;:::-;21802:6;:27;;;;:::i;:::-;21767:15;:63::i;:::-;21885:1;21872:10;:14;21869:77;;;21903:31;21915:6;21923:10;21903:11;:31::i;:::-;21869:77;21966:1;21960:3;:7;21956:249;;;22042:1;22032:7;:11;22028:164;;;22064:17;22105:3;22094:7;22085:6;:16;;;;:::i;:::-;22084:24;;;;:::i;:::-;22064:44;;22127:49;22143:6;22159:4;22166:9;22127:15;:49::i;:::-;22045:147;22028:164;21956:249;19529:2683;;;;;;19407:2805;;;:::o;10101:744::-;10204:1;10185:21;;:7;:21;;;10177:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10257:54;10278:7;10295:6;10304;10257:20;:54::i;:::-;10324:22;10349:9;:18;10359:7;10349:18;;;;;;;;;;;;;;;;10324:43;;10404:6;10386:14;:24;;10378:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10523:6;10506:14;:23;10485:9;:18;10495:7;10485:18;;;;;;;;;;;;;;;:44;;;;10640:6;10624:12;;:22;;;;;;;;;;;10755:6;10729:42;;10738:7;10729:42;;;10764:6;10729:42;;;;;;:::i;:::-;;;;;;;;10784:53;10804:7;10821:6;10830;10784:19;:53::i;:::-;10166:679;10101:744;;:::o;14160:173::-;14216:16;14235:6;;;;;;;;;;;14216:25;;14261:8;14252:6;;:17;;;;;;;;;;;;;;;;;;14316:8;14285:40;;14306:8;14285:40;;;;;;;;;;;;14205:128;14160:173;:::o;5372:419::-;5473:24;5500:25;5510:5;5517:7;5500:9;:25::i;:::-;5473:52;;5560:17;5540:16;:37;5536:248;;5622:6;5602:16;:26;;5594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5706:51;5715:5;5722:7;5750:6;5731:16;:25;5706:8;:51::i;:::-;5536:248;5462:329;5372:419;;;:::o;22220:1437::-;17243:10;;;;;;;;;;;17238:110;;17283:4;17270:10;;:17;;;;;;;;;;;;;;;;;;22325:1:::1;22314:7;:12:::0;22311:49;22342:7:::1;22311:49;22372:23;22398:24;22416:4;22398:9;:24::i;:::-;22372:50;;22456:23;;22437:15;:42;22433:1217;;22526:1;22500:23;;:27;22496:109;;;22566:23;;22548:41;;22496:109;22676:19;22708:1;22698:7;:11;;;;:::i;:::-;22676:33;;22724:32;22818:11;22778:9;:19;;;22760:15;:37;;;;:::i;:::-;22759:70;;;;:::i;:::-;22724:105;;22844:14;22879:24;22861:15;:42;;;;:::i;:::-;22844:59;;22920:22;22945:21;22920:46;;22983:24;23000:6;22983:16;:24::i;:::-;23024:20;23071:14;23047:21;:38;;;;:::i;:::-;23024:61;;23100:19;23152:9;:19;;;23138:11;:33;;;;:::i;:::-;23122:12;:50;;;;:::i;:::-;23100:72;;23187:29;23233:9;:19;;;23219:11;:33;;;;:::i;:::-;23187:65;;23297:1;23273:21;:25;23269:172;;;23364:61;23377:24;23403:21;23364:12;:61::i;:::-;23269:172;23457:20;23498:9;:19;;;23494:1;23480:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;23457:60;;23551:1;23536:12;:16;23532:105;;;23573:48;23608:12;23581:15;;;;;;;;;;;23573:34;;;;:48;;;;:::i;:::-;23532:105;22481:1169;;;;;;;;22433:1217;22298:1359;17302:1;17331:5:::0;17318:10;;:18;;;;;;;;;;;;;;;;;;17238:110;22220:1437;;:::o;8787:578::-;8945:1;8927:20;;:6;:20;;;8919:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9029:1;9008:23;;:9;:23;;;9000:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9084:21;9108:9;:17;9118:6;9108:17;;;;;;;;;;;;;;;;9084:41;;9161:6;9144:13;:23;;9136:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9257:6;9241:13;:22;;;;:::i;:::-;9221:9;:17;9231:6;9221:17;;;;;;;;;;;;;;;:42;;;;9298:6;9274:9;:20;9284:9;9274:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9339:9;9322:35;;9331:6;9322:35;;;9350:6;9322:35;;;;;;:::i;:::-;;;;;;;;8908:457;8787:578;;;:::o;12263:91::-;;;;:::o;12958:90::-;;;;:::o;23665:534::-;23791:21;23829:1;23815:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23791:40;;23860:4;23842;23847:1;23842:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23886:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23876:4;23881:1;23876:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23912:53;23929:4;23944:6;;;;;;;;;;;23953:11;23912:8;:53::i;:::-;24004:6;;;;;;;;;;;:57;;;24076:11;24102:1;24118:4;24145;24165:15;24004:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23720:479;23665:534;:::o;24207:500::-;24355:53;24372:4;24387:6;;;;;;;;;;;24396:11;24355:8;:53::i;:::-;24451:6;;;;;;;;;;;:22;;;24482:9;24516:4;24536:11;24562:1;24605;16853:42;24673:15;24451:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24207:500;;:::o;13078:319::-;13193:6;13168:21;:31;;13160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13247:12;13265:9;:14;;13288:6;13265:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13246:54;;;13319:7;13311:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13149:248;13078:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:::-;5090:6;5098;5106;5155:2;5143:9;5134:7;5130:23;5126:32;5123:119;;;5161:79;;:::i;:::-;5123:119;5281:1;5306:53;5351:7;5342:6;5331:9;5327:22;5306:53;:::i;:::-;5296:63;;5252:117;5408:2;5434:53;5479:7;5470:6;5459:9;5455:22;5434:53;:::i;:::-;5424:63;;5379:118;5536:2;5562:53;5607:7;5598:6;5587:9;5583:22;5562:53;:::i;:::-;5552:63;;5507:118;5013:619;;;;;:::o;5638:329::-;5697:6;5746:2;5734:9;5725:7;5721:23;5717:32;5714:119;;;5752:79;;:::i;:::-;5714:119;5872:1;5897:53;5942:7;5933:6;5922:9;5918:22;5897:53;:::i;:::-;5887:63;;5843:117;5638:329;;;;:::o;5973:86::-;6008:7;6048:4;6041:5;6037:16;6026:27;;5973:86;;;:::o;6065:112::-;6148:22;6164:5;6148:22;:::i;:::-;6143:3;6136:35;6065:112;;:::o;6183:214::-;6272:4;6310:2;6299:9;6295:18;6287:26;;6323:67;6387:1;6376:9;6372:17;6363:6;6323:67;:::i;:::-;6183:214;;;;:::o;6403:474::-;6471:6;6479;6528:2;6516:9;6507:7;6503:23;6499:32;6496:119;;;6534:79;;:::i;:::-;6496:119;6654:1;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6625:117;6781:2;6807:53;6852:7;6843:6;6832:9;6828:22;6807:53;:::i;:::-;6797:63;;6752:118;6403:474;;;;;:::o;6883:329::-;6942:6;6991:2;6979:9;6970:7;6966:23;6962:32;6959:119;;;6997:79;;:::i;:::-;6959:119;7117:1;7142:53;7187:7;7178:6;7167:9;7163:22;7142:53;:::i;:::-;7132:63;;7088:117;6883:329;;;;:::o;7218:442::-;7367:4;7405:2;7394:9;7390:18;7382:26;;7418:71;7486:1;7475:9;7471:17;7462:6;7418:71;:::i;:::-;7499:72;7567:2;7556:9;7552:18;7543:6;7499:72;:::i;:::-;7581;7649:2;7638:9;7634:18;7625:6;7581:72;:::i;:::-;7218:442;;;;;;:::o;7666:118::-;7753:24;7771:5;7753:24;:::i;:::-;7748:3;7741:37;7666:118;;:::o;7790:222::-;7883:4;7921:2;7910:9;7906:18;7898:26;;7934:71;8002:1;7991:9;7987:17;7978:6;7934:71;:::i;:::-;7790:222;;;;:::o;8018:60::-;8046:3;8067:5;8060:12;;8018:60;;;:::o;8084:142::-;8134:9;8167:53;8185:34;8194:24;8212:5;8194:24;:::i;:::-;8185:34;:::i;:::-;8167:53;:::i;:::-;8154:66;;8084:142;;;:::o;8232:126::-;8282:9;8315:37;8346:5;8315:37;:::i;:::-;8302:50;;8232:126;;;:::o;8364:141::-;8429:9;8462:37;8493:5;8462:37;:::i;:::-;8449:50;;8364:141;;;:::o;8511:161::-;8613:52;8659:5;8613:52;:::i;:::-;8608:3;8601:65;8511:161;;:::o;8678:252::-;8786:4;8824:2;8813:9;8809:18;8801:26;;8837:86;8920:1;8909:9;8905:17;8896:6;8837:86;:::i;:::-;8678:252;;;;:::o;8936:180::-;8984:77;8981:1;8974:88;9081:4;9078:1;9071:15;9105:4;9102:1;9095:15;9122:320;9166:6;9203:1;9197:4;9193:12;9183:22;;9250:1;9244:4;9240:12;9271:18;9261:81;;9327:4;9319:6;9315:17;9305:27;;9261:81;9389:2;9381:6;9378:14;9358:18;9355:38;9352:84;;9408:18;;:::i;:::-;9352:84;9173:269;9122:320;;;:::o;9448:182::-;9588:34;9584:1;9576:6;9572:14;9565:58;9448:182;:::o;9636:366::-;9778:3;9799:67;9863:2;9858:3;9799:67;:::i;:::-;9792:74;;9875:93;9964:3;9875:93;:::i;:::-;9993:2;9988:3;9984:12;9977:19;;9636:366;;;:::o;10008:419::-;10174:4;10212:2;10201:9;10197:18;10189:26;;10261:9;10255:4;10251:20;10247:1;10236:9;10232:17;10225:47;10289:131;10415:4;10289:131;:::i;:::-;10281:139;;10008:419;;;:::o;10433:227::-;10573:34;10569:1;10561:6;10557:14;10550:58;10642:10;10637:2;10629:6;10625:15;10618:35;10433:227;:::o;10666:366::-;10808:3;10829:67;10893:2;10888:3;10829:67;:::i;:::-;10822:74;;10905:93;10994:3;10905:93;:::i;:::-;11023:2;11018:3;11014:12;11007:19;;10666:366;;;:::o;11038:419::-;11204:4;11242:2;11231:9;11227:18;11219:26;;11291:9;11285:4;11281:20;11277:1;11266:9;11262:17;11255:47;11319:131;11445:4;11319:131;:::i;:::-;11311:139;;11038:419;;;:::o;11463:180::-;11511:77;11508:1;11501:88;11608:4;11605:1;11598:15;11632:4;11629:1;11622:15;11649:194;11689:4;11709:20;11727:1;11709:20;:::i;:::-;11704:25;;11743:20;11761:1;11743:20;:::i;:::-;11738:25;;11787:1;11784;11780:9;11772:17;;11811:1;11805:4;11802:11;11799:37;;;11816:18;;:::i;:::-;11799:37;11649:194;;;;:::o;11849:191::-;11889:3;11908:20;11926:1;11908:20;:::i;:::-;11903:25;;11942:20;11960:1;11942:20;:::i;:::-;11937:25;;11985:1;11982;11978:9;11971:16;;12006:3;12003:1;12000:10;11997:36;;;12013:18;;:::i;:::-;11997:36;11849:191;;;;:::o;12046:179::-;12186:31;12182:1;12174:6;12170:14;12163:55;12046:179;:::o;12231:366::-;12373:3;12394:67;12458:2;12453:3;12394:67;:::i;:::-;12387:74;;12470:93;12559:3;12470:93;:::i;:::-;12588:2;12583:3;12579:12;12572:19;;12231:366;;;:::o;12603:419::-;12769:4;12807:2;12796:9;12792:18;12784:26;;12856:9;12850:4;12846:20;12842:1;12831:9;12827:17;12820:47;12884:131;13010:4;12884:131;:::i;:::-;12876:139;;12603:419;;;:::o;13028:165::-;13168:17;13164:1;13156:6;13152:14;13145:41;13028:165;:::o;13199:366::-;13341:3;13362:67;13426:2;13421:3;13362:67;:::i;:::-;13355:74;;13438:93;13527:3;13438:93;:::i;:::-;13556:2;13551:3;13547:12;13540:19;;13199:366;;;:::o;13571:419::-;13737:4;13775:2;13764:9;13760:18;13752:26;;13824:9;13818:4;13814:20;13810:1;13799:9;13795:17;13788:47;13852:131;13978:4;13852:131;:::i;:::-;13844:139;;13571:419;;;:::o;13996:221::-;14136:34;14132:1;14124:6;14120:14;14113:58;14205:4;14200:2;14192:6;14188:15;14181:29;13996:221;:::o;14223:366::-;14365:3;14386:67;14450:2;14445:3;14386:67;:::i;:::-;14379:74;;14462:93;14551:3;14462:93;:::i;:::-;14580:2;14575:3;14571:12;14564:19;;14223:366;;;:::o;14595:419::-;14761:4;14799:2;14788:9;14784:18;14776:26;;14848:9;14842:4;14838:20;14834:1;14823:9;14819:17;14812:47;14876:131;15002:4;14876:131;:::i;:::-;14868:139;;14595:419;;;:::o;15020:249::-;15160:34;15156:1;15148:6;15144:14;15137:58;15229:32;15224:2;15216:6;15212:15;15205:57;15020:249;:::o;15275:366::-;15417:3;15438:67;15502:2;15497:3;15438:67;:::i;:::-;15431:74;;15514:93;15603:3;15514:93;:::i;:::-;15632:2;15627:3;15623:12;15616:19;;15275:366;;;:::o;15647:419::-;15813:4;15851:2;15840:9;15836:18;15828:26;;15900:9;15894:4;15890:20;15886:1;15875:9;15871:17;15864:47;15928:131;16054:4;15928:131;:::i;:::-;15920:139;;15647:419;;;:::o;16072:102::-;16114:8;16161:5;16158:1;16154:13;16133:34;;16072:102;;;:::o;16180:848::-;16241:5;16248:4;16272:6;16263:15;;16296:5;16287:14;;16310:712;16331:1;16321:8;16318:15;16310:712;;;16426:4;16421:3;16417:14;16411:4;16408:24;16405:50;;;16435:18;;:::i;:::-;16405:50;16485:1;16475:8;16471:16;16468:451;;;16900:4;16893:5;16889:16;16880:25;;16468:451;16950:4;16944;16940:15;16932:23;;16980:32;17003:8;16980:32;:::i;:::-;16968:44;;16310:712;;;16180:848;;;;;;;:::o;17034:1073::-;17088:5;17279:8;17269:40;;17300:1;17291:10;;17302:5;;17269:40;17328:4;17318:36;;17345:1;17336:10;;17347:5;;17318:36;17414:4;17462:1;17457:27;;;;17498:1;17493:191;;;;17407:277;;17457:27;17475:1;17466:10;;17477:5;;;17493:191;17538:3;17528:8;17525:17;17522:43;;;17545:18;;:::i;:::-;17522:43;17594:8;17591:1;17587:16;17578:25;;17629:3;17622:5;17619:14;17616:40;;;17636:18;;:::i;:::-;17616:40;17669:5;;;17407:277;;17793:2;17783:8;17780:16;17774:3;17768:4;17765:13;17761:36;17743:2;17733:8;17730:16;17725:2;17719:4;17716:12;17712:35;17696:111;17693:246;;;17849:8;17843:4;17839:19;17830:28;;17884:3;17877:5;17874:14;17871:40;;;17891:18;;:::i;:::-;17871:40;17924:5;;17693:246;17964:42;18002:3;17992:8;17986:4;17983:1;17964:42;:::i;:::-;17949:57;;;;18038:4;18033:3;18029:14;18022:5;18019:25;18016:51;;;18047:18;;:::i;:::-;18016:51;18096:4;18089:5;18085:16;18076:25;;17034:1073;;;;;;:::o;18113:281::-;18171:5;18195:23;18213:4;18195:23;:::i;:::-;18187:31;;18239:25;18255:8;18239:25;:::i;:::-;18227:37;;18283:104;18320:66;18310:8;18304:4;18283:104;:::i;:::-;18274:113;;18113:281;;;;:::o;18400:410::-;18440:7;18463:20;18481:1;18463:20;:::i;:::-;18458:25;;18497:20;18515:1;18497:20;:::i;:::-;18492:25;;18552:1;18549;18545:9;18574:30;18592:11;18574:30;:::i;:::-;18563:41;;18753:1;18744:7;18740:15;18737:1;18734:22;18714:1;18707:9;18687:83;18664:139;;18783:18;;:::i;:::-;18664:139;18448:362;18400:410;;;;:::o;18816:179::-;18956:31;18952:1;18944:6;18940:14;18933:55;18816:179;:::o;19001:366::-;19143:3;19164:67;19228:2;19223:3;19164:67;:::i;:::-;19157:74;;19240:93;19329:3;19240:93;:::i;:::-;19358:2;19353:3;19349:12;19342:19;;19001:366;;;:::o;19373:419::-;19539:4;19577:2;19566:9;19562:18;19554:26;;19626:9;19620:4;19616:20;19612:1;19601:9;19597:17;19590:47;19654:131;19780:4;19654:131;:::i;:::-;19646:139;;19373:419;;;:::o;19798:180::-;19938:32;19934:1;19926:6;19922:14;19915:56;19798:180;:::o;19984:366::-;20126:3;20147:67;20211:2;20206:3;20147:67;:::i;:::-;20140:74;;20223:93;20312:3;20223:93;:::i;:::-;20341:2;20336:3;20332:12;20325:19;;19984:366;;;:::o;20356:419::-;20522:4;20560:2;20549:9;20545:18;20537:26;;20609:9;20603:4;20599:20;20595:1;20584:9;20580:17;20573:47;20637:131;20763:4;20637:131;:::i;:::-;20629:139;;20356:419;;;:::o;20781:241::-;20921:34;20917:1;20909:6;20905:14;20898:58;20990:24;20985:2;20977:6;20973:15;20966:49;20781:241;:::o;21028:366::-;21170:3;21191:67;21255:2;21250:3;21191:67;:::i;:::-;21184:74;;21267:93;21356:3;21267:93;:::i;:::-;21385:2;21380:3;21376:12;21369:19;;21028:366;;;:::o;21400:419::-;21566:4;21604:2;21593:9;21589:18;21581:26;;21653:9;21647:4;21643:20;21639:1;21628:9;21624:17;21617:47;21681:131;21807:4;21681:131;:::i;:::-;21673:139;;21400:419;;;:::o;21825:332::-;21946:4;21984:2;21973:9;21969:18;21961:26;;21997:71;22065:1;22054:9;22050:17;22041:6;21997:71;:::i;:::-;22078:72;22146:2;22135:9;22131:18;22122:6;22078:72;:::i;:::-;21825:332;;;;;:::o;22163:137::-;22217:5;22248:6;22242:13;22233:22;;22264:30;22288:5;22264:30;:::i;:::-;22163:137;;;;:::o;22306:345::-;22373:6;22422:2;22410:9;22401:7;22397:23;22393:32;22390:119;;;22428:79;;:::i;:::-;22390:119;22548:1;22573:61;22626:7;22617:6;22606:9;22602:22;22573:61;:::i;:::-;22563:71;;22519:125;22306:345;;;;:::o;22657:224::-;22797:34;22793:1;22785:6;22781:14;22774:58;22866:7;22861:2;22853:6;22849:15;22842:32;22657:224;:::o;22887:366::-;23029:3;23050:67;23114:2;23109:3;23050:67;:::i;:::-;23043:74;;23126:93;23215:3;23126:93;:::i;:::-;23244:2;23239:3;23235:12;23228:19;;22887:366;;;:::o;23259:419::-;23425:4;23463:2;23452:9;23448:18;23440:26;;23512:9;23506:4;23502:20;23498:1;23487:9;23483:17;23476:47;23540:131;23666:4;23540:131;:::i;:::-;23532:139;;23259:419;;;:::o;23684:228::-;23824:34;23820:1;23812:6;23808:14;23801:58;23893:11;23888:2;23880:6;23876:15;23869:36;23684:228;:::o;23918:366::-;24060:3;24081:67;24145:2;24140:3;24081:67;:::i;:::-;24074:74;;24157:93;24246:3;24157:93;:::i;:::-;24275:2;24270:3;24266:12;24259:19;;23918:366;;;:::o;24290:419::-;24456:4;24494:2;24483:9;24479:18;24471:26;;24543:9;24537:4;24533:20;24529:1;24518:9;24514:17;24507:47;24571:131;24697:4;24571:131;:::i;:::-;24563:139;;24290:419;;;:::o;24715:229::-;24855:34;24851:1;24843:6;24839:14;24832:58;24924:12;24919:2;24911:6;24907:15;24900:37;24715:229;:::o;24950:366::-;25092:3;25113:67;25177:2;25172:3;25113:67;:::i;:::-;25106:74;;25189:93;25278:3;25189:93;:::i;:::-;25307:2;25302:3;25298:12;25291:19;;24950:366;;;:::o;25322:419::-;25488:4;25526:2;25515:9;25511:18;25503:26;;25575:9;25569:4;25565:20;25561:1;25550:9;25546:17;25539:47;25603:131;25729:4;25603:131;:::i;:::-;25595:139;;25322:419;;;:::o;25747:231::-;25887:34;25883:1;25875:6;25871:14;25864:58;25956:14;25951:2;25943:6;25939:15;25932:39;25747:231;:::o;25984:366::-;26126:3;26147:67;26211:2;26206:3;26147:67;:::i;:::-;26140:74;;26223:93;26312:3;26223:93;:::i;:::-;26341:2;26336:3;26332:12;26325:19;;25984:366;;;:::o;26356:419::-;26522:4;26560:2;26549:9;26545:18;26537:26;;26609:9;26603:4;26599:20;26595:1;26584:9;26580:17;26573:47;26637:131;26763:4;26637:131;:::i;:::-;26629:139;;26356:419;;;:::o;26781:225::-;26921:34;26917:1;26909:6;26905:14;26898:58;26990:8;26985:2;26977:6;26973:15;26966:33;26781:225;:::o;27012:366::-;27154:3;27175:67;27239:2;27234:3;27175:67;:::i;:::-;27168:74;;27251:93;27340:3;27251:93;:::i;:::-;27369:2;27364:3;27360:12;27353:19;;27012:366;;;:::o;27384:419::-;27550:4;27588:2;27577:9;27573:18;27565:26;;27637:9;27631:4;27627:20;27623:1;27612:9;27608:17;27601:47;27665:131;27791:4;27665:131;:::i;:::-;27657:139;;27384:419;;;:::o;27809:223::-;27949:34;27945:1;27937:6;27933:14;27926:58;28018:6;28013:2;28005:6;28001:15;27994:31;27809:223;:::o;28038:366::-;28180:3;28201:67;28265:2;28260:3;28201:67;:::i;:::-;28194:74;;28277:93;28366:3;28277:93;:::i;:::-;28395:2;28390:3;28386:12;28379:19;;28038:366;;;:::o;28410:419::-;28576:4;28614:2;28603:9;28599:18;28591:26;;28663:9;28657:4;28653:20;28649:1;28638:9;28634:17;28627:47;28691:131;28817:4;28691:131;:::i;:::-;28683:139;;28410:419;;;:::o;28835:221::-;28975:34;28971:1;28963:6;28959:14;28952:58;29044:4;29039:2;29031:6;29027:15;29020:29;28835:221;:::o;29062:366::-;29204:3;29225:67;29289:2;29284:3;29225:67;:::i;:::-;29218:74;;29301:93;29390:3;29301:93;:::i;:::-;29419:2;29414:3;29410:12;29403:19;;29062:366;;;:::o;29434:419::-;29600:4;29638:2;29627:9;29623:18;29615:26;;29687:9;29681:4;29677:20;29673:1;29662:9;29658:17;29651:47;29715:131;29841:4;29715:131;:::i;:::-;29707:139;;29434:419;;;:::o;29859:228::-;29999:34;29995:1;29987:6;29983:14;29976:58;30068:11;30063:2;30055:6;30051:15;30044:36;29859:228;:::o;30093:366::-;30235:3;30256:67;30320:2;30315:3;30256:67;:::i;:::-;30249:74;;30332:93;30421:3;30332:93;:::i;:::-;30450:2;30445:3;30441:12;30434:19;;30093:366;;;:::o;30465:419::-;30631:4;30669:2;30658:9;30654:18;30646:26;;30718:9;30712:4;30708:20;30704:1;30693:9;30689:17;30682:47;30746:131;30872:4;30746:131;:::i;:::-;30738:139;;30465:419;;;:::o;30890:179::-;31030:31;31026:1;31018:6;31014:14;31007:55;30890:179;:::o;31075:366::-;31217:3;31238:67;31302:2;31297:3;31238:67;:::i;:::-;31231:74;;31314:93;31403:3;31314:93;:::i;:::-;31432:2;31427:3;31423:12;31416:19;;31075:366;;;:::o;31447:419::-;31613:4;31651:2;31640:9;31636:18;31628:26;;31700:9;31694:4;31690:20;31686:1;31675:9;31671:17;31664:47;31728:131;31854:4;31728:131;:::i;:::-;31720:139;;31447:419;;;:::o;31872:182::-;32012:34;32008:1;32000:6;31996:14;31989:58;31872:182;:::o;32060:366::-;32202:3;32223:67;32287:2;32282:3;32223:67;:::i;:::-;32216:74;;32299:93;32388:3;32299:93;:::i;:::-;32417:2;32412:3;32408:12;32401:19;;32060:366;;;:::o;32432:419::-;32598:4;32636:2;32625:9;32621:18;32613:26;;32685:9;32679:4;32675:20;32671:1;32660:9;32656:17;32649:47;32713:131;32839:4;32713:131;:::i;:::-;32705:139;;32432:419;;;:::o;32857:180::-;32997:32;32993:1;32985:6;32981:14;32974:56;32857:180;:::o;33043:366::-;33185:3;33206:67;33270:2;33265:3;33206:67;:::i;:::-;33199:74;;33282:93;33371:3;33282:93;:::i;:::-;33400:2;33395:3;33391:12;33384:19;;33043:366;;;:::o;33415:419::-;33581:4;33619:2;33608:9;33604:18;33596:26;;33668:9;33662:4;33658:20;33654:1;33643:9;33639:17;33632:47;33696:131;33822:4;33696:131;:::i;:::-;33688:139;;33415:419;;;:::o;33840:180::-;33888:77;33885:1;33878:88;33985:4;33982:1;33975:15;34009:4;34006:1;33999:15;34026:185;34066:1;34083:20;34101:1;34083:20;:::i;:::-;34078:25;;34117:20;34135:1;34117:20;:::i;:::-;34112:25;;34156:1;34146:35;;34161:18;;:::i;:::-;34146:35;34203:1;34200;34196:9;34191:14;;34026:185;;;;:::o;34217:220::-;34357:34;34353:1;34345:6;34341:14;34334:58;34426:3;34421:2;34413:6;34409:15;34402:28;34217:220;:::o;34443:366::-;34585:3;34606:67;34670:2;34665:3;34606:67;:::i;:::-;34599:74;;34682:93;34771:3;34682:93;:::i;:::-;34800:2;34795:3;34791:12;34784:19;;34443:366;;;:::o;34815:419::-;34981:4;35019:2;35008:9;35004:18;34996:26;;35068:9;35062:4;35058:20;35054:1;35043:9;35039:17;35032:47;35096:131;35222:4;35096:131;:::i;:::-;35088:139;;34815:419;;;:::o;35240:221::-;35380:34;35376:1;35368:6;35364:14;35357:58;35449:4;35444:2;35436:6;35432:15;35425:29;35240:221;:::o;35467:366::-;35609:3;35630:67;35694:2;35689:3;35630:67;:::i;:::-;35623:74;;35706:93;35795:3;35706:93;:::i;:::-;35824:2;35819:3;35815:12;35808:19;;35467:366;;;:::o;35839:419::-;36005:4;36043:2;36032:9;36028:18;36020:26;;36092:9;36086:4;36082:20;36078:1;36067:9;36063:17;36056:47;36120:131;36246:4;36120:131;:::i;:::-;36112:139;;35839:419;;;:::o;36264:179::-;36404:31;36400:1;36392:6;36388:14;36381:55;36264:179;:::o;36449:366::-;36591:3;36612:67;36676:2;36671:3;36612:67;:::i;:::-;36605:74;;36688:93;36777:3;36688:93;:::i;:::-;36806:2;36801:3;36797:12;36790:19;;36449:366;;;:::o;36821:419::-;36987:4;37025:2;37014:9;37010:18;37002:26;;37074:9;37068:4;37064:20;37060:1;37049:9;37045:17;37038:47;37102:131;37228:4;37102:131;:::i;:::-;37094:139;;36821:419;;;:::o;37246:224::-;37386:34;37382:1;37374:6;37370:14;37363:58;37455:7;37450:2;37442:6;37438:15;37431:32;37246:224;:::o;37476:366::-;37618:3;37639:67;37703:2;37698:3;37639:67;:::i;:::-;37632:74;;37715:93;37804:3;37715:93;:::i;:::-;37833:2;37828:3;37824:12;37817:19;;37476:366;;;:::o;37848:419::-;38014:4;38052:2;38041:9;38037:18;38029:26;;38101:9;38095:4;38091:20;38087:1;38076:9;38072:17;38065:47;38129:131;38255:4;38129:131;:::i;:::-;38121:139;;37848:419;;;:::o;38273:222::-;38413:34;38409:1;38401:6;38397:14;38390:58;38482:5;38477:2;38469:6;38465:15;38458:30;38273:222;:::o;38501:366::-;38643:3;38664:67;38728:2;38723:3;38664:67;:::i;:::-;38657:74;;38740:93;38829:3;38740:93;:::i;:::-;38858:2;38853:3;38849:12;38842:19;;38501:366;;;:::o;38873:419::-;39039:4;39077:2;39066:9;39062:18;39054:26;;39126:9;39120:4;39116:20;39112:1;39101:9;39097:17;39090:47;39154:131;39280:4;39154:131;:::i;:::-;39146:139;;38873:419;;;:::o;39298:225::-;39438:34;39434:1;39426:6;39422:14;39415:58;39507:8;39502:2;39494:6;39490:15;39483:33;39298:225;:::o;39529:366::-;39671:3;39692:67;39756:2;39751:3;39692:67;:::i;:::-;39685:74;;39768:93;39857:3;39768:93;:::i;:::-;39886:2;39881:3;39877:12;39870:19;;39529:366;;;:::o;39901:419::-;40067:4;40105:2;40094:9;40090:18;40082:26;;40154:9;40148:4;40144:20;40140:1;40129:9;40125:17;40118:47;40182:131;40308:4;40182:131;:::i;:::-;40174:139;;39901:419;;;:::o;40326:180::-;40374:77;40371:1;40364:88;40471:4;40468:1;40461:15;40495:4;40492:1;40485:15;40512:180;40560:77;40557:1;40550:88;40657:4;40654:1;40647:15;40681:4;40678:1;40671:15;40698:143;40755:5;40786:6;40780:13;40771:22;;40802:33;40829:5;40802:33;:::i;:::-;40698:143;;;;:::o;40847:351::-;40917:6;40966:2;40954:9;40945:7;40941:23;40937:32;40934:119;;;40972:79;;:::i;:::-;40934:119;41092:1;41117:64;41173:7;41164:6;41153:9;41149:22;41117:64;:::i;:::-;41107:74;;41063:128;40847:351;;;;:::o;41204:85::-;41249:7;41278:5;41267:16;;41204:85;;;:::o;41295:158::-;41353:9;41386:61;41404:42;41413:32;41439:5;41413:32;:::i;:::-;41404:42;:::i;:::-;41386:61;:::i;:::-;41373:74;;41295:158;;;:::o;41459:147::-;41554:45;41593:5;41554:45;:::i;:::-;41549:3;41542:58;41459:147;;:::o;41612:114::-;41679:6;41713:5;41707:12;41697:22;;41612:114;;;:::o;41732:184::-;41831:11;41865:6;41860:3;41853:19;41905:4;41900:3;41896:14;41881:29;;41732:184;;;;:::o;41922:132::-;41989:4;42012:3;42004:11;;42042:4;42037:3;42033:14;42025:22;;41922:132;;;:::o;42060:108::-;42137:24;42155:5;42137:24;:::i;:::-;42132:3;42125:37;42060:108;;:::o;42174:179::-;42243:10;42264:46;42306:3;42298:6;42264:46;:::i;:::-;42342:4;42337:3;42333:14;42319:28;;42174:179;;;;:::o;42359:113::-;42429:4;42461;42456:3;42452:14;42444:22;;42359:113;;;:::o;42508:732::-;42627:3;42656:54;42704:5;42656:54;:::i;:::-;42726:86;42805:6;42800:3;42726:86;:::i;:::-;42719:93;;42836:56;42886:5;42836:56;:::i;:::-;42915:7;42946:1;42931:284;42956:6;42953:1;42950:13;42931:284;;;43032:6;43026:13;43059:63;43118:3;43103:13;43059:63;:::i;:::-;43052:70;;43145:60;43198:6;43145:60;:::i;:::-;43135:70;;42991:224;42978:1;42975;42971:9;42966:14;;42931:284;;;42935:14;43231:3;43224:10;;42632:608;;;42508:732;;;;:::o;43246:831::-;43509:4;43547:3;43536:9;43532:19;43524:27;;43561:71;43629:1;43618:9;43614:17;43605:6;43561:71;:::i;:::-;43642:80;43718:2;43707:9;43703:18;43694:6;43642:80;:::i;:::-;43769:9;43763:4;43759:20;43754:2;43743:9;43739:18;43732:48;43797:108;43900:4;43891:6;43797:108;:::i;:::-;43789:116;;43915:72;43983:2;43972:9;43968:18;43959:6;43915:72;:::i;:::-;43997:73;44065:3;44054:9;44050:19;44041:6;43997:73;:::i;:::-;43246:831;;;;;;;;:::o;44083:807::-;44332:4;44370:3;44359:9;44355:19;44347:27;;44384:71;44452:1;44441:9;44437:17;44428:6;44384:71;:::i;:::-;44465:72;44533:2;44522:9;44518:18;44509:6;44465:72;:::i;:::-;44547:80;44623:2;44612:9;44608:18;44599:6;44547:80;:::i;:::-;44637;44713:2;44702:9;44698:18;44689:6;44637:80;:::i;:::-;44727:73;44795:3;44784:9;44780:19;44771:6;44727:73;:::i;:::-;44810;44878:3;44867:9;44863:19;44854:6;44810:73;:::i;:::-;44083:807;;;;;;;;;:::o;44896:143::-;44953:5;44984:6;44978:13;44969:22;;45000:33;45027:5;45000:33;:::i;:::-;44896:143;;;;:::o;45045:663::-;45133:6;45141;45149;45198:2;45186:9;45177:7;45173:23;45169:32;45166:119;;;45204:79;;:::i;:::-;45166:119;45324:1;45349:64;45405:7;45396:6;45385:9;45381:22;45349:64;:::i;:::-;45339:74;;45295:128;45462:2;45488:64;45544:7;45535:6;45524:9;45520:22;45488:64;:::i;:::-;45478:74;;45433:129;45601:2;45627:64;45683:7;45674:6;45663:9;45659:22;45627:64;:::i;:::-;45617:74;;45572:129;45045:663;;;;;:::o;45714:179::-;45854:31;45850:1;45842:6;45838:14;45831:55;45714:179;:::o;45899:366::-;46041:3;46062:67;46126:2;46121:3;46062:67;:::i;:::-;46055:74;;46138:93;46227:3;46138:93;:::i;:::-;46256:2;46251:3;46247:12;46240:19;;45899:366;;;:::o;46271:419::-;46437:4;46475:2;46464:9;46460:18;46452:26;;46524:9;46518:4;46514:20;46510:1;46499:9;46495:17;46488:47;46552:131;46678:4;46552:131;:::i;:::-;46544:139;;46271:419;;;:::o;46696:147::-;46797:11;46834:3;46819:18;;46696:147;;;;:::o;46849:114::-;;:::o;46969:398::-;47128:3;47149:83;47230:1;47225:3;47149:83;:::i;:::-;47142:90;;47241:93;47330:3;47241:93;:::i;:::-;47359:1;47354:3;47350:11;47343:18;;46969:398;;;:::o;47373:379::-;47557:3;47579:147;47722:3;47579:147;:::i;:::-;47572:154;;47743:3;47736:10;;47373:379;;;:::o;47758:245::-;47898:34;47894:1;47886:6;47882:14;47875:58;47967:28;47962:2;47954:6;47950:15;47943:53;47758:245;:::o;48009:366::-;48151:3;48172:67;48236:2;48231:3;48172:67;:::i;:::-;48165:74;;48248:93;48337:3;48248:93;:::i;:::-;48366:2;48361:3;48357:12;48350:19;;48009:366;;;:::o;48381:419::-;48547:4;48585:2;48574:9;48570:18;48562:26;;48634:9;48628:4;48624:20;48620:1;48609:9;48605:17;48598:47;48662:131;48788:4;48662:131;:::i;:::-;48654:139;;48381:419;;;:::o
Swarm Source
ipfs://ea4acad8fd36696ad7863fa7c66fe42d18043604fb7d0858f15b05c194cbafa0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,482.77 | 0.0000000000000016 | <$0.000001 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.