More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 332,672 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap Exact Token... | 21418604 | 13 mins ago | IN | 0 ETH | 0.00294062 | ||||
Swap Exact Token... | 21418565 | 21 mins ago | IN | 0 ETH | 0.00205095 | ||||
Swap Exact Token... | 21418448 | 45 mins ago | IN | 0 ETH | 0.00168601 | ||||
Swap Exact Token... | 21415232 | 11 hrs ago | IN | 0 ETH | 0.0019995 | ||||
Swap Exact Token... | 21414991 | 12 hrs ago | IN | 0 ETH | 0.00239927 | ||||
Swap Exact Token... | 21414920 | 12 hrs ago | IN | 0 ETH | 0.00189245 | ||||
Swap Exact Token... | 21414874 | 12 hrs ago | IN | 0 ETH | 0.00322799 | ||||
Swap Exact Token... | 21414807 | 12 hrs ago | IN | 0 ETH | 0.00156255 | ||||
Swap Exact Token... | 21414793 | 12 hrs ago | IN | 0 ETH | 0.00209504 | ||||
Swap Exact ETH F... | 21414753 | 13 hrs ago | IN | 0.0015 ETH | 0.00292372 | ||||
Swap Exact Token... | 21414402 | 14 hrs ago | IN | 0 ETH | 0.0013783 | ||||
Swap Exact Token... | 21414351 | 14 hrs ago | IN | 0 ETH | 0.00129253 | ||||
Swap Exact Token... | 21414333 | 14 hrs ago | IN | 0 ETH | 0.00171492 | ||||
Swap Exact Token... | 21414127 | 15 hrs ago | IN | 0 ETH | 0.00113425 | ||||
Swap Exact Token... | 21413978 | 15 hrs ago | IN | 0 ETH | 0.00100115 | ||||
Swap Exact ETH F... | 21413883 | 16 hrs ago | IN | 0.02 ETH | 0.00113831 | ||||
Remove Liquidity... | 21413776 | 16 hrs ago | IN | 0 ETH | 0.00184902 | ||||
Remove Liquidity... | 21413774 | 16 hrs ago | IN | 0 ETH | 0.00204425 | ||||
Remove Liquidity... | 21413773 | 16 hrs ago | IN | 0 ETH | 0.00270418 | ||||
Add Liquidity | 21413768 | 16 hrs ago | IN | 0 ETH | 0.00187096 | ||||
Add Liquidity | 21413766 | 16 hrs ago | IN | 0 ETH | 0.00180467 | ||||
Add Liquidity ET... | 21413764 | 16 hrs ago | IN | 2.47 ETH | 0.00188676 | ||||
Remove Liquidity... | 21413688 | 16 hrs ago | IN | 0 ETH | 0.00196352 | ||||
Remove Liquidity | 21413687 | 16 hrs ago | IN | 0 ETH | 0.00179514 | ||||
Remove Liquidity... | 21413685 | 16 hrs ago | IN | 0 ETH | 0.00226381 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
21418604 | 13 mins ago | 0.09970831 ETH | |||||
21418604 | 13 mins ago | 0.09970831 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418604 | 13 mins ago | 0 ETH | |||||
21418565 | 21 mins ago | 0 ETH | |||||
21418565 | 21 mins ago | 0 ETH | |||||
21418565 | 21 mins ago | 0 ETH | |||||
21418448 | 45 mins ago | 0 ETH | |||||
21418448 | 45 mins ago | 0 ETH | |||||
21418448 | 45 mins ago | 0 ETH | |||||
21415232 | 11 hrs ago | 0 ETH | |||||
21415232 | 11 hrs ago | 0 ETH | |||||
21415232 | 11 hrs ago | 0 ETH | |||||
21414991 | 12 hrs ago | 0 ETH | |||||
21414991 | 12 hrs ago | 0 ETH | |||||
21414991 | 12 hrs ago | 0 ETH | |||||
21414991 | 12 hrs ago | 0 ETH | |||||
21414991 | 12 hrs ago | 0 ETH | |||||
21414920 | 12 hrs ago | 0 ETH | |||||
21414920 | 12 hrs ago | 0 ETH | |||||
21414920 | 12 hrs ago | 0 ETH |
Loading...
Loading
Contract Name:
DooarSwapV2Router02
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Multiple files format)
pragma solidity =0.6.6; import './IDooarSwapV2Factory.sol'; import './TransferHelper.sol'; import './IDooarSwapV2Router02.sol'; import './DooarSwapV2Library.sol'; import './SafeMath.sol'; import './IERC20.sol'; import './IWETH.sol'; contract DooarSwapV2Router02 is IDooarSwapV2Router02 { using SafeMath for uint; address public immutable override factory; address public immutable override WETH; modifier ensure(uint deadline) { require(deadline >= block.timestamp, 'DooarSwapV2Router: EXPIRED'); _; } constructor(address _factory, address _WETH) public { factory = _factory; WETH = _WETH; } receive() external payable { assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract } // **** ADD LIQUIDITY **** function _addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin ) internal virtual returns (uint amountA, uint amountB) { // create the pair if it doesn't exist yet if (IDooarSwapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) { IDooarSwapV2Factory(factory).createPair(tokenA, tokenB); } (uint reserveA, uint reserveB) = DooarSwapV2Library.getReserves(factory, tokenA, tokenB); if (reserveA == 0 && reserveB == 0) { (amountA, amountB) = (amountADesired, amountBDesired); } else { uint amountBOptimal = DooarSwapV2Library.quote(amountADesired, reserveA, reserveB); if (amountBOptimal <= amountBDesired) { require(amountBOptimal >= amountBMin, 'DooarSwapV2Router: INSUFFICIENT_B_AMOUNT'); (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint amountAOptimal = DooarSwapV2Library.quote(amountBDesired, reserveB, reserveA); assert(amountAOptimal <= amountADesired); require(amountAOptimal >= amountAMin, 'DooarSwapV2Router: INSUFFICIENT_A_AMOUNT'); (amountA, amountB) = (amountAOptimal, amountBDesired); } } } function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) { (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin); address pair = DooarSwapV2Library.pairFor(factory, tokenA, tokenB); TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA); TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); liquidity = IDooarSwapV2Pair(pair).mint(to); } function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) { (amountToken, amountETH) = _addLiquidity( token, WETH, amountTokenDesired, msg.value, amountTokenMin, amountETHMin ); address pair = DooarSwapV2Library.pairFor(factory, token, WETH); TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken); IWETH(WETH).deposit{value: amountETH}(); assert(IWETH(WETH).transfer(pair, amountETH)); liquidity = IDooarSwapV2Pair(pair).mint(to); // refund dust eth, if any if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH); } // **** REMOVE LIQUIDITY **** function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) { address pair = DooarSwapV2Library.pairFor(factory, tokenA, tokenB); IDooarSwapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair (uint amount0, uint amount1) = IDooarSwapV2Pair(pair).burn(to); (address token0,) = DooarSwapV2Library.sortTokens(tokenA, tokenB); (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); require(amountA >= amountAMin, 'DooarSwapV2Router: INSUFFICIENT_A_AMOUNT'); require(amountB >= amountBMin, 'DooarSwapV2Router: INSUFFICIENT_B_AMOUNT'); } function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) { (amountToken, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, amountToken); IWETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountA, uint amountB) { address pair = DooarSwapV2Library.pairFor(factory, tokenA, tokenB); uint value = approveMax ? uint(-1) : liquidity; IDooarSwapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline); } function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountToken, uint amountETH) { address pair = DooarSwapV2Library.pairFor(factory, token, WETH); uint value = approveMax ? uint(-1) : liquidity; IDooarSwapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) **** function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) public virtual override ensure(deadline) returns (uint amountETH) { (, amountETH) = removeLiquidity( token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline ); TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this))); IWETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(to, amountETH); } function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint amountETH) { address pair = DooarSwapV2Library.pairFor(factory, token, WETH); uint value = approveMax ? uint(-1) : liquidity; IDooarSwapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s); amountETH = removeLiquidityETHSupportingFeeOnTransferTokens( token, liquidity, amountTokenMin, amountETHMin, to, deadline ); } // **** SWAP **** // requires the initial amount to have already been sent to the first pair function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = DooarSwapV2Library.sortTokens(input, output); uint amountOut = amounts[i + 1]; (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0)); address to = i < path.length - 2 ? DooarSwapV2Library.pairFor(factory, output, path[i + 2]) : _to; IDooarSwapV2Pair(DooarSwapV2Library.pairFor(factory, input, output)).swap( amount0Out, amount1Out, to, new bytes(0) ); } } function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) returns (uint[] memory amounts) { amounts = DooarSwapV2Library.getAmountsOut(factory, amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0] ); _swap(amounts, path, to); } function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) returns (uint[] memory amounts) { amounts = DooarSwapV2Library.getAmountsIn(factory, amountOut, path); require(amounts[0] <= amountInMax, 'DooarSwapV2Router: EXCESSIVE_INPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0] ); _swap(amounts, path, to); } function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external virtual override payable ensure(deadline) returns (uint[] memory amounts) { require(path[0] == WETH, 'DooarSwapV2Router: INVALID_PATH'); amounts = DooarSwapV2Library.getAmountsOut(factory, msg.value, path); require(amounts[amounts.length - 1] >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0])); _swap(amounts, path, to); } function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external virtual override ensure(deadline) returns (uint[] memory amounts) { require(path[path.length - 1] == WETH, 'DooarSwapV2Router: INVALID_PATH'); amounts = DooarSwapV2Library.getAmountsIn(factory, amountOut, path); require(amounts[0] <= amountInMax, 'DooarSwapV2Router: EXCESSIVE_INPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0] ); _swap(amounts, path, address(this)); IWETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external virtual override ensure(deadline) returns (uint[] memory amounts) { require(path[path.length - 1] == WETH, 'DooarSwapV2Router: INVALID_PATH'); amounts = DooarSwapV2Library.getAmountsOut(factory, amountIn, path); require(amounts[amounts.length - 1] >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0] ); _swap(amounts, path, address(this)); IWETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]); } function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external virtual override payable ensure(deadline) returns (uint[] memory amounts) { require(path[0] == WETH, 'DooarSwapV2Router: INVALID_PATH'); amounts = DooarSwapV2Library.getAmountsIn(factory, amountOut, path); require(amounts[0] <= msg.value, 'DooarSwapV2Router: EXCESSIVE_INPUT_AMOUNT'); IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(DooarSwapV2Library.pairFor(factory, path[0], path[1]), amounts[0])); _swap(amounts, path, to); // refund dust eth, if any if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]); } // **** SWAP (supporting fee-on-transfer tokens) **** // requires the initial amount to have already been sent to the first pair function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual { for (uint i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = DooarSwapV2Library.sortTokens(input, output); IDooarSwapV2Pair pair = IDooarSwapV2Pair(DooarSwapV2Library.pairFor(factory, input, output)); uint amountInput; uint amountOutput; { // scope to avoid stack too deep errors (uint reserve0, uint reserve1,) = pair.getReserves(); (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0); amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput); amountOutput = DooarSwapV2Library.getAmountOut(amountInput, reserveInput, reserveOutput); } (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0)); address to = i < path.length - 2 ? DooarSwapV2Library.pairFor(factory, output, path[i + 2]) : _to; pair.swap(amount0Out, amount1Out, to, new bytes(0)); } } function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) { TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amountIn ); uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require( IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT' ); } function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override payable ensure(deadline) { require(path[0] == WETH, 'DooarSwapV2Router: INVALID_PATH'); uint amountIn = msg.value; IWETH(WETH).deposit{value: amountIn}(); assert(IWETH(WETH).transfer(DooarSwapV2Library.pairFor(factory, path[0], path[1]), amountIn)); uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to); _swapSupportingFeeOnTransferTokens(path, to); require( IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT' ); } function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external virtual override ensure(deadline) { require(path[path.length - 1] == WETH, 'DooarSwapV2Router: INVALID_PATH'); TransferHelper.safeTransferFrom( path[0], msg.sender, DooarSwapV2Library.pairFor(factory, path[0], path[1]), amountIn ); _swapSupportingFeeOnTransferTokens(path, address(this)); uint amountOut = IERC20(WETH).balanceOf(address(this)); require(amountOut >= amountOutMin, 'DooarSwapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'); IWETH(WETH).withdraw(amountOut); TransferHelper.safeTransferETH(to, amountOut); } // **** LIBRARY FUNCTIONS **** function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) { return DooarSwapV2Library.quote(amountA, reserveA, reserveB); } function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) public pure virtual override returns (uint amountOut) { return DooarSwapV2Library.getAmountOut(amountIn, reserveIn, reserveOut); } function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) public pure virtual override returns (uint amountIn) { return DooarSwapV2Library.getAmountIn(amountOut, reserveIn, reserveOut); } function getAmountsOut(uint amountIn, address[] memory path) public view virtual override returns (uint[] memory amounts) { return DooarSwapV2Library.getAmountsOut(factory, amountIn, path); } function getAmountsIn(uint amountOut, address[] memory path) public view virtual override returns (uint[] memory amounts) { return DooarSwapV2Library.getAmountsIn(factory, amountOut, path); } }
pragma solidity >=0.5.0; import '../IDooarSwapV2Pair.sol'; import "./SafeMath.sol"; library DooarSwapV2Library { using SafeMath for uint; // returns sorted token addresses, used to handle return values from pairs sorted in this order function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, 'DooarSwapV2Library: IDENTICAL_ADDRESSES'); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), 'DooarSwapV2Library: ZERO_ADDRESS'); } // calculates the CREATE2 address for a pair without making any external calls function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) { (address token0, address token1) = sortTokens(tokenA, tokenB); pair = address(uint(keccak256(abi.encodePacked( hex'ff', factory, keccak256(abi.encodePacked(token0, token1)), hex'8810cdfaaaa2c6c56fdebd83b2c9e7cc71e3ef06ec0c62e029c6476ff05136da' // init code hash )))); } // fetches and sorts the reserves for a pair function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint reserve0, uint reserve1,) = IDooarSwapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { require(amountA > 0, 'DooarSwapV2Library: INSUFFICIENT_AMOUNT'); require(reserveA > 0 && reserveB > 0, 'DooarSwapV2Library: INSUFFICIENT_LIQUIDITY'); amountB = amountA.mul(reserveB) / reserveA; } // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) { require(amountIn > 0, 'DooarSwapV2Library: INSUFFICIENT_INPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'DooarSwapV2Library: INSUFFICIENT_LIQUIDITY'); uint amountInWithFee = amountIn.mul(99); uint numerator = amountInWithFee.mul(reserveOut); uint denominator = reserveIn.mul(100).add(amountInWithFee); amountOut = numerator / denominator; } // given an output amount of an asset and pair reserves, returns a required input amount of the other asset function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) { require(amountOut > 0, 'DooarSwapV2Library: INSUFFICIENT_OUTPUT_AMOUNT'); require(reserveIn > 0 && reserveOut > 0, 'DooarSwapV2Library: INSUFFICIENT_LIQUIDITY'); uint numerator = reserveIn.mul(amountOut).mul(100); uint denominator = reserveOut.sub(amountOut).mul(99); amountIn = (numerator / denominator).add(1); } // performs chained getAmountOut calculations on any number of pairs function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'DooarSwapV2Library: INVALID_PATH'); amounts = new uint[](path.length); amounts[0] = amountIn; for (uint i; i < path.length - 1; i++) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]); amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut); } } // performs chained getAmountIn calculations on any number of pairs function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) { require(path.length >= 2, 'DooarSwapV2Library: INVALID_PATH'); amounts = new uint[](path.length); amounts[amounts.length - 1] = amountOut; for (uint i = path.length - 1; i > 0; i--) { (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]); amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut); } } }
pragma solidity >=0.5.0; interface IDooarSwapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
pragma solidity >=0.5.0; interface IDooarSwapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
pragma solidity >=0.6.2; interface IDooarSwapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
pragma solidity >=0.6.2; import './IDooarSwapV2Router01.sol'; interface IDooarSwapV2Router02 is IDooarSwapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); }
pragma solidity >=0.5.0; interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); function withdraw(uint) external; }
pragma solidity =0.6.6; // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.6.0; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeApprove: approve failed' ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::safeTransfer: transfer failed' ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require( success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper::transferFrom: transferFrom failed' ); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'TransferHelper::safeTransferETH: ETH transfer failed'); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040523480156200001157600080fd5b506040516200578138038062005781833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155fa62000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb5280614432528061447552806147d552806149b65280614f2f5280615010528061509052506155fa6000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140ae565b8560008151811061124a57fe5b6020026020010151614199565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614369915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f000000000000000000000000000000000000000000000000000000000000000084846145f0565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140ae565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b61183d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140ae565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a614199565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c3292909189918991829185019084908082843760009201919091525088925061477e915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1116565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f5985858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061477e915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b5095945050505050565b6000610f44848484614b83565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614ca5565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a91829185019084908082843760009201919091525089925061477e915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140ae565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d85565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153ba6028913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154bf6028913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f48565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140ae565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ed8565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140ae565b90506132db8d338388614199565b6132e78c338387614199565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ed8565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140ae565b90506134aa8b338388614199565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6138867f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615542602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154136034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806154e7602d913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b6000613ef885606363ffffffff6151d916565b90506000613f0c828563ffffffff6151d916565b90506000613f3183613f2588606463ffffffff6151d916565b9063ffffffff61525f16565b9050808281613f3c57fe5b04979650505050505050565b6060600282511015613fbb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd357600080fd5b50604051908082528060200260200182016040528015613ffd578160200160208202803683370190505b509050828160008151811061400e57fe5b60200260200101818152505060005b60018351038110156140a6576000806140608786858151811061403c57fe5b602002602001015187866001018151811061405357fe5b60200260200101516152d1565b9150915061408284848151811061407357fe5b60200260200101518383613e26565b84846001018151811061409157fe5b6020908102919091010152505060010161401d565b509392505050565b60008060006140bd8585614d85565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f8810cdfaaaa2c6c56fdebd83b2c9e7cc71e3ef06ec0c62e029c6476ff05136da609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142d9576040519150601f19603f3d011682016040523d82523d6000602084013e6142de565b606091505b509150915081801561430c57508051158061430c575080806020019051602081101561430957600080fd5b50515b614361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806153e26031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ea5760008084838151811061438757fe5b602002602001015185846001018151811061439e57fe5b60200260200101519150915060006143b68383614d85565b50905060008785600101815181106143ca57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441257826000614416565b6000835b91509150600060028a5103881061442d578861446e565b61446e7f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061446157fe5b60200260200101516140ae565b905061449b7f000000000000000000000000000000000000000000000000000000000000000088886140ae565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e5576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614570578181015183820152602001614558565b50505050905090810190601f16801561459d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145bf57600080fd5b505af11580156145d3573d6000803e3d6000fd5b50506001909901985061436c975050505050505050565b50505050565b606060028251101561466357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467b57600080fd5b506040519080825280602002602001820160405280156146a5578160200160208202803683370190505b50905082816001835103815181106146b957fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a6576000806147198786600186038151811061470557fe5b602002602001015187868151811061405357fe5b9150915061473b84848151811061472c57fe5b60200260200101518383614b83565b84600185038151811061474a57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146e9565b60005b6001835103811015613e215760008084838151811061479c57fe5b60200260200101518584600101815181106147b357fe5b60200260200101519150915060006147cb8383614d85565b50905060006147fb7f000000000000000000000000000000000000000000000000000000000000000085856140ae565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484957600080fd5b505afa15801561485d573d6000803e3d6000fd5b505050506040513d606081101561487357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bd5782846148c0565b83835b91509150614945828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614952868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149965782600061499a565b6000835b91509150600060028c51038a106149b1578a6149e5565b6149e57f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061446157fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a95578181015183820152602001614a7d565b50505050905090810190601f168015614ac25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae457600080fd5b505af1158015614af8573d6000803e3d6000fd5b50506001909b019a506147819950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615514602e913960400191505060405180910390fd5b600083118015614bed5750600082115b614c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b6000614c656064614c59868863ffffffff6151d916565b9063ffffffff6151d916565b90506000614c7e6063614c59868963ffffffff614b1116565b9050614c9b6001828481614c8e57fe5b049063ffffffff61525f16565b9695505050505050565b6000808411614cff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154716027913960400191505060405180910390fd5b600083118015614d0f5750600082115b614d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b82614d75858463ffffffff6151d916565b81614d7c57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e47578284614e4a565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a205a45524f5f41444452455353604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f7857600080fd5b505afa158015614f8c573d6000803e3d6000fd5b505050506040513d6020811015614fa257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508857604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561505b57600080fd5b505af115801561506f573d6000803e3d6000fd5b505050506040513d602081101561508557600080fd5b50505b6000806150b67f00000000000000000000000000000000000000000000000000000000000000008b8b6152d1565b915091508160001480156150c8575080155b156150d8578793508692506151cc565b60006150e5898484614ca5565b90508781116151525785811015615147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154bf6028913960400191505060405180910390fd5b8894509250826151ca565b600061515f898486614ca5565b90508981111561516b57fe5b878110156151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153ba6028913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f4575050808202828282816151f157fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e08585614d85565b5090506000806152f18888886140ae565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533657600080fd5b505afa15801561534a573d6000803e3d6000fd5b505050506040513d606081101561536057600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153a75780826153aa565b81815b9099909850965050505050505056fe446f6f6172537761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564446f6f61725377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459446f6f61725377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54446f6f61725377617056324c6962726172793a204944454e544943414c5f414444524553534553446f6f6172537761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54446f6f61725377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54446f6f61725377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564446f6f6172537761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54446f6f6172537761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54a2646970667358221220174a6283f46d97821c77d0a647e69da2d73d40480403af7410434a69bc1038f364736f6c634300060600330000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b610e86897f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613ce9565b50965096945050505050565b6000610f44848484613e26565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6111207f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140ae565b8560008151811061124a57fe5b6020026020010151614199565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614369915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613ce9565b509695505050505050565b60606113917f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c84846145f0565b90505b92915050565b60008060006113ca7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8f8f6140ae565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6115a87f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b61183d7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b6000806118fa7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8d7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140ae565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a614199565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c3292909189918991829185019084908082843760009201919091525088925061477e915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b1116565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f5985858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061477e915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613ce9565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6122b87f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c34888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f4892505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615598602d913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b5095945050505050565b6000610f44848484614b83565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6126027f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000610f44848484614ca5565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b612743887f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613ce9565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b60003490507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a91829185019084908082843760009201919091525089925061477e915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b6000612e057f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8c8c6140ae565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d85565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153ba6028913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154bf6028913960400191505060405180910390fd5b505050505097509795505050505050565b7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c81565b60606113917f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8484613f48565b60008060006131107f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8e7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140ae565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ed8565b909450925060006132cd7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8e8e6140ae565b90506132db8d338388614199565b6132e78c338387614199565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b61344a8a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b348c8c614ed8565b9094509250600061349c7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8c7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26140ae565b90506134aa8b338388614199565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613ce9565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f446f6f6172537761705632526f757465723a2045585049524544000000000000604482015290519081900360640190fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f446f6f6172537761705632526f757465723a20494e56414c49445f5041544800604482015290519081900360640190fd5b6138867f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506145f092505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061556f6029913960400191505060405180910390fd5b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c89896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614369915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613ce9565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615542602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d23565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dc2576040519150601f19603f3d011682016040523d82523d6000602084013e613dc7565b606091505b5050905080613e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806154136034913960400191505060405180910390fd5b505050565b6000808411613e80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806154e7602d913960400191505060405180910390fd5b600083118015613e905750600082115b613ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b6000613ef885606363ffffffff6151d916565b90506000613f0c828563ffffffff6151d916565b90506000613f3183613f2588606463ffffffff6151d916565b9063ffffffff61525f16565b9050808281613f3c57fe5b04979650505050505050565b6060600282511015613fbb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fd357600080fd5b50604051908082528060200260200182016040528015613ffd578160200160208202803683370190505b509050828160008151811061400e57fe5b60200260200101818152505060005b60018351038110156140a6576000806140608786858151811061403c57fe5b602002602001015187866001018151811061405357fe5b60200260200101516152d1565b9150915061408284848151811061407357fe5b60200260200101518383613e26565b84846001018151811061409157fe5b6020908102919091010152505060010161401d565b509392505050565b60008060006140bd8585614d85565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f8810cdfaaaa2c6c56fdebd83b2c9e7cc71e3ef06ec0c62e029c6476ff05136da609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061427757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161423a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142d9576040519150601f19603f3d011682016040523d82523d6000602084013e6142de565b606091505b509150915081801561430c57508051158061430c575080806020019051602081101561430957600080fd5b50515b614361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806153e26031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156145ea5760008084838151811061438757fe5b602002602001015185846001018151811061439e57fe5b60200260200101519150915060006143b68383614d85565b50905060008785600101815181106143ca57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461441257826000614416565b6000835b91509150600060028a5103881061442d578861446e565b61446e7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c878c8b6002018151811061446157fe5b60200260200101516140ae565b905061449b7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c88886140ae565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144e5576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614570578181015183820152602001614558565b50505050905090810190601f16801561459d5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145bf57600080fd5b505af11580156145d3573d6000803e3d6000fd5b50506001909901985061436c975050505050505050565b50505050565b606060028251101561466357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a20494e56414c49445f50415448604482015290519081900360640190fd5b815167ffffffffffffffff8111801561467b57600080fd5b506040519080825280602002602001820160405280156146a5578160200160208202803683370190505b50905082816001835103815181106146b957fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140a6576000806147198786600186038151811061470557fe5b602002602001015187868151811061405357fe5b9150915061473b84848151811061472c57fe5b60200260200101518383614b83565b84600185038151811061474a57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016146e9565b60005b6001835103811015613e215760008084838151811061479c57fe5b60200260200101518584600101815181106147b357fe5b60200260200101519150915060006147cb8383614d85565b50905060006147fb7f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c85856140ae565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561484957600080fd5b505afa15801561485d573d6000803e3d6000fd5b505050506040513d606081101561487357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148bd5782846148c0565b83835b91509150614945828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614952868383613e26565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149965782600061499a565b6000835b91509150600060028c51038a106149b1578a6149e5565b6149e57f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c898e8d6002018151811061446157fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614a95578181015183820152602001614a7d565b50505050905090810190601f168015614ac25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614ae457600080fd5b505af1158015614af8573d6000803e3d6000fd5b50506001909b019a506147819950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180615514602e913960400191505060405180910390fd5b600083118015614bed5750600082115b614c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b6000614c656064614c59868863ffffffff6151d916565b9063ffffffff6151d916565b90506000614c7e6063614c59868963ffffffff614b1116565b9050614c9b6001828481614c8e57fe5b049063ffffffff61525f16565b9695505050505050565b6000808411614cff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154716027913960400191505060405180910390fd5b600083118015614d0f5750600082115b614d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615447602a913960400191505060405180910390fd5b82614d75858463ffffffff6151d916565b81614d7c57fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e47578284614e4a565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f446f6f61725377617056324c6962726172793a205a45524f5f41444452455353604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c9092169163e6a4390591604480820192602092909190829003018186803b158015614f7857600080fd5b505afa158015614f8c573d6000803e3d6000fd5b505050506040513d6020811015614fa257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16141561508857604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c9092169163c9c65396916044808201926020929091908290030181600087803b15801561505b57600080fd5b505af115801561506f573d6000803e3d6000fd5b505050506040513d602081101561508557600080fd5b50505b6000806150b67f0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c8b8b6152d1565b915091508160001480156150c8575080155b156150d8578793508692506151cc565b60006150e5898484614ca5565b90508781116151525785811015615147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806154bf6028913960400191505060405180910390fd5b8894509250826151ca565b600061515f898486614ca5565b90508981111561516b57fe5b878110156151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806153ba6028913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806151f4575050808202828282816151f157fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152e08585614d85565b5090506000806152f18888886140ae565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561533657600080fd5b505afa15801561534a573d6000803e3d6000fd5b505050506040513d606081101561536057600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153a75780826153aa565b81815b9099909850965050505050505056fe446f6f6172537761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c6564446f6f61725377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459446f6f61725377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54446f6f61725377617056324c6962726172793a204944454e544943414c5f414444524553534553446f6f6172537761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54446f6f61725377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54446f6f61725377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564446f6f6172537761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54446f6f6172537761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54a2646970667358221220174a6283f46d97821c77d0a647e69da2d73d40480403af7410434a69bc1038f364736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _factory (address): 0x1e895bFe59E3A5103e8B7dA3897d1F2391476f3c
Arg [1] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e895bfe59e3a5103e8b7da3897d1f2391476f3c
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
236:18257:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;707:10;:18;721:4;707:18;;700:26;;;;236:18257;;12:1:-1;9;2:12;4800:653:1;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4800:653:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;4800:653:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17468:256;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17468:256:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17468:256:1;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11853:842;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11853:842:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11853:842:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11853:842:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11853:842:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11853:842:1;;-1:-1:-1;11853:842:1;-1:-1:-1;11853:842:1;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11853:842:1;;;;;;;;;;;;;;;;;18244:247;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18244:247:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;18244:247:1;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18244:247:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18244:247:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18244:247:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;18244:247:1;;-1:-1:-1;18244:247:1;;-1:-1:-1;;;;;18244:247:1:i;5458:667::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5458:667:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;5458:667:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9102:621::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9102:621:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9102:621:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9102:621:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9102:621:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9102:621:1;;-1:-1:-1;9102:621:1;-1:-1:-1;9102:621:1;;;;;;;;;:::i;11028:820::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11028:820:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11028:820:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;11028:820:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11028:820:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11028:820:1;;-1:-1:-1;11028:820:1;-1:-1:-1;11028:820:1;;;;;;;;;:::i;7551:707::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7551:707:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;7551:707:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14859:702::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14859:702:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;14859:702:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;14859:702:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14859:702:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14859:702:1;;-1:-1:-1;14859:702:1;-1:-1:-1;14859:702:1;;;;;;;;;:::i;16405:828::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16405:828:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;16405:828:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;16405:828:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;16405:828:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;16405:828:1;;-1:-1:-1;16405:828:1;-1:-1:-1;16405:828:1;;;;;;;;;:::i;10332:691::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10332:691:1;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;10332:691:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10332:691:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10332:691:1;;-1:-1:-1;10332:691:1;-1:-1:-1;10332:691:1;;;;;;;;;:::i;17730:255::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17730:255:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17730:255:1;;;;;;;;;;;;:::i;9728:599::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9728:599:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9728:599:1;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;9728:599:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9728:599:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9728:599:1;;-1:-1:-1;9728:599:1;-1:-1:-1;9728:599:1;;;;;;;;;:::i;372:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;372:38:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17274:188;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17274:188:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17274:188:1;;;;;;;;;;;;:::i;6866:680::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6866:680:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6866:680:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15566:834::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;15566:834:1;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;15566:834:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;15566:834:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;15566:834:1;;-1:-1:-1;15566:834:1;-1:-1:-1;15566:834:1;;;;;;;;;:::i;3934:861::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3934:861:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;3934:861:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;325:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;325:41:1;;;:::i;17991:247::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17991:247:1;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;17991:247:1;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;17991:247:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17991:247:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17991:247:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17991:247:1;;-1:-1:-1;17991:247:1;;-1:-1:-1;;;;;17991:247:1:i;6130:660::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6130:660:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;6130:660:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2207:727::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2207:727:1;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2207:727:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:955;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;2939:955:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12700:802::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12700:802:1;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;12700:802:1;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12700:802:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12700:802:1;;-1:-1:-1;12700:802:1;-1:-1:-1;12700:802:1;;;;;;;;;:::i;4800:653::-;5030:16;5048:14;5011:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:188:::1;5130:5;5149:4;5167:9;5190:14;5218:12;5252:4;5271:8;5101:15;:188::i;:::-;5074:215:::0;;-1:-1:-1;5074:215:1;-1:-1:-1;5299:51:1::1;5327:5:::0;5334:2;5074:215;5299:27:::1;:51::i;:::-;5366:4;5360:20;;;5381:9;5360:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;5360:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5360:31:1;;;;5401:45;5432:2;5436:9;5401:30;:45::i;:::-;4800:653:::0;;;;;;;;;;:::o;17468:256::-;17616:14;17653:64;17685:8;17695:9;17706:10;17653:31;:64::i;:::-;17646:71;17468:256;-1:-1:-1;;;;17468:256:1:o;11853:842::-;12062:21;12035:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12107:29:::1;12132:4;12107:29;:4:::0;;12112:15;;;12107:21;;::::1;;;;;;;;;;;;;:29;;;12099:73;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12192:57;12225:7;12234:8;12244:4;;12192:57;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12192:32:1::1;::::0;-1:-1:-1;;;12192:57:1:i:1;:::-;12182:67;;12298:12;12267:7;12292:1;12275:7;:14;:18;12267:27;;;;;;;;;;;;;;:43;;12259:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12370:141;12415:4;;12420:1;12415:7;;;;;;;;;;;;;;;12424:10;12436:53;12463:7;12472:4;;12477:1;12472:7;;;;;;;;;;;;;;;12481:4;;12486:1;12481:7;;;;;;;;;;;;;;;12436:26;:53::i;:::-;12491:7;12499:1;12491:10;;;;;;;;;;;;;;12370:31;:141::i;:::-;12521:35;12527:7;12536:4;;12521:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12550:4:1::1;::::0;-1:-1:-1;12521:5:1::1;::::0;-1:-1:-1;;12521:35:1:i:1;:::-;12572:4;12566:20;;;12587:7;12612:1;12595:7;:14;:18;12587:27;;;;;;;;;;;;;;12566:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12566:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12566:49:1;;;;12625:63;12656:2;12660:7;12685:1;12668:7;:14;:18;12660:27;;;;;;;;;;;;;;12625:30;:63::i;:::-;11853:842:::0;;;;;;;;;:::o;18244:247::-;18383:21;18427:57;18459:7;18468:9;18479:4;18427:31;:57::i;:::-;18420:64;;18244:247;;;;;:::o;5458:667::-;5755:12;5769;5793;5808:51;5835:7;5844:6;5852;5808:26;:51::i;:::-;5793:66;;5869:10;5882;:33;;5906:9;5882:33;;;5900:2;5882:33;5925:82;;;;;;5955:10;5925:82;;;;5975:4;5925:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5869:46;;-1:-1:-1;5925:29:1;;;;;;:82;;;;;-1:-1:-1;;5925:82:1;;;;;;;;-1:-1:-1;5925:29:1;:82;;;2:2:-1;;;;27:1;24;17:12;2:2;5925:82:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5925:82:1;;;;6038:80;6054:6;6062;6070:9;6081:10;6093;6105:2;6109:8;6038:15;:80::i;:::-;6017:101;;;;;;;;5458:667;;;;;;;;;;;;;;;;:::o;9102:621::-;9320:21;9301:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9363:57:::1;9396:7;9405:8;9415:4;;9363:57;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9363:32:1::1;::::0;-1:-1:-1;;;9363:57:1:i:1;:::-;9353:67;;9469:12;9438:7;9463:1;9446:7;:14;:18;9438:27;;;;;;;;;;;;;;:43;;9430:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9541:141;9586:4;;9591:1;9586:7;;;;;;9541:141;9692:24;9698:7;9707:4;;9692:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9713:2:1;;-1:-1:-1;9692:5:1::1;::::0;-1:-1:-1;;9692:24:1:i:1;11028:820::-:0;11237:21;11210:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11282:29:::1;11307:4;11282:29;:4:::0;;11287:15;;;11282:21;;::::1;;;;;;;;;;;;;:29;;;11274:73;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11367:57;11399:7;11408:9;11419:4;;11367:57;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11367:31:1::1;::::0;-1:-1:-1;;;11367:57:1:i:1;:::-;11357:67;;11456:11;11442:7;11450:1;11442:10;;;;;;;;;;;;;;:25;;11434:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7551:707:::0;7861:14;7887:12;7902:48;7929:7;7938:5;7945:4;7902:26;:48::i;:::-;7887:63;;7960:10;7973;:33;;7997:9;7973:33;;;7991:2;7973:33;8016:82;;;;;;8046:10;8016:82;;;;8066:4;8016:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7960:46;;-1:-1:-1;8016:29:1;;;;;;:82;;;;;-1:-1:-1;;8016:82:1;;;;;;;;-1:-1:-1;8016:29:1;:82;;;2:2:-1;;;;27:1;24;17:12;2:2;8016:82:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8016:82:1;;;;8120:131;8181:5;8188:9;8199:14;8215:12;8229:2;8233:8;8120:47;:131::i;:::-;8108:143;7551:707;-1:-1:-1;;;;;;;;;;;;;7551:707:1:o;14859:702::-;15087:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15107:139:::1;15152:4;;15157:1;15152:7;;;;;;;;;;;;;;;15161:10;15173:53;15200:7;15209:4;;15214:1;15209:7;;;;;;;;;;;;;;;15218:4;;15223:1;15218:7;;;;;;15173:53;15228:8;15107:31;:139::i;:::-;15256:18;15284:4:::0;;15289:15;;;15284:21;;::::1;;;;;;;;;;;;;15277:39;;;15317:2;15277:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15277:43:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15277:43:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15277:43:1;15330:44:::1;::::0;;15277:43:::1;15330:44:::0;;::::1;::::0;;;;;;;;;;;15277:43;;-1:-1:-1;15330:44:1::1;::::0;;;15365:4;;;;;;15330:44;::::1;::::0;15365:4;;15330:44;15365:4;15330:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15371:2:1;;-1:-1:-1;15330:34:1::1;::::0;-1:-1:-1;;15330:44:1:i:1;:::-;15471:12:::0;15405:62:::1;15453:13:::0;15412:4;;15417:15;;;15412:21;;::::1;;;;;;;;;;;;;15405:39;;;15445:2;15405:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15405:43:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15405:43:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15405:43:1;;:62:::1;:47;:62;:::i;:::-;:78;;15384:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;534:1;14859:702:::0;;;;;;;:::o;16405:828::-;16662:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16694:29:::1;16719:4;16694:29;:4:::0;;16699:15;;;16694:21;;::::1;;;;;;;;;;;;;:29;;;16686:73;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16769:139;16814:4;;16819:1;16814:7;;;;;;16769:139;16918:55;16953:4;;16918:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16967:4:1::1;::::0;-1:-1:-1;16918:34:1::1;::::0;-1:-1:-1;;16918:55:1:i:1;:::-;17000:37;::::0;;;;;17031:4:::1;17000:37;::::0;::::1;::::0;;;16983:14:::1;::::0;17000:22:::1;17007:4;17000:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;17000:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17000:37:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;17000:37:1;;-1:-1:-1;17055:25:1;;::::1;;17047:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17146:4;17140:20;;;17161:9;17140:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;17140:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17140:31:1;;;;17181:45;17212:2;17216:9;17181:30;:45::i;10332:691::-:0;10542:21;10515:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10598:4:::1;10587:15;;:4;;10592:1;10587:7;;;;;;;;;;;;;;;:15;;;10579:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10658:58;10691:7;10700:9;10711:4;;10658:58;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10658:32:1::1;::::0;-1:-1:-1;;;10658:58:1:i:1;:::-;10648:68;;10765:12;10734:7;10759:1;10742:7;:14;:18;10734:27;;;;;;;;;;;;;;:43;;10726:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10843:4;10837:19;;;10864:7;10872:1;10864:10;;;;;;;;;;;;;;10837:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10837:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10837:40:1;;;;;10900:4;10894:20;;;10915:53;10942:7;10951:4;;10956:1;10951:7;;;;;;10915:53;10970:7;10978:1;10970:10;;;;;;;;;;;;;;10894:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10894:87:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10894:87:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;10894:87:1;10887:95:::1;;;;10992:24;10998:7;11007:4;;10992:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11013:2:1;;-1:-1:-1;10992:5:1::1;::::0;-1:-1:-1;;10992:24:1:i:1;:::-;10332:691:::0;;;;;;;;:::o;17730:255::-;17878:13;17914:64;17945:9;17956;17967:10;17914:30;:64::i;9728:599::-;9946:21;9927:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9989:57:::1;10021:7;10030:9;10041:4;;9989:57;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9989:31:1::1;::::0;-1:-1:-1;;;9989:57:1:i:1;:::-;9979:67;;10078:11;10064:7;10072:1;10064:10;;;;;;;;;;;;;;:25;;10056:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:38:::0;;;:::o;17274:188::-;17371:12;17402:53;17427:7;17436:8;17446;17402:24;:53::i;6866:680::-;7125:14;7106:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7167:188:::1;7196:5;7215:4;7233:9;7256:14;7284:12;7318:4;7337:8;7167:15;:188::i;:::-;7404:38;::::0;;;;;7436:4:::1;7404:38;::::0;::::1;::::0;;;7151:204;;-1:-1:-1;7365:78:1::1;::::0;-1:-1:-1;7393:5:1;;7400:2;;7404:23:::1;::::0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;7404:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7404:38:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;7404:38:1;7365:27:::1;:78::i;:::-;7459:4;7453:20;;;7474:9;7453:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;7453:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;7453:31:1;;;;7494:45;7525:2;7529:9;7494:30;:45::i;15566:834::-:0;15816:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15859:4:::1;15848:15;;:4;;15853:1;15848:7;;;;;;;;;;;;;;;:15;;;15840:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15909:13;15925:9;15909:25;;15950:4;15944:19;;;15971:8;15944:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15944:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15944:38:1;;;;;16005:4;15999:20;;;16020:53;16047:7;16056:4;;16061:1;16056:7;;;;;;16020:53;16075:8;15999:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15999:85:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15999:85:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15999:85:1;15992:93:::1;;;;16095:18;16123:4:::0;;16128:15;;;16123:21;;::::1;;;;;;;;;;;;;16116:39;;;16156:2;16116:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;16116:43:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;16116:43:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;16116:43:1;16169:44:::1;::::0;;16116:43:::1;16169:44:::0;;::::1;::::0;;;;;;;;;;;16116:43;;-1:-1:-1;16169:44:1::1;::::0;;;16204:4;;;;;;16169:44;::::1;::::0;16204:4;;16169:44;16204:4;16169:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;16210:2:1;;-1:-1:-1;16169:34:1::1;::::0;-1:-1:-1;;16169:44:1:i:1;:::-;16310:12:::0;16244:62:::1;16292:13:::0;16251:4;;16256:15;;;16251:21;;::::1;;;;;;;;;;;;;16244:39;;;16284:2;16244:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;3934:861:1::0;4180:12;4194;4161:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4218:12:::1;4233:51;4260:7;4269:6;4277;4233:26;:51::i;:::-;4294:64;::::0;;;;;4330:10:::1;4294:64;::::0;::::1;::::0;:35:::1;::::0;::::1;:64:::0;;;;;;;;;;;;;;4218:66;;-1:-1:-1;4294:35:1;;::::1;::::0;:64;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4294:35:1;:64;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4294:64:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4294:64:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4425:31:1::1;::::0;;;;;:27:::1;:31:::0;;::::1;;::::0;::::1;::::0;;;4395:12:::1;::::0;;;4425:27;;::::1;::::0;::::1;::::0;:31;;;;;;;;;;;4395:12;4425:27;:31;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4425:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4425:31:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4425:31:1;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4425:31:1;-1:-1:-1;4467:14:1::1;4486:45;4516:6:::0;4524;4486:29:::1;:45::i;:::-;4466:65;;;4572:6;4562:16;;:6;:16;;;:58;;4603:7;4612;4562:58;;;4582:7;4591;4562:58;4541:79:::0;;-1:-1:-1;4541:79:1;-1:-1:-1;4638:21:1;;::::1;;4630:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4733:10;4722:7;:21;;4714:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;534:1;;;;3934:861:::0;;;;;;;;;;;:::o;325:41::-;;;:::o;17991:247::-;18130:21;18174:57;18207:7;18216:8;18226:4;18174:32;:57::i;6130:660::-;6411:16;6429:14;6455:12;6470:48;6497:7;6506:5;6513:4;6470:26;:48::i;:::-;6455:63;;6528:10;6541;:33;;6565:9;6541:33;;;6559:2;6541:33;6584:82;;;;;;6614:10;6584:82;;;;6634:4;6584:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6528:46;;-1:-1:-1;6584:29:1;;;;;;:82;;;;;-1:-1:-1;;6584:82:1;;;;;;;;-1:-1:-1;6584:29:1;:82;;;2:2:-1;;;;27:1;24;17:12;2:2;6584:82:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6584:82:1;;;;6703:80;6722:5;6729:9;6740:14;6756:12;6770:2;6774:8;6703:18;:80::i;:::-;6676:107;;;;-1:-1:-1;6130:660:1;-1:-1:-1;;;;;;;;;;;;;6130:660:1:o;2207:727::-;2486:12;2500;2514:14;2467:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2561:85:::1;2575:6;2583;2591:14;2607;2623:10;2635;2561:13;:85::i;:::-;2540:106:::0;;-1:-1:-1;2540:106:1;-1:-1:-1;2656:12:1::1;2671:51;2698:7;2707:6:::0;2715;2671:26:::1;:51::i;:::-;2656:66;;2732;2764:6;2772:10;2784:4;2790:7;2732:31;:66::i;:::-;2808;2840:6;2848:10;2860:4;2866:7;2808:31;:66::i;:::-;2913:4;2896:27;;;2924:2;2896:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2896:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2896:31:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2896:31:1;2207:727;;;;-1:-1:-1;2896:31:1;;-1:-1:-1;2207:727:1;;-1:-1:-1;;;;;;;;;2207:727:1:o;2939:955::-;3185:16;3203:14;3219;3166:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3272:169:::1;3299:5;3318:4;3336:18;3368:9;3391:14;3419:12;3272:13;:169::i;:::-;3245:196:::0;;-1:-1:-1;3245:196:1;-1:-1:-1;3451:12:1::1;3466:48;3493:7;3502:5:::0;3509:4:::1;3466:26;:48::i;:::-;3451:63;;3524:69;3556:5;3563:10;3575:4;3581:11;3524:31;:69::i;:::-;3609:4;3603:19;;;3630:9;3603:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3603:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3603:39:1;;;;;3665:4;3659:20;;;3680:4;3686:9;3659:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3659:37:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3659:37:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3659:37:1;3652:45:::1;;;;3736:4;3719:27;;;3747:2;3719:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3719:31:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3719:31:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3719:31:1;;-1:-1:-1;3799:9:1::1;:21:::0;-1:-1:-1;3795:92:1::1;;;3822:65;3853:10;3877:9;3865;:21;3822:30;:65::i;:::-;534:1;2939:955:::0;;;;;;;;;;;:::o;12700:802::-;12907:21;12880:8;478:15;466:8;:27;;458:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12963:4:::1;12952:15;;:4;;12957:1;12952:7;;;;;;;;;;;;;;;:15;;;12944:59;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;13023:57;13055:7;13064:9;13075:4;;13023:57;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13023:31:1::1;::::0;-1:-1:-1;;;13023:57:1:i:1;:::-;13013:67;;13112:9;13098:7;13106:1;13098:10;;;;;;;;;;;;;;:23;;13090:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13183:4;13177:19;;;13204:7;13212:1;13204:10;;;;;;;;;;;;;;13177:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13177:40:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13177:40:1;;;;;13240:4;13234:20;;;13255:53;13282:7;13291:4;;13296:1;13291:7;;;;;;13255:53;13310:7;13318:1;13310:10;;;;;;;;;;;;;;13234:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13234:87:1;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13234:87:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;13234:87:1;13227:95:::1;;;;13332:24;13338:7;13347:4;;13332:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13353:2:1;;-1:-1:-1;13332:5:1::1;::::0;-1:-1:-1;;13332:24:1:i:1;:::-;13417:7;13425:1;13417:10;;;;;;;;;;;;;;13405:9;:22;13401:94;;;13429:66;13460:10;13484:7;13492:1;13484:10;;;;;;;;;;;;;;13472:9;:22;13429:30;:66::i;652:438:9:-:0;878:45;;;867:10;878:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:9;;;;;;;25:18:-1;;61:17;;96:58;182:15;878:45:9;179:29:-1;160:49;;867:57:9;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:9;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;867:57:9;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;831:93:9;;;;955:7;:57;;;;-1:-1:-1;967:11:9;;:16;;:44;;;998:4;987:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;987:24:9;967:44;934:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;1678:7;;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1678:35:9;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1659:54:9;;;1731:7;1723:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;2152:512:0:-;2245:14;2290:1;2279:8;:12;2271:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:1;2359:9;:13;:31;;;;;2389:1;2376:10;:14;2359:31;2351:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:20;2470:16;:8;2483:2;2470:16;:12;:16;:::i;:::-;2447:39;-1:-1:-1;2496:14:0;2513:31;2447:39;2533:10;2513:31;:19;:31;:::i;:::-;2496:48;-1:-1:-1;2554:16:0;2573:39;2596:15;2573:18;:9;2587:3;2573:18;:13;:18;:::i;:::-;:22;:39;:22;:39;:::i;:::-;2554:58;;2646:11;2634:9;:23;;;;;;;2152:512;-1:-1:-1;;;;;;;2152:512:0:o;3329:505::-;3430:21;3486:1;3471:4;:11;:16;;3463:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3555:4;:11;3544:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3544:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;3544:23:0;;3534:33;;3590:8;3577:7;3585:1;3577:10;;;;;;;;;;;;;:21;;;;;3613:6;3608:220;3639:1;3625:4;:11;:15;3621:1;:19;3608:220;;;3662:14;3678:15;3697:42;3709:7;3718:4;3723:1;3718:7;;;;;;;;;;;;;;3727:4;3732:1;3736;3732:5;3727:11;;;;;;;;;;;;;;3697;:42::i;:::-;3661:78;;;;3770:47;3783:7;3791:1;3783:10;;;;;;;;;;;;;;3795:9;3806:10;3770:12;:47::i;:::-;3753:7;3761:1;3765;3761:5;3753:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;3642:3:0;;3608:220;;;;3329:505;;;;;:::o;688:470::-;777:12;802:14;818;836:26;847:6;855;836:10;:26::i;:::-;996:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;996:32:0;;;;;986:43;;;;;;902:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;902:246:0;;;;;;;892:257;;;;;;;;;688:470;-1:-1:-1;;;;;688:470:0:o;1096:486:9:-;1360:51;;;1349:10;1360:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:9;;;;;;;25:18:-1;;61:17;;96:58;182:15;1360:51:9;179:29:-1;160:49;;1349:63:9;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:9;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1349:63:9;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1313:99:9;;;;1443:7;:57;;;;-1:-1:-1;1455:11:9;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:9;1455:44;1422:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;8365:732:1:-;8471:6;8466:625;8497:1;8483:4;:11;:15;8479:1;:19;8466:625;;;8520:13;8535:14;8554:4;8559:1;8554:7;;;;;;;;;;;;;;8563:4;8568:1;8572;8568:5;8563:11;;;;;;;;;;;;;;8519:56;;;;8590:14;8609:44;8639:5;8646:6;8609:29;:44::i;:::-;8589:64;;;8667:14;8684:7;8692:1;8696;8692:5;8684:14;;;;;;;;;;;;;;8667:31;;8713:15;8730;8758:6;8749:15;;:5;:15;;;:61;;8791:9;8807:1;8749:61;;;8773:1;8777:9;8749:61;8712:98;;;;8824:10;8855:1;8841:4;:11;:15;8837:1;:19;:84;;8918:3;8837:84;;;8859:56;8886:7;8895:6;8903:4;8908:1;8912;8908:5;8903:11;;;;;;;;;;;;;;8859:26;:56::i;:::-;8824:97;;8952:50;8979:7;8988:5;8995:6;8952:26;:50::i;:::-;8935:73;;;9026:10;9038;9050:2;9064:1;9054:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;9054:12:1;87:42:-1;143:17;;-1:-1;9054:12:1;;8935:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8935:145:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8935:145:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8500:3:1;;;;;-1:-1:-1;8466:625:1;;-1:-1:-1;;;;;;;;8466:625:1;;;8365:732;;;:::o;3912:526:0:-;4013:21;4069:1;4054:4;:11;:16;;4046:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:4;:11;4127:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4127:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4127:23:0;;4117:33;;4190:9;4160:7;4185:1;4168:7;:14;:18;4160:27;;;;;;;;;;;;;;;;;:39;4223:11;;:15;;4209:223;4240:5;;4209:223;;4267:14;4283:15;4302:42;4314:7;4323:4;4332:1;4328;:5;4323:11;;;;;;;;;;;;;;4336:4;4341:1;4336:7;;;;;;;4302:42;4266:78;;;;4375:46;4387:7;4395:1;4387:10;;;;;;;;;;;;;;4399:9;4410:10;4375:11;:46::i;:::-;4358:7;4370:1;4366;:5;4358:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;4247:3:0;;4209:223;;13645:1209:1;13757:6;13752:1096;13783:1;13769:4;:11;:15;13765:1;:19;13752:1096;;;13806:13;13821:14;13840:4;13845:1;13840:7;;;;;;;;;;;;;;13849:4;13854:1;13858;13854:5;13849:11;;;;;;;;;;;;;;13805:56;;;;13876:14;13895:44;13925:5;13932:6;13895:29;:44::i;:::-;13875:64;;;13953:21;13994:50;14021:7;14030:5;14037:6;13994:26;:50::i;:::-;13953:92;;14059:16;14089:17;14175:13;14190;14208:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14208:18:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14208:18:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14208:18:1;;;;;;;14174:52;;;;;-1:-1:-1;14174:52:1;;-1:-1:-1;14241:17:1;;14282:15;;;;;;;;:61;;14324:8;14334;14282:61;;;14301:8;14311;14282:61;14240:103;;;;14371:56;14414:12;14378:5;14371:23;;;14403:4;14371:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;14371:56:1;14357:70;;14456:73;14488:11;14501:12;14515:13;14456:31;:73::i;:::-;14441:88;;13752:1096;;;;14558:15;14575;14603:6;14594:15;;:5;:15;;;:67;;14639:12;14658:1;14594:67;;;14618:1;14622:12;14594:67;14557:104;;;;14675:10;14706:1;14692:4;:11;:15;14688:1;:19;:84;;14769:3;14688:84;;;14710:56;14737:7;14746:6;14754:4;14759:1;14763;14759:5;14754:11;;;;;;;14710:56;14824:12;;;14834:1;14824:12;;;;;;;;;;14786:51;;;;;;;;;;;;;;;:9;:51;;;;;;;;;;;;;;;;;;;;;;14675:97;;-1:-1:-1;14786:9:1;;;;;;14796:10;;14808;;14675:97;;14824:12;;14786:51;;;;;;;;14824:12;;14786:51;;;;14824:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14786:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14786:51:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;13786:3:1;;;;;-1:-1:-1;13752:1096:1;;-1:-1:-1;;;;;;;;;;13752:1096:1;286:127:8;369:5;;;364:16;;;;356:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2782:468:0;2875:13;2920:1;2908:9;:13;2900:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3002:1;2990:9;:13;:31;;;;;3020:1;3007:10;:14;2990:31;2982:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3078:14;3095:33;3124:3;3095:24;:9;3109;3095:24;:13;:24;:::i;:::-;:28;:33;:28;:33;:::i;:::-;3078:50;-1:-1:-1;3138:16:0;3157:33;3187:2;3157:25;:10;3172:9;3157:25;:14;:25;:::i;:33::-;3138:52;;3211:32;3241:1;3224:11;3212:9;:23;;;;;;;3211:32;:29;:32;:::i;:::-;3200:43;2782:468;-1:-1:-1;;;;;;2782:468:0:o;1712:321::-;1794:12;1836:1;1826:7;:11;1818:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:1;1899:8;:12;:28;;;;;1926:1;1915:8;:12;1899:28;1891:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2018:8;1994:21;:7;2006:8;1994:21;:11;:21;:::i;:::-;:32;;;;;;;1712:321;-1:-1:-1;;;;1712:321:0:o;250:349::-;325:14;341;385:6;375:16;;:6;:16;;;;367:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;473:6;464:15;;:6;:15;;;:53;;502:6;510;464:53;;;483:6;491;464:53;445:72;;-1:-1:-1;445:72:0;-1:-1:-1;535:20:0;;;527:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:349;;;;;:::o;825:1377:1:-;1129:52;;;;;;:66;:52;;;;;;;;;;;;;;;;1036:12;;;;;;1149:7;1129:36;;;;;;:52;;;;;;;;;;;;;;;:36;:52;;;2:2:-1;;;;27:1;24;17:12;2:2;1129:52:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1129:52:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1129:52:1;:66;;;1125:152;;;1211:55;;;;;;:39;:55;;;;;;;;;;;;;;;;1231:7;1211:39;;;;;;:55;;;;;;;;;;;;;;;-1:-1:-1;1211:39:1;:55;;;2:2:-1;;;;27:1;24;17:12;2:2;1211:55:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1211:55:1;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1125:152:1;1287:13;1302;1319:55;1350:7;1359:6;1367;1319:30;:55::i;:::-;1286:88;;;;1388:8;1400:1;1388:13;:30;;;;-1:-1:-1;1405:13:1;;1388:30;1384:812;;;1456:14;;-1:-1:-1;1472:14:1;;-1:-1:-1;1384:812:1;;;1518:19;1540:60;1565:14;1581:8;1591;1540:24;:60::i;:::-;1518:82;;1636:14;1618;:32;1614:572;;1696:10;1678:14;:28;;1670:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1791:14;;-1:-1:-1;1807:14:1;-1:-1:-1;1807:14:1;1614:572;;;1861:19;1883:60;1908:14;1924:8;1934;1883:24;:60::i;:::-;1861:82;;1986:14;1968;:32;;1961:40;;;;2045:10;2027:14;:28;;2019:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2140:14;-1:-1:-1;2156:14:1;;-1:-1:-1;1614:572:1;1384:812;;825:1377;;;;;;;;;;;:::o;419:140:8:-;471:6;497;;;:30;;-1:-1:-1;;512:5:8;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1213:389:0;1306:13;1321;1347:14;1366:26;1377:6;1385;1366:10;:26::i;:::-;1346:46;;;1403:13;1418;1453:32;1461:7;1470:6;1478;1453:7;:32::i;:::-;1436:62;;;:64;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1436:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1436:64:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1436:64:0;;;;;;;1402:98;;;;;-1:-1:-1;1402:98:0;;-1:-1:-1;1533:16:0;;;;;;;;:62;;1576:8;1586;1533:62;;;1553:8;1563;1533:62;1510:85;;;;-1:-1:-1;1213:389:0;-1:-1:-1;;;;;;;1213:389:0:o
Swarm Source
ipfs://174a6283f46d97821c77d0a647e69da2d73d40480403af7410434a69bc1038f3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.