Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5601533 | 73 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
MagicSwapV2Router
Compiler Version
v0.8.20+commit.a1b79de6
ZkSolc Version
v1.5.4
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol"; import "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol"; import "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; import "./IMagicSwapV2Router.sol"; import "../UniswapV2/periphery/UniswapV2Router02.sol"; import "../UniswapV2/core/interfaces/IUniswapV2Pair.sol"; // ▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░▓▓▓▓▓▓▓▓▓▒░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░▒▓▓▓▓▓▓░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▒░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░▒▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▒▓▓▓▓▓▒░░░░░░░░░░░░░░░░░░░░░░░░░▒▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓░▒▓▓▓▓▓▓▓▓▒░░░░░░░░░░░░░░░░░▒▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▒░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▒░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▒░░░░░░░░░░░▒▓▓▓▓▓▓▓▓▓▓░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▒░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▒░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ // ▓▓▓▓▓▓▓▓▓ contract MagicSwapV2Router is IMagicSwapV2Router, UniswapV2Router02 { uint256 public constant ONE = 1e18; address public constant BURN_ADDRESS = address(0xdead); constructor(address _factory, address _WETH) UniswapV2Router02(_factory, _WETH) {} /// @inheritdoc IMagicSwapV2Router function depositVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _to ) external returns (uint256 amountMinted) { amountMinted = _depositVault(_collection, _tokenId, _amount, _vault, _to); } function _depositVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _to ) internal returns (uint256 amountMinted) { for (uint256 i = 0; i < _collection.length; i++) { INftVault.CollectionData memory collectionData = _vault.getAllowedCollectionData(_collection[i]); if (collectionData.nftType == INftVault.NftType.ERC721) { IERC721(_collection[i]).safeTransferFrom(msg.sender, address(_vault), _tokenId[i]); } else if (collectionData.nftType == INftVault.NftType.ERC1155) { IERC1155(_collection[i]).safeTransferFrom( msg.sender, address(_vault), _tokenId[i], _amount[i], bytes("") ); } else { revert INftVault.UnsupportedNft(); } } amountMinted = _vault.depositBatch(_to, _collection, _tokenId, _amount); } /// @inheritdoc IMagicSwapV2Router function withdrawVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _to ) external returns (uint256 amountBurned) { amountBurned = _withdrawVault(_collection, _tokenId, _amount, _vault, msg.sender, _to); } function _withdrawVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _from, address _to ) internal returns (uint256 amountBurned) { IERC20 vaultToken = IERC20(address(_vault)); uint256 amountToBurn = nftAmountToERC20(_amount); uint256 fromBalance = vaultToken.balanceOf(_from); uint256 totalSupply = vaultToken.totalSupply(); /// @dev if user withdraws all NFT tokens but does not have totalSupply of ERC20 tokens (some are locked /// in UniV2 pool), we optimistically assume that user has enough and adjust `amountToBurn` /// to user balance. If user balance does not meet required minimum then Vault will revert anyway. if (amountToBurn == totalSupply && fromBalance < totalSupply) { amountToBurn = fromBalance; } if (_from == address(this)) _approveIfNeeded(address(_vault), amountToBurn); vaultToken.transferFrom(_from, address(_vault), amountToBurn); amountBurned = _vault.withdrawBatch(_to, _collection, _tokenId, _amount); if (amountToBurn != amountBurned) revert MagicSwapV2WrongAmounts(); } /// @inheritdoc IMagicSwapV2Router function addLiquidityNFT( NftVaultLiquidityData calldata _vault, address _tokenB, uint256 _amountBDesired, uint256 _amountBMin, address _to, uint256 _deadline ) external ensure(_deadline) returns (uint256 amountA, uint256 amountB, uint256 lpAmount) { uint256 amountAMinted = _depositVault(_vault.collection, _vault.tokenId, _vault.amount, _vault.token, address(this)); (amountA, amountB) = _addLiquidity(address(_vault.token), _tokenB, amountAMinted, _amountBDesired, amountAMinted, _amountBMin); if (amountAMinted != amountA) revert MagicSwapV2WrongAmountDeposited(); address pair = UniswapV2Library.pairFor(factory, address(_vault.token), _tokenB); TransferHelper.safeTransfer(address(_vault.token), pair, amountA); TransferHelper.safeTransferFrom(_tokenB, msg.sender, pair, amountB); lpAmount = IUniswapV2Pair(pair).mint(_to); emit NFTLiquidityAdded(_to, pair, _vault); } /// @inheritdoc IMagicSwapV2Router function addLiquidityNFTETH( NftVaultLiquidityData calldata _vault, uint256 _amountETHMin, address _to, uint256 _deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 lpAmount) { uint256 amountMinted = _depositVault(_vault.collection, _vault.tokenId, _vault.amount, _vault.token, address(this)); _approveIfNeeded(address(_vault.token), amountMinted); (amountToken, amountETH, lpAmount) = _addLiquidityETH( address(_vault.token), amountMinted, amountMinted, _amountETHMin, address(this), _to, _deadline ); address pair = UniswapV2Library.pairFor(factory, address(_vault.token), WETH); emit NFTLiquidityAdded(_to, pair, _vault); } /// @inheritdoc IMagicSwapV2Router function addLiquidityNFTNFT( NftVaultLiquidityData calldata _vaultA, NftVaultLiquidityData calldata _vaultB, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline ) external ensure(_deadline) returns (uint256 amountA, uint256 amountB, uint256 lpAmount) { uint256 amountAMinted = _depositVault(_vaultA.collection, _vaultA.tokenId, _vaultA.amount, _vaultA.token, address(this)); uint256 amountBMinted = _depositVault(_vaultB.collection, _vaultB.tokenId, _vaultB.amount, _vaultB.token, address(this)); (amountA, amountB) = _addLiquidity( address(_vaultA.token), address(_vaultB.token), amountAMinted, amountBMinted, _amountAMin, _amountBMin ); if (amountAMinted != amountA) { if (amountAMinted < amountA) { revert MagicSwapV2WrongAmountADeposited(); } TransferHelper.safeTransfer(address(_vaultA.token), BURN_ADDRESS, amountAMinted - amountA); } if (amountBMinted != amountB) { if (amountBMinted < amountB) { revert MagicSwapV2WrongAmountBDeposited(); } TransferHelper.safeTransfer(address(_vaultB.token), BURN_ADDRESS, amountBMinted - amountB); } address pair = UniswapV2Library.pairFor(factory, address(_vaultA.token), address(_vaultB.token)); TransferHelper.safeTransfer(address(_vaultA.token), pair, amountA); TransferHelper.safeTransfer(address(_vaultB.token), pair, amountB); lpAmount = IUniswapV2Pair(pair).mint(_to); emit NFTNFTLiquidityAdded(_to, pair, _vaultA, _vaultB); } /// @inheritdoc IMagicSwapV2Router function removeLiquidityNFT( NftVaultLiquidityData calldata _vault, address _tokenB, uint256 _lpAmount, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline, bool _swapLeftover ) external returns (uint256 amountA, uint256 amountB) { (amountA, amountB) = removeLiquidity( address(_vault.token), _tokenB, _lpAmount, _amountAMin, _amountBMin, address(this), _deadline ); // withdraw NFTs and send to user uint256 amountBurned = _withdrawVault(_vault.collection, _vault.tokenId, _vault.amount, _vault.token, address(this), _to); amountA -= amountBurned; if (_swapLeftover) { uint256 amountOut = swapLeftover(address(_vault.token), _tokenB, amountA); amountA = 0; amountB += amountOut; } else if (amountA > 0) { TransferHelper.safeTransfer(address(_vault.token), _to, amountA); } TransferHelper.safeTransfer(_tokenB, _to, amountB); address pair = UniswapV2Library.pairFor(factory, address(_vault.token), _tokenB); emit NFTLiquidityRemoved(_to, pair, _vault); } /// @inheritdoc IMagicSwapV2Router function removeLiquidityNFTETH( NftVaultLiquidityData calldata _vault, uint256 _lpAmount, uint256 _amountTokenMin, uint256 _amountETHMin, address _to, uint256 _deadline, bool _swapLeftover ) external returns (uint256 amountToken, uint256 amountETH) { (amountToken, amountETH) = removeLiquidity( address(_vault.token), WETH, _lpAmount, _amountTokenMin, _amountETHMin, address(this), _deadline ); // withdraw NFTs and send to user uint256 amountBurned = _withdrawVault(_vault.collection, _vault.tokenId, _vault.amount, _vault.token, address(this), _to); amountToken -= amountBurned; if (_swapLeftover) { uint256 amountOut = swapLeftover(address(_vault.token), WETH, amountToken); amountToken = 0; amountETH += amountOut; } else if (amountToken > 0) { TransferHelper.safeTransfer(address(_vault.token), _to, amountToken); } IWETH(WETH).withdraw(amountETH); TransferHelper.safeTransferETH(_to, amountETH); address pair = UniswapV2Library.pairFor(factory, address(_vault.token), WETH); emit NFTLiquidityRemoved(_to, pair, _vault); } /// @inheritdoc IMagicSwapV2Router function removeLiquidityNFTNFT( NftVaultLiquidityData calldata _vaultA, NftVaultLiquidityData calldata _vaultB, uint256 _lpAmount, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline ) external returns (uint256 amountA, uint256 amountB) { (amountA, amountB) = removeLiquidity( address(_vaultA.token), address(_vaultB.token), _lpAmount, _amountAMin, _amountBMin, address(this), _deadline ); // withdraw NFTs and send to user uint256 amountBurnedA = _withdrawVault(_vaultA.collection, _vaultA.tokenId, _vaultA.amount, _vaultA.token, address(this), _to); uint256 amountBurnedB = _withdrawVault(_vaultB.collection, _vaultB.tokenId, _vaultB.amount, _vaultB.token, address(this), _to); amountA -= amountBurnedA; amountB -= amountBurnedB; if (amountA > 0) { TransferHelper.safeTransfer(address(_vaultA.token), BURN_ADDRESS, amountA); } if (amountB > 0) { TransferHelper.safeTransfer(address(_vaultB.token), BURN_ADDRESS, amountB); } address pair = UniswapV2Library.pairFor(factory, address(_vaultA.token), address(_vaultB.token)); emit NFTNFTLiquidityRemoved(_to, pair, _vaultA, _vaultB); } /// @inheritdoc IMagicSwapV2Router function swapNftForTokens( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountOutMin, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts) { uint256 amountIn = _depositVault(_collection, _tokenId, _amount, INftVault(_path[0]), address(this)); _approveIfNeeded(_path[0], amountIn); amounts = _swapExactTokensForTokens(amountIn, _amountOutMin, _path, address(this), _to, _deadline); } /// @inheritdoc IMagicSwapV2Router function swapNftForETH( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountOutMin, address[] calldata _path, address _to, uint256 _deadline ) external payable returns (uint256[] memory amounts) { if (_path[_path.length - 1] != WETH) revert MagicSwapV2InvalidPath(); uint256 amountIn = _depositVault(_collection, _tokenId, _amount, INftVault(_path[0]), address(this)); _approveIfNeeded(_path[0], amountIn); amounts = _swapExactTokensForTokens(amountIn, _amountOutMin, _path, address(this), address(this), _deadline); IWETH(WETH).withdraw(amounts[amounts.length - 1]); TransferHelper.safeTransferETH(_to, amounts[amounts.length - 1]); } /// @inheritdoc IMagicSwapV2Router function swapTokensForNft( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountInMax, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts) { uint256 amountOut = nftAmountToERC20(_amount); amounts = _swapTokensForExactTokens(amountOut, _amountInMax, _path, msg.sender, address(this), _deadline); // withdraw NFTs and send to user _withdrawVault(_collection, _tokenId, _amount, INftVault(_path[_path.length - 1]), address(this), _to); } /// @inheritdoc IMagicSwapV2Router function swapETHForNft( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, address[] calldata _path, address _to, uint256 _deadline ) external payable returns (uint256[] memory amounts) { uint256 amountOut = nftAmountToERC20(_amount); amounts = swapETHForExactTokens(amountOut, _path, address(this), _deadline); // withdraw NFTs and send to user _withdrawVault(_collection, _tokenId, _amount, INftVault(_path[_path.length - 1]), address(this), _to); } /// @inheritdoc IMagicSwapV2Router function swapNftForNft( address[] memory _collectionIn, uint256[] memory _tokenIdIn, uint256[] memory _amountIn, address[] memory _collectionOut, uint256[] memory _tokenIdOut, uint256[] memory _amountOut, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts) { uint256 amountIn = _depositVault(_collectionIn, _tokenIdIn, _amountIn, INftVault(_path[0]), address(this)); address vaultOut = _path[_path.length - 1]; uint256 amountOutMin = nftAmountToERC20(_amountOut); _approveIfNeeded(_path[0], amountIn); amounts = _swapExactTokensForTokens(amountIn, amountOutMin, _path, address(this), address(this), _deadline); // withdraw NFTs and send to user _withdrawVault(_collectionOut, _tokenIdOut, _amountOut, INftVault(vaultOut), address(this), _to); uint256 dust = amounts[amounts.length - 1] - amountOutMin; // send leftover of input token back to the pool and sync if (dust > 0) { // refund user unused token address pair = UniswapV2Library.pairFor(factory, _path[_path.length - 2], vaultOut); TransferHelper.safeTransfer(vaultOut, pair, dust); IUniswapV2Pair(pair).sync(); } } function swapLeftover(address _tokenA, address _tokenB, uint256 _amountIn) internal returns (uint256 amountOut) { if (_amountIn == 0) return 0; address[] memory path = new address[](2); path[0] = _tokenA; path[1] = _tokenB; _approveIfNeeded(_tokenA, _amountIn); // swap leftover to tokenB // TODO: can be front-run, issue? uint256[] memory amounts = _swapExactTokensForTokens(_amountIn, 1, path, address(this), address(this), block.timestamp); return amounts[1]; } function nftAmountToERC20(uint256[] memory _list) internal pure returns (uint256 amount) { for (uint256 i = 0; i < _list.length; i++) { amount += _list[i]; } amount *= ONE; } function _approveIfNeeded(address _token, uint256 _amount) internal { if (IERC20(_token).allowance(address(this), address(this)) < _amount) { SafeERC20.safeApprove(IERC20(_token), address(this), 0); SafeERC20.safeApprove(IERC20(_token), address(this), type(uint256).max); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; import "../core/interfaces/IUniswapV2Factory.sol"; import "../core/interfaces/IUniswapV2ERC20.sol"; import "../core/libraries/SafeMath.sol"; import "../libraries/TransferHelper.sol"; import "./interfaces/IUniswapV2Router01.sol"; import "./libraries/UniswapV2Library.sol"; import "./interfaces/IWETH.sol"; contract UniswapV2Router02 is IUniswapV2Router01 { using SafeMath for uint256; address public immutable override factory; address public immutable override WETH; modifier ensure(uint256 deadline) { if (deadline < block.timestamp) revert UniswapV2RouterExpired(); _; } constructor(address _factory, address _WETH) { factory = _factory; WETH = _WETH; } receive() external payable { if (msg.sender != WETH) revert UniswapV2RouterOnlyAcceptETHViaFallbackFromWETHContract(); } // **** ADD LIQUIDITY **** function _addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin ) internal virtual returns (uint256 amountA, uint256 amountB) { // create the pair if it doesn't exist yet if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) { IUniswapV2Factory(factory).createPair(tokenA, tokenB); } (uint256 reserveA, uint256 reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB); if (reserveA == 0 && reserveB == 0) { (amountA, amountB) = (amountADesired, amountBDesired); } else { uint256 amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB); if (amountBOptimal <= amountBDesired) { if (amountBOptimal < amountBMin) revert UniswapV2RouterInsufficientBAmount(); (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint256 amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA); assert(amountAOptimal <= amountADesired); if (amountAOptimal < amountAMin) revert UniswapV2RouterInsufficientAAmount(); (amountA, amountB) = (amountAOptimal, amountBDesired); } } } function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity) { (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin); address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA); TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB); liquidity = IUniswapV2Pair(pair).mint(to); } function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable virtual override returns (uint256 amountToken, uint256 amountETH, uint256 liquidity) { (amountToken, amountETH, liquidity) = _addLiquidityETH(token, amountTokenDesired, amountTokenMin, amountETHMin, msg.sender, to, deadline); } function _addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address from, address to, uint256 deadline ) internal ensure(deadline) returns (uint256 amountToken, uint256 amountETH, uint256 liquidity) { (amountToken, amountETH) = _addLiquidity(token, WETH, amountTokenDesired, msg.value, amountTokenMin, amountETHMin); address pair = UniswapV2Library.pairFor(factory, token, WETH); TransferHelper.safeTransferFrom(token, from, pair, amountToken); IWETH(WETH).deposit{value: amountETH}(); assert(IWETH(WETH).transfer(pair, amountETH)); liquidity = IUniswapV2Pair(pair).mint(to); // refund dust eth, if any if (msg.value > amountETH) TransferHelper.safeTransferETH(to, msg.value - amountETH); } // **** REMOVE LIQUIDITY **** function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) public virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) { address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); IUniswapV2ERC20(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair (uint256 amount0, uint256 amount1) = IUniswapV2Pair(pair).burn(to); (address token0,) = UniswapV2Library.sortTokens(tokenA, tokenB); (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0); if (amountA < amountAMin) revert UniswapV2RouterInsufficientAAmount(); if (amountB < amountBMin) revert UniswapV2RouterInsufficientBAmount(); } function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 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, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint256 amountA, uint256 amountB) { address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB); uint256 value = approveMax ? type(uint256).max : liquidity; IUniswapV2ERC20(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, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external virtual override returns (uint256 amountToken, uint256 amountETH) { address pair = UniswapV2Library.pairFor(factory, token, WETH); uint256 value = approveMax ? type(uint256).max : liquidity; IUniswapV2ERC20(pair).permit(msg.sender, address(this), value, deadline, v, r, s); (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline); } // **** SWAP **** // requires the initial amount to have already been sent to the first pair function _swap(uint256[] memory amounts, address[] memory path, address _to) internal virtual { for (uint256 i; i < path.length - 1; i++) { (address input, address output) = (path[i], path[i + 1]); (address token0,) = UniswapV2Library.sortTokens(input, output); uint256 amountOut = amounts[i + 1]; (uint256 amount0Out, uint256 amount1Out) = input == token0 ? (uint256(0), amountOut) : (amountOut, uint256(0)); address to = i < path.length - 2 ? UniswapV2Library.pairFor(factory, output, path[i + 2]) : _to; IUniswapV2Pair(UniswapV2Library.pairFor(factory, input, output)).swap( amount0Out, amount1Out, to, new bytes(0) ); } } function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] memory path, address to, uint256 deadline ) public virtual override returns (uint256[] memory amounts) { amounts = _swapExactTokensForTokens(amountIn, amountOutMin, path, msg.sender, to, deadline); } function _swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] memory path, address from, address to, uint256 deadline ) internal ensure(deadline) returns (uint256[] memory amounts) { amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path); if (amounts[amounts.length - 1] < amountOutMin) revert UniswapV2RouterInsufficientOutputAmount(); TransferHelper.safeTransferFrom(path[0], from, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]); _swap(amounts, path, to); } function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual override returns (uint256[] memory amounts) { amounts = _swapTokensForExactTokens(amountOut, amountInMax, path, msg.sender, to, deadline); } function _swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address from, address to, uint256 deadline ) internal ensure(deadline) returns (uint256[] memory amounts) { amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path); if (amounts[0] > amountInMax) revert UniswapV2RouterExcessiveInputAmount(); TransferHelper.safeTransferFrom(path[0], from, UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0]); _swap(amounts, path, to); } function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable virtual override ensure(deadline) returns (uint256[] memory amounts) { if (path[0] != WETH) revert UniswapV2RouterInvalidPath(); amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path); if (amounts[amounts.length - 1] < amountOutMin) revert UniswapV2RouterInsufficientOutputAmount(); IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(UniswapV2Library.pairFor(factory, path[0], path[1]), amounts[0])); _swap(amounts, path, to); } function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external virtual override ensure(deadline) returns (uint256[] memory amounts) { if (path[path.length - 1] != WETH) revert UniswapV2RouterInvalidPath(); amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path); if (amounts[0] > amountInMax) revert UniswapV2RouterExcessiveInputAmount(); TransferHelper.safeTransferFrom( path[0], msg.sender, UniswapV2Library.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( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external virtual override ensure(deadline) returns (uint256[] memory amounts) { if (path[path.length - 1] != WETH) revert UniswapV2RouterInvalidPath(); amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path); if (amounts[amounts.length - 1] < amountOutMin) revert UniswapV2RouterInsufficientOutputAmount(); TransferHelper.safeTransferFrom( path[0], msg.sender, UniswapV2Library.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(uint256 amountOut, address[] calldata path, address to, uint256 deadline) public payable virtual override ensure(deadline) returns (uint256[] memory amounts) { if (path[0] != WETH) revert UniswapV2RouterInvalidPath(); amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path); if (amounts[0] > msg.value) revert UniswapV2RouterExcessiveInputAmount(); IWETH(WETH).deposit{value: amounts[0]}(); assert(IWETH(WETH).transfer(UniswapV2Library.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]); } // **** LIBRARY FUNCTIONS **** function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) public pure virtual override returns (uint256 amountB) { return UniswapV2Library.quote(amountA, reserveA, reserveB); } function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut, address pair) public view virtual override returns (uint256 amountOut) { return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut, pair, factory); } function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut, address pair) public view virtual override returns (uint256 amountIn) { return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut, pair, factory); } function getAmountsOut(uint256 amountIn, address[] memory path) public view virtual override returns (uint256[] memory amounts) { return UniswapV2Library.getAmountsOut(factory, amountIn, path); } function getAmountsIn(uint256 amountOut, address[] memory path) public view virtual override returns (uint256[] memory amounts) { return UniswapV2Library.getAmountsIn(factory, amountOut, path); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; interface IUniswapV2Pair { event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); /// @notice Emitted by the pool for increases to the number of observations that can be stored /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index /// just before a mint/swap/burn. /// @param observationCardinalityNextOld The previous value of the next observation cardinality /// @param observationCardinalityNextNew The updated value of the next observation cardinality event IncreaseObservationCardinalityNext( uint16 observationCardinalityNextOld, uint16 observationCardinalityNextNew ); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 observations(uint256 index) external view returns (uint32 blockTimestamp, uint256 priceCumulative, bool initialized); function observe(uint32[] calldata secondsAgos) external view returns (uint256[] memory tickCumulatives); function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external; function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "../UniswapV2/periphery/interfaces/IUniswapV2Router01.sol"; import "../Vault/INftVault.sol"; /// @title Router contract for swapping, managing liquidity and interacting with vaults interface IMagicSwapV2Router is IUniswapV2Router01 { /// @dev Amounts does not match error MagicSwapV2WrongAmounts(); error MagicSwapV2WrongAmountDeposited(); error MagicSwapV2WrongAmountADeposited(); error MagicSwapV2WrongAmountBDeposited(); error MagicSwapV2InvalidPath(); /// @notice Struct that specifies data for liquidity-related operations on vault. /// @param token address of NFT vault /// @param collection list of NFT addresses /// @param tokenId list of token IDs /// @param amount list of token amounts. For ERC721 amount is always 1. struct NftVaultLiquidityData { INftVault token; address[] collection; uint256[] tokenId; uint256[] amount; } /// @notice Emitted when NFT-ERC20 liquidity is added /// @param to address that receives LP tokens /// @param pair address of pair where NFTs are deposited /// @param vault vault data of deposited NFTs event NFTLiquidityAdded(address indexed to, address pair, NftVaultLiquidityData vault); /// @notice Emitted when NFT-NFT liquidity is added /// @param to address that receives LP tokens /// @param pair address of pair where NFTs are deposited /// @param vaultA vault data of deposited NFTs for first side /// @param vaultB vault data of deposited NFTs for second side event NFTNFTLiquidityAdded( address indexed to, address pair, NftVaultLiquidityData vaultA, NftVaultLiquidityData vaultB ); /// @notice Emitted when NFT-ERC20 liquidity is removed /// @param to address that receives withdrawn assets /// @param pair address of pair where NFTs are withdrawn /// @param vault vault data of withdrawn NFTs event NFTLiquidityRemoved(address indexed to, address pair, NftVaultLiquidityData vault); /// @notice Emitted when NFT-NFT liquidity is removed /// @param to address that receives withdrawn assets /// @param pair address of pair where NFTs are withdrawn /// @param vaultA vault data of withdrawn NFTs for first side /// @param vaultB vault data of withdrawn NFTs for second side event NFTNFTLiquidityRemoved( address indexed to, address pair, NftVaultLiquidityData vaultA, NftVaultLiquidityData vaultB ); /// @notice Deposit NFTs to vault /// @dev All NFTs must be approved for transfer. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to deposit /// @param _tokenId list of token IDs to deposit /// @param _amount list of token amounts to deposit. For ERC721 amount is always 1. /// @param _vault address of the vault where NFTs are deposited /// @param _to address that gets ERC20 for deposited NFTs /// @return amountMinted amount of ERC20 minted for deposited NFTs function depositVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _to ) external returns (uint256 amountMinted); /// @dev Withdraw NFTs from vault /// @dev Vault token must be approved for transfer. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to withdraw /// @param _tokenId list of token IDs to withdraw /// @param _amount list of token amounts to withdraw. For ERC721 amount is always 1. /// @param _vault address of the vault to withdraw NFTs from /// @param _to address that gets withdrawn NFTs /// @return amountBurned amount of ERC20 redeemed for NFTs function withdrawVault( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, INftVault _vault, address _to ) external returns (uint256 amountBurned); /// @notice Add liquidity to UniV2 pool using NFTs and second ERC20 token /// @dev All NFTs and ERC20 token must be approved for transfer. `_vault.collection`, /// `_vault.tokenId` and `_vault.amount` must be of the same length. /// @param _vault vault data for NFTs to deposit as liquidity /// @param _tokenB address of token B /// @param _amountBDesired desired amount of token B to be added as liquidity /// @param _amountBMin minimum amount of token B to be added as liquidity /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @return amountA amount of token A added as liquidity /// @return amountB amount of token B added as liquidity /// @return lpAmount amount of LP token minted and sent to `_to` function addLiquidityNFT( NftVaultLiquidityData calldata _vault, address _tokenB, uint256 _amountBDesired, uint256 _amountBMin, address _to, uint256 _deadline ) external returns (uint256 amountA, uint256 amountB, uint256 lpAmount); /// @notice Add liquidity to UniV2 pool using NFTs and ETH /// @dev All NFTs and ERC20 token must be approved for transfer. `_vault.collection`, /// `_vault.tokenId` and `_vault.amount` must be of the same length. /// @param _vault vault data for NFTs to deposit as liquidity /// @param _amountETHMin desired amount of ETH to be added as liquidity /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @return amountToken amount of vault token added as liquidity /// @return amountETH amount of ETH added as liquidity /// @return lpAmount amount of LP token minted and sent to `_to` function addLiquidityNFTETH( NftVaultLiquidityData calldata _vault, uint256 _amountETHMin, address _to, uint256 _deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 lpAmount); /// @notice Add liquidity to UniV2 pool using two NFT vaults /// @dev All NFTs must be approved for transfer. `_vaultA.collection`, /// `_vaultA.tokenId` and `_vaultA.amount` must be of the same length. /// `_vaultB.collection`, `_vaultB.tokenId` and `_vaultB.amount` must be of the same length. /// @param _vaultA vault data for NFTs to deposit as liquidity for first side /// @param _vaultB vault data for NFTs to deposit as liquidity for second side /// @param _amountAMin minimum amount of token A to be deposited /// @param _amountBMin minimum amount of token B to be deposited /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @return amountA amount of token A added as liquidity /// @return amountB amount of token B added as liquidity /// @return lpAmount amount of LP token minted and sent to `_to` function addLiquidityNFTNFT( NftVaultLiquidityData calldata _vaultA, NftVaultLiquidityData calldata _vaultB, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline ) external returns (uint256 amountA, uint256 amountB, uint256 lpAmount); /// @notice Remove liquidity from UniV2 pool and get NFTs and ERC20 token /// @dev Lp token must be approved for transfer. `_vault.collection`, /// `_vault.tokenId` and `_vault.amount` must be of the same length. /// @param _vault vault data for NFTs to withdraw from liquidity /// @param _tokenB address of token B /// @param _lpAmount amount of LP token to redeem /// @param _amountAMin minimum amount of token A to be redeemed /// @param _amountBMin minimum amount of token B to be redeemed /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @param _swapLeftover if true, fraction of vault token will be swaped to Token B /// @return amountA amount of token A redeemed /// @return amountB amount of token B redeemed function removeLiquidityNFT( NftVaultLiquidityData calldata _vault, address _tokenB, uint256 _lpAmount, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline, bool _swapLeftover ) external returns (uint256 amountA, uint256 amountB); /// @notice Remove liquidity from UniV2 pool and get NFTs and ETH /// @dev Lp token must be approved for transfer. `_vault.collection`, /// `_vault.tokenId` and `_vault.amount` must be of the same length. /// @param _vault vault data for NFTs to withdraw from liquidity /// @param _lpAmount amount of LP token to redeem /// @param _amountTokenMin minimum amount of vault token to be redeemed /// @param _amountETHMin minimum amount of ETH to be redeemed /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @param _swapLeftover if true, fraction of vault token will be swaped to ETH /// @return amountToken amount of vault token redeemed /// @return amountETH amount of ETH redeemed function removeLiquidityNFTETH( NftVaultLiquidityData calldata _vault, uint256 _lpAmount, uint256 _amountTokenMin, uint256 _amountETHMin, address _to, uint256 _deadline, bool _swapLeftover ) external returns (uint256 amountToken, uint256 amountETH); /// @notice Remove liquidity from UniV2 pool and get NFTs /// @dev Lp token must be approved for transfer. `_vaultA.collection`, /// `_vaultA.tokenId` and `_vaultA.amount` must be of the same length. /// `_vaultB.collection`, `_vaultB.tokenId` and `_vaultB.amount` must be of the same length. /// @param _vaultA vault data for NFTs to withdraw from liquidity for first side /// @param _vaultB vault data for NFTs to withdraw from liquidity for second side /// @param _lpAmount amount of LP token to redeem /// @param _amountAMin minimum amount of token A to be redeemed /// @param _amountBMin minimum amount of token B to be redeemed /// @param _to address that gets LP tokens /// @param _deadline transaction deadline /// @return amountA amount of token A redeemed /// @return amountB amount of token B redeemed function removeLiquidityNFTNFT( NftVaultLiquidityData calldata _vaultA, NftVaultLiquidityData calldata _vaultB, uint256 _lpAmount, uint256 _amountAMin, uint256 _amountBMin, address _to, uint256 _deadline ) external returns (uint256 amountA, uint256 amountB); /// @notice Swap NFTs for ERC20 /// @dev All NFTs must be approved for transfer. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to swap for token /// @param _tokenId list of token IDs to swap for token /// @param _amount list of token amounts to swap for token. For ERC721 amount is always 1. /// @param _amountOutMin minimum amount of output token expected after swap /// @param _path list of token addresses to swap over /// @param _to address that gets output token /// @param _deadline transaction deadline /// @return amounts input and output amounts of swaps function swapNftForTokens( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountOutMin, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts); /// @notice Swap NFTs for ETH /// @dev All NFTs must be approved for transfer. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to swap for ETH /// @param _tokenId list of token IDs to swap for ETH /// @param _amount list of token amounts to swap for ETH. For ERC721 amount is always 1. /// @param _amountOutMin minimum amount of ETH expected after swap /// @param _path list of token addresses to swap over /// @param _to address that gets ETH /// @param _deadline transaction deadline /// @return amounts input and output amounts of swaps function swapNftForETH( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountOutMin, address[] calldata _path, address _to, uint256 _deadline ) external payable returns (uint256[] memory amounts); /// @notice Swap ERC20 for NFTs /// @dev ERC20 must be approved for transfer. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to receive for tokens /// @param _tokenId list of token IDs to receive for tokens /// @param _amount list of token amounts to receive for tokens. For ERC721 amount is always 1. /// @param _amountInMax maximum acceptable amount of token to swap for NFTs /// @param _path list of token addresses to swap over /// @param _to address that gets NFTs /// @param _deadline transaction deadline /// @return amounts input and output amounts of swaps function swapTokensForNft( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, uint256 _amountInMax, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts); /// @notice Swap ETH for NFTs /// @dev Does not require any approvals. `_collection`, `_tokenId` /// and `_amount` must be of the same length. /// @param _collection list of NFT addresses to receive for ETH /// @param _tokenId list of token IDs to receive for ETH /// @param _amount list of token amounts to receive for ETH. For ERC721 amount is always 1. /// @param _path list of token addresses to swap over /// @param _to address that gets NFTs /// @param _deadline transaction deadline /// @return amounts input and output amounts of swaps function swapETHForNft( address[] memory _collection, uint256[] memory _tokenId, uint256[] memory _amount, address[] calldata _path, address _to, uint256 _deadline ) external payable returns (uint256[] memory amounts); /// @notice Swap NFTs for NFTs /// @dev All input NFTs must be approved for transfer. It is most likely that input NFTs create a leftover /// during the swap. That leftover is returend to the pool as LP rewards. `_collectionIn`, `_tokenIdIn` and `_amountIn` /// as well as `_collectionOut`, `_tokenIdOut` and `_amountOut` must be of the same length. /// @param _collectionIn list of input NFT addresses /// @param _tokenIdIn list of input token IDs /// @param _amountIn list of input token amounts. For ERC721 amount is always 1. /// @param _collectionOut list of output NFT addresses /// @param _tokenIdOut list of output token IDs /// @param _amountOut list of output token amounts. For ERC721 amount is always 1. /// @param _path list of token addresses to swap over /// @param _to address that gets NFTs /// @param _deadline transaction deadline /// @return amounts input and output amounts of swaps function swapNftForNft( address[] memory _collectionIn, uint256[] memory _tokenIdIn, uint256[] memory _amountIn, address[] memory _collectionOut, uint256[] memory _tokenIdOut, uint256[] memory _amountOut, address[] calldata _path, address _to, uint256 _deadline ) external returns (uint256[] memory amounts); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; import "../extensions/draft-IERC20Permit.sol"; import "../../../utils/Address.sol"; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.8.20; // 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"); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; interface IUniswapV2Factory { struct DefaultFees { /// @dev in basis point, denominated by 10000 uint256 protocolFee; /// @dev in basis point, denominated by 10000 uint256 lpFee; } struct Fees { address royaltiesBeneficiary; /// @dev in basis point, denominated by 10000 uint256 royaltiesFee; /// @dev in basis point, denominated by 10000 uint256 protocolFee; /// @dev in basis point, denominated by 10000 uint256 lpFee; /// @dev if true, Fees.protocolFee is used even if set to 0 bool protocolFeeOverride; /// @dev if true, Fees.lpFee is used even if set to 0 bool lpFeeOverride; } event PairCreated(address indexed token0, address indexed token1, address pair, uint256); event DefaultFeesSet(DefaultFees fees); event LpFeesSet(address indexed pair, uint256 lpFee, bool overrideFee); event RoyaltiesFeesSet(address indexed pair, address beneficiary, uint256 royaltiesFee); event ProtocolFeesSet(address indexed pair, uint256 protocolFee, bool overrideFee); event ProtocolFeeBeneficiarySet(address beneficiary); /// @notice Returns total fee pair charges /// @dev Fee is capped at MAX_FEE /// @param pair address of pair for which to calculate fees /// @return totalFee total fee amount denominated in basis points function getTotalFee(address pair) external view returns (uint256 totalFee); /// @notice Returns all fees for pair /// @return lpFee fee changed by liquidity providers, denominated in basis points /// @return royaltiesFee royalties paid to NFT creators, denominated in basis points /// @return protocolFee fee paid to the protocol, denominated in basis points function getFees(address _pair) external view returns (uint256 lpFee, uint256 royaltiesFee, uint256 protocolFee); /// @notice Returns all fees for pair and beneficiaries /// @dev Fees are capped in total by MAX_FEE value. If by mistake or otherwise owner of this contract /// does a combination of transactions and tries to achive total fees above MAX_FEE, fees are allocatied /// by priority: /// 1. lp fee /// 2. royalties /// 3. protocol fee /// If MAX_FEE == 5000, lpFee == 500, royaltiesFee == 4000 and protocolFee == 4000 then /// effective fees will be allocated acording to the fee priority up to MAX_FEE value. /// In this example: lpFee == 500, royaltiesFee == 4000 and protocolFee == 500. /// @param pair address of pair for which to calculate fees and beneficiaries /// @return lpFee fee changed by liquidity providers, denominated in basis points /// @return royaltiesBeneficiary address that gets royalties /// @return royaltiesFee royalties paid to NFT creators, denominated in basis points /// @return protocolBeneficiary address that gets protocol fees /// @return protocolFee fee paid to the protocol, denominated in basis points function getFeesAndRecipients(address pair) external view returns ( uint256 lpFee, address royaltiesBeneficiary, uint256 royaltiesFee, address protocolBeneficiary, uint256 protocolFee ); /// @return protocolFeeBeneficiary address that gets protocol fees function protocolFeeBeneficiary() external view returns (address protocolFeeBeneficiary); /// @notice Internal mapping to store fees for pair. It is exposed for advanced integrations /// and in most cases contracts should use fee getters. function pairFees(address pair) external view returns (address, uint256, uint256, uint256, bool, bool); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs() external view returns (address[] memory pairs); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); /// @notice Sets default fees for all pairs /// @param fees struct with default fees function setDefaultFees(DefaultFees memory fees) external; /// @notice Sets royalties fee and beneficiary for pair /// @param pair address of pair for which to set fee /// @param beneficiary address that gets royalties /// @param royaltiesFee amount of royalties fee denominated in basis points function setRoyaltiesFee(address pair, address beneficiary, uint256 royaltiesFee) external; /// @notice Sets protocol fee for pair /// @param pair address of pair for which to set fee /// @param protocolFee amount of protocol fee denominated in basis points /// @param overrideFee if true, fee will be overriden even if set to 0 function setProtocolFee(address pair, uint256 protocolFee, bool overrideFee) external; /// @notice Sets lp fee for pair /// @param pair address of pair for which to set fee /// @param lpFee amount of lp fee denominated in basis points /// @param overrideFee if true, fee will be overriden even if set to 0 function setLpFee(address pair, uint256 lpFee, bool overrideFee) external; /// @notice Sets protocol fee beneficiary /// @param _beneficiary address that gets protocol fees function setProtocolFeeBeneficiary(address _beneficiary) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; /// @title Vault contract for wrapping NFTs (ERC721/ERC1155) to ERC20 interface INftVault { enum NftType { ERC721, ERC1155 } /// @notice Vault configuration struct that specifies which NFTs are accepted in vault. /// @param addr address of nft contract /// @param nftType standard that NFT supports { ERC721, ERC1155 } /// @param allowAllIds if true, all tokens are allowed in the vault. If false, tokenIds must be /// listed one by one. /// @param tokenIds list of tokens supported by vault. If allowAllIds is true, list must be empty. struct CollectionData { address addr; NftType nftType; bool allowAllIds; uint256[] tokenIds; } /// @notice Struct for allowed tokens. Stores data in an optimized way to read it in vault. /// @param tokenIds mapping from tokenid to is-allowed /// @param tokenIdList list of all tokens that are allowed /// @param allowAllIds if true, all tokens are allowed struct AllowedTokenIds { mapping(uint256 => bool) tokenIds; uint256[] tokenIdList; bool allowAllIds; } /// @notice Emitted during initiation when collection added to allowed list /// @param collection collection details event CollectionAllowed(CollectionData collection); /// @notice Emitted on depositing NFT to vault /// @param to address that gets vault ERC20 tokens /// @param collection NFT address that is deposited /// @param tokenId token id that is deposited /// @param amount amount of token that is deposited, for ERC721 always 1 event Deposit(address indexed to, address indexed collection, uint256 tokenId, uint256 amount); /// @notice Emitted on withdrawing NFT from vault /// @param to address that gets withdrawn NFTs /// @param collection NFT address that is withdrawn /// @param tokenId token id that is withdrawn /// @param amount amount of token that is withdrawn, for ERC721 always 1 event Withdraw(address indexed to, address indexed collection, uint256 tokenId, uint256 amount); /// @dev Contract is already initialized error Initialized(); /// @dev Collection data is empty error InvalidCollections(); /// @dev Collection already added error DuplicateCollection(); /// @dev Token id is listed twice in CollectionData.tokenIds array error TokenIdAlreadySet(); /// @dev Token ids in CollectionData.tokenIds array are not sorted error TokenIdsMustBeSorted(); /// @dev ERC165 suggests that NFT is supporting ERC721 but ERC1155 is claimed error ExpectedERC721(); /// @dev ERC165 suggests that NFT is supporting ERC1155 but ERC721 is claimed error ExpectedERC1155(); /// @dev Collection does not support all token IDs however list of IDs is empty. /// CollectionData.tokenIds is empty and CollectionData.allowAllIds is false. error MissingTokenIds(); /// @dev CollectionData.tokenIds is not empty however Collection supports all token IDs. error TokenIdsMustBeEmpty(); /// @dev Token is not allowed in vault error DisallowedToken(); /// @dev Token amount is invalid eg. amount == 0 error WrongAmount(); /// @dev Token amount is invalid for ERC721, amount != 1 error WrongERC721Amount(); /// @dev Trying to interact with token that does not support ERC721 nor ERC1155 error UnsupportedNft(); /// @dev Token is allowed in vault but must not be error MustBeDisallowedToken(); /// @notice value of 1 token, including decimals function ONE() external view returns (uint256); /// @notice amount of token required for last NFT to be redeemed function LAST_NFT_AMOUNT() external view returns (uint256); /// @notice unique id of the vault generated using its configuration function VAULT_HASH() external view returns (bytes32); /// @notice Initialize Vault with collection config /// @dev Called by factory during deployment /// @param collections struct array of allowed collections and token IDs function init(CollectionData[] memory collections) external; /// @notice Returns hash of vault configuration /// @param collections struct array of allowed collections and token IDs /// @return configuration hash function hashVault(CollectionData[] memory collections) external pure returns (bytes32); /// @notice Returns balances of NFT deposited to the vault /// @param collectionAddr NFT address /// @param tokenId NFT's token ID /// @return amount amount of NFT deposited to the vault function balances(address collectionAddr, uint256 tokenId) external view returns (uint256 amount); /// @notice Get array of NFT addresses that are allowed to be deposited to the vault /// @dev Keep in mind that returned address(es) can be further restricted on token ID level /// @return collections array of NFT addresses that are allowed to be deposited to the vault function getAllowedCollections() external view returns (address[] memory collections); /// @return number of NFT addresses that are allowed to be deposited to the vault function getAllowedCollectionsLength() external view returns (uint256); /// @notice Get details of allowed collection /// @return struct with details of allowed collection function getAllowedCollectionData(address collectionAddr) external view returns (CollectionData memory); /// @notice Validates type of collection (ERC721 or ERC1155) /// @dev It uses ERC165 to check interface support. If support can not be detected without doubt, user input is trusted. /// @param collectionAddr NFT address /// @param nftType NFT type, ERC721 or ERC1155 /// @return validatedNftType returns validated enum NftType as uint256 function validateNftType(address collectionAddr, NftType nftType) external view returns (uint256 validatedNftType); /// @notice Returns if true token can be deposited /// @param collection NFT address /// @param tokenId NFT token ID /// @return true if allowed function isTokenAllowed(address collection, uint256 tokenId) external view returns (bool); /// @notice Returns balance of token sent to the vault /// @dev Reads balance of tokens freshy sent to the vault /// @param collection NFT address /// @param tokenId NFT token ID /// @return balance of sent token, for ERC721 it's always 1 function getSentTokenBalance(address collection, uint256 tokenId) external view returns (uint256); /// @notice Deposit NFT to vault /// @dev This low-level function should be called from a contract which performs important safety checks /// @param to address that gets minted ERC20 token /// @param collection address of deposited NFT /// @param tokenId token ID of deposited NFT /// @param amount amount of deposited NFT, for ERC721 it's always 1 /// @return amountMinted amount of minted ERC20 token function deposit(address to, address collection, uint256 tokenId, uint256 amount) external returns (uint256 amountMinted); /// @notice Deposit NFTs to vault /// @dev This low-level function should be called from a contract which performs important safety checks /// @param to address that gets minted ERC20 token /// @param collection array of addresses of deposited NFTs /// @param tokenId array of token IDs of deposited NFTs /// @param amount array if amounts of deposited NFTs, for ERC721 it's always 1 /// @return amountMinted amount of minted ERC20 token function depositBatch(address to, address[] memory collection, uint256[] memory tokenId, uint256[] memory amount) external returns (uint256 amountMinted); /// @notice Withdraw NFT from vault /// @dev This low-level function should be called from a contract which performs important safety checks /// @param to address that gets NFT /// @param collection address of NFT to withdraw /// @param tokenId token ID of NFT to withdraw /// @param amount amount of NFT to withdraw, for ERC721 it's always 1 /// @return amountBurned amount of burned ERC20 function withdraw(address to, address collection, uint256 tokenId, uint256 amount) external returns (uint256 amountBurned); /// @notice Withdraw NFTs from vault /// @dev This low-level function should be called from a contract which performs important safety checks /// @param to address that gets NFT /// @param collection array of addresses of NFTs to withdraw /// @param tokenId array of token IDs of NFTs to withdraw /// @param amount array of amounts of NFTs to withdraw, for ERC721 it's always 1 /// @return amountBurned amount of burned ERC20 function withdrawBatch(address to, address[] memory collection, uint256[] memory tokenId, uint256[] memory amount) external returns (uint256 amountBurned); /// @notice Allow anyone to withdraw tokens sent to this vault by accident /// Only unsupported NFTs can be skimmed. /// @param to address that gets NFT /// @param nftType NftType of skimmed NFT /// @param collection address of NFT to skim /// @param tokenId token ID of NFT to skim /// @param amount amount of NFT to skim, for ERC721 it's always 1 function skim(address to, NftType nftType, address collection, uint256 tokenId, uint256 amount) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; interface IUniswapV2ERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 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 (uint256); function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; interface IUniswapV2Router01 { error UniswapV2RouterExpired(); error UniswapV2RouterOnlyAcceptETHViaFallbackFromWETHContract(); error UniswapV2RouterInsufficientBAmount(); error UniswapV2RouterInsufficientAAmount(); error UniswapV2RouterInsufficientOutputAmount(); error UniswapV2RouterExcessiveInputAmount(); error UniswapV2RouterInvalidPath(); function factory() external view returns (address); function WETH() external view returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts); function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB); function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut, address pair) external view returns (uint256 amountOut); function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut, address pair) external view returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; import "../../core/interfaces/IUniswapV2Pair.sol"; import "../../core/interfaces/IUniswapV2Factory.sol"; import "../../core/libraries/SafeMath.sol"; /** * @notice Modified UniswapV2 to work with zksync stack based CREATE2 * */ library UniswapV2Library { using SafeMath for uint256; bytes32 constant INIT_CODE_HASH = hex"010004df694643e2d7e17535f16c21e9d1698b06c2ef330166830639b23b7f43"; /// @dev 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, "UniswapV2Library: IDENTICAL_ADDRESSES"); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0), "UniswapV2Library: 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( uint160( uint256( keccak256( abi.encodePacked( bytes32(0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494), // keccak256("zksyncCreate2") bytes32(uint256(uint160(factory))), // sender keccak256(abi.encodePacked(token0, token1)), // salt INIT_CODE_HASH, bytes32(0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470) // constructor input hash: keccak256("") ) ) ) ) ); } /// @dev fetches and sorts the reserves for a pair function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint256 reserveA, uint256 reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint256 reserve0, uint256 reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } /// @dev given some amount of an asset and pair reserves, returns an equivalent amount of the other asset function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) internal pure returns (uint256 amountB) { require(amountA > 0, "UniswapV2Library: INSUFFICIENT_AMOUNT"); require(reserveA > 0 && reserveB > 0, "UniswapV2Library: INSUFFICIENT_LIQUIDITY"); amountB = amountA.mul(reserveB) / reserveA; } /// @dev given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut, address pair, address factory) internal view returns (uint256 amountOut) { require(amountIn > 0, "UniswapV2Library: INSUFFICIENT_INPUT_AMOUNT"); require(reserveIn > 0 && reserveOut > 0, "UniswapV2Library: INSUFFICIENT_LIQUIDITY"); uint256 totalFee = IUniswapV2Factory(factory).getTotalFee(pair); uint256 amountInWithFee = amountIn.mul(10000 - totalFee); uint256 numerator = amountInWithFee.mul(reserveOut); uint256 denominator = reserveIn.mul(10000).add(amountInWithFee); amountOut = numerator / denominator; } /// @dev given an output amount of an asset and pair reserves, returns a required input amount of the other asset function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut, address pair, address factory) internal view returns (uint256 amountIn) { require(amountOut > 0, "UniswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT"); require(reserveIn > 0 && reserveOut > 0, "UniswapV2Library: INSUFFICIENT_LIQUIDITY"); uint256 totalFee = IUniswapV2Factory(factory).getTotalFee(pair); uint256 numerator = reserveIn.mul(amountOut).mul(10000); uint256 denominator = reserveOut.sub(amountOut).mul(10000 - totalFee); amountIn = (numerator / denominator).add(1); } /// @dev performs chained getAmountOut calculations on any number of pairs function getAmountsOut(address factory, uint256 amountIn, address[] memory path) internal view returns (uint256[] memory amounts) { require(path.length >= 2, "UniswapV2Library: INVALID_PATH"); amounts = new uint256[](path.length); amounts[0] = amountIn; for (uint256 i; i < path.length - 1; i++) { (uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i], path[i + 1]); amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut, pairFor(factory, path[i], path[i + 1]), factory); } } /// @dev performs chained getAmountIn calculations on any number of pairs function getAmountsIn(address factory, uint256 amountOut, address[] memory path) internal view returns (uint256[] memory amounts) { require(path.length >= 2, "UniswapV2Library: INVALID_PATH"); amounts = new uint256[](path.length); amounts[amounts.length - 1] = amountOut; for (uint256 i = path.length - 1; i > 0; i--) { (uint256 reserveIn, uint256 reserveOut) = getReserves(factory, path[i - 1], path[i]); address pair = pairFor(factory, path[i - 1], path[i]); amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut, pair, factory); } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.20; interface IWETH { function deposit() external payable; function transfer(address to, uint256 value) external returns (bool); function withdraw(uint256) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MagicSwapV2InvalidPath","type":"error"},{"inputs":[],"name":"MagicSwapV2WrongAmountADeposited","type":"error"},{"inputs":[],"name":"MagicSwapV2WrongAmountBDeposited","type":"error"},{"inputs":[],"name":"MagicSwapV2WrongAmountDeposited","type":"error"},{"inputs":[],"name":"MagicSwapV2WrongAmounts","type":"error"},{"inputs":[],"name":"UniswapV2RouterExcessiveInputAmount","type":"error"},{"inputs":[],"name":"UniswapV2RouterExpired","type":"error"},{"inputs":[],"name":"UniswapV2RouterInsufficientAAmount","type":"error"},{"inputs":[],"name":"UniswapV2RouterInsufficientBAmount","type":"error"},{"inputs":[],"name":"UniswapV2RouterInsufficientOutputAmount","type":"error"},{"inputs":[],"name":"UniswapV2RouterInvalidPath","type":"error"},{"inputs":[],"name":"UniswapV2RouterOnlyAcceptETHViaFallbackFromWETHContract","type":"error"},{"inputs":[],"name":"UnsupportedNft","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vault","type":"tuple"}],"name":"NFTLiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vault","type":"tuple"}],"name":"NFTLiquidityRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vaultA","type":"tuple"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vaultB","type":"tuple"}],"name":"NFTNFTLiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vaultA","type":"tuple"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"indexed":false,"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"vaultB","type":"tuple"}],"name":"NFTNFTLiquidityRemoved","type":"event"},{"inputs":[],"name":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vault","type":"tuple"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"uint256","name":"_amountBDesired","type":"uint256"},{"internalType":"uint256","name":"_amountBMin","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"addLiquidityNFT","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vault","type":"tuple"},{"internalType":"uint256","name":"_amountETHMin","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"addLiquidityNFTETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vaultA","type":"tuple"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vaultB","type":"tuple"},{"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":"addLiquidityNFTNFT","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"lpAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"},{"internalType":"contract INftVault","name":"_vault","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"amountMinted","type":"uint256"}],"stateMutability":"nonpayable","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"},{"internalType":"address","name":"pair","type":"address"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"},{"internalType":"address","name":"pair","type":"address"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","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"},{"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":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vault","type":"tuple"},{"internalType":"address","name":"_tokenB","type":"address"},{"internalType":"uint256","name":"_lpAmount","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":"_swapLeftover","type":"bool"}],"name":"removeLiquidityNFT","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vault","type":"tuple"},{"internalType":"uint256","name":"_lpAmount","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":"_swapLeftover","type":"bool"}],"name":"removeLiquidityNFTETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vaultA","type":"tuple"},{"components":[{"internalType":"contract INftVault","name":"token","type":"address"},{"internalType":"address[]","name":"collection","type":"address[]"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"internalType":"struct IMagicSwapV2Router.NftVaultLiquidityData","name":"_vaultB","type":"tuple"},{"internalType":"uint256","name":"_lpAmount","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":"removeLiquidityNFTNFT","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","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":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"},{"internalType":"address[]","name":"_path","type":"address[]"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"swapETHForNft","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":"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":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","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":"swapNftForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_collectionIn","type":"address[]"},{"internalType":"uint256[]","name":"_tokenIdIn","type":"uint256[]"},{"internalType":"uint256[]","name":"_amountIn","type":"uint256[]"},{"internalType":"address[]","name":"_collectionOut","type":"address[]"},{"internalType":"uint256[]","name":"_tokenIdOut","type":"uint256[]"},{"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":"swapNftForNft","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","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":"swapNftForTokens","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":"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"},{"inputs":[{"internalType":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","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":"swapTokensForNft","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_collection","type":"address[]"},{"internalType":"uint256[]","name":"_tokenId","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"},{"internalType":"contract INftVault","name":"_vault","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"amountBurned","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001001411c6b0f1090cae21d868d011b826fd8baa1ca57835caece94b8f51d519000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008cc9c8f3890b16264a70cd7b35fa52fe6e11984a000000000000000000000000e642f7d1f07af75ed8198f0b4d68f14244baaab5
Deployed Bytecode
0x0004000000000002001a00000000000200000000030100190000006003300270000013700530019700030000005103550002000000010355000013700030019d00000001002001900000016d0000c13d0000008004000039000000400040043f000000040050008c0000019f0000413d000000000201043b000000e002200270000013790020009c000001b70000213d000013920020009c000001ca0000a13d000013930020009c000001fd0000a13d000013940020009c000006ad0000a13d000013950020009c00000bb50000613d000013960020009c00000aa70000613d000013970020009c00000d0b0000c13d000000840050008c00000d0b0000413d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000000003250049000013ac0030009c00000d0b0000213d000000840030008c00000d0b0000413d0000004403100370000000000303043b000e00000003001d000013730030009c00000d0b0000213d000d00040020003d0000000d0450006a000c00240020003d0000000c02100360000000000302043b0000001f0240008a000013b304200197000013b306300197000000000746013f000000000046004b0000000006000019000013b306004041000000000023004b0000000008000019000013b308008041000013b30070009c000000000608c019000000000006004b00000d0b0000c13d0000000d03300029000000000631034f000000000c06043b000013ab00c0009c00000d0b0000213d000000050dc002100000000006d500490000002007300039000013b303600197000013b308700197000000000938013f000000000038004b0000000003000019000013b303004041000000000067004b0000000006000019000013b306002041000013b30090009c000000000306c019000000000003004b00000d0b0000c13d0000000c03000029000b00200030003d0000000b03100360000000000303043b000013b306300197000000000846013f000000000046004b0000000006000019000013b306004041000000000023004b0000000009000019000013b309008041000013b30080009c000000000609c019000000000006004b00000d0b0000c13d0000000d03300029000000000631034f000000000906043b000013ab0090009c00000d0b0000213d000000050b9002100000000006b500490000002003300039000013b308600197000013b30a300197000000000e8a013f00000000008a004b0000000008000019000013b308004041000000000063004b0000000006000019000013b306002041000013b300e0009c000000000806c019000000000008004b00000d0b0000c13d0000000b06000029000a00200060003d0000000a06100360000000000606043b000013b308600197000000000a48013f000000000048004b0000000004000019000013b304004041000000000026004b0000000002000019000013b302008041000013b300a0009c000000000402c019000000000004004b00000d0b0000c13d0000000d02600029000000000421034f000000000804043b000013ab0080009c00000d0b0000213d000000050a8002100000000004a500490000002006200039000013b302400197000013b30e600197000000000f2e013f00000000002e004b0000000002000019000013b302004041000000000046004b0000000004000019000013b304002041000013b300f0009c000000000204c019000000000002004b00000d0b0000c13d0000000a0200002900090060002000920000000902100360000000000402043b000013730040009c00000d0b0000213d0000003f02d00039000013b402200197000013cb0020009c000009d30000213d0000008002200039000000400020043f0000008000c0043f000000000c7d001900000000005c004b00000d0b0000213d00000000007c004b000000bd0000a13d0000008002000039000000000d71034f000000000d0d043b0000137300d0009c00000d0b0000213d00000020022000390000000000d2043500000020077000390000000000c7004b000000b30000413d000000400200043d0000003f07b00039000013b4077001970000000007720019000000000027004b000000000c000039000000010c004039000013ab0070009c000009d30000213d0000000100c00190000009d30000c13d000000400070043f000000000092043500000000073b0019000000000057004b00000d0b0000213d000000000037004b000000d60000a13d0000000009020019000000000b31034f000000000b0b043b00000020099000390000000000b904350000002003300039000000000073004b000000cf0000413d0000003f03a00039000013b407300197000000400300043d0000000007730019000000000037004b00000000090000390000000109004039000013ab0070009c000009d30000213d0000000100900190000009d30000c13d000000400070043f000000000083043500000000076a0019000000000057004b00000d0b0000213d000000000067004b000000f00000a13d0000000005030019000000000861034f000000000808043b000000200550003900000000008504350000002006600039000000000076004b000000e90000413d000000800100003900000000050004104dbc25930000040f000800000001001d00000009010000290000000201100367000000000101043b000013730010009c00000d0b0000213d00000008020000294dbc33a20000040f00000009010000290000000201100367000000000101043b000700000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b00000064020000390000000202200367000000000202043b000000000012004b00000b940000413d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000201043b00000024010000390000000201100367000000000601043b00000000040004160000000701000029000600000002001d000000080300002900000000050300194dbc37d60000040f00001375030000410000000000300443000000000300041200000004003004430000002400000443000800000001001d000500000002001d0000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000300000001001d000000070200002900000006030000294dbc46c30000040f000000000301001900000007010000290000000002000410000400000003001d00000008040000294dbc36eb0000040f000013b501000041000000000010044300000006010000290000137301100197000700000001001d00000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013c301000041000200000002001d000000000012043500000000010004140000000702000029000000040020008c00001dfc0000613d0000000202000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000000050000006b00001df00000c13d00001378011001c7000000070200002900001df50000013d0000000002000416000000000002004b00000d0b0000c13d0000001f025000390000137102200197000000c002200039000000400020043f0000001f0350018f0000137204500198000000c0024000390000017e0000613d000000c006000039000000000701034f000000007807043c0000000006860436000000000026004b0000017a0000c13d000000000003004b0000018b0000613d000000000141034f0000000303300210000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f0000000000120435000000400050008c00000d0b0000413d000000c00100043d000013730010009c00000d0b0000213d000000e00200043d000013730020009c00000d0b0000213d000000800010043f000000a00020043f0000014000000443000001600010044300000020010000390000018000100443000001a000200443000001000010044300000002010000390000012000100443000013740100004100004dbd0001042e000000000005004b00000d0b0000c13d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b00001373011001970000000002000411000000000012004b000001f50000c13d000000000100001900004dbd0001042e0000137a0020009c000001df0000a13d0000137b0020009c000003e20000a13d0000137c0020009c000007620000a13d0000137d0020009c00000bcf0000613d0000137e0020009c00000ac10000613d0000137f0020009c00000d0b0000c13d0000000001000416000000000001004b00000d0b0000c13d0000dead01000039000000800010043f000013aa0100004100004dbd0001042e0000139f0020009c000004a00000213d000013a50020009c000007e40000213d000013a80020009c00000ac50000613d000013a90020009c00000d0b0000c13d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc236d0000040f000000000006004b00000ce50000c13d000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000013870020009c000005520000213d0000138d0020009c000008790000213d000013900020009c00000af20000613d000013910020009c00000d0b0000c13d000000640050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000402043b0000002402100370000000000202043b0000004401100370000000000301043b00000000010400194dbc47450000040f00000b9d0000013d000000400100043d00001377020000410000000000210435000013700010009c0000137001008041000000400110021000001378011001c700004dbe000104300000139a0020009c0000055f0000213d0000139d0020009c000009180000613d0000139e0020009c00000d0b0000c13d000000c40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013ab0020009c00000d0b0000213d0000000e0250006a000013ac0020009c00000d0b0000213d000000840020008c00000d0b0000413d0000002402100370000000000202043b000d00000002001d000013ab0020009c00000d0b0000213d0000000d0250006a000013ac0020009c00000d0b0000213d000000840020008c00000d0b0000413d0000008401100370000000000101043b000c00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000205000367000000a402500370000000000202043b000000000012004b00000b940000413d0000000e01000029000e00040010003d0000002403100039000000000135034f000000000201043b00000000060000310000000e0160006a0000001f0110008a000013b304100197000013b307200197000000000847013f000000000047004b0000000007000019000013b307004041000000000012004b0000000009000019000013b309008041000013b30080009c000000000709c019000000000007004b00000d0b0000c13d0000000e02200029000000000725034f000000000c07043b000013ab00c0009c00000d0b0000213d000000050dc002100000000007d600490000002002200039000013b308700197000013b309200197000000000a89013f000000000089004b0000000008000019000013b308004041000000000072004b0000000007000019000013b307002041000013b300a0009c000000000807c019000000000008004b00000d0b0000c13d0000002007300039000000000375034f000000000303043b000013b308300197000000000948013f000000000048004b0000000008000019000013b308004041000000000013004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000e03300029000000000835034f000000000908043b000013ab0090009c00000d0b0000213d000000050b9002100000000008b600490000002003300039000013b30a800197000013b30e300197000000000fae013f0000000000ae004b000000000a000019000013b30a004041000000000083004b0000000008000019000013b308002041000013b300f0009c000000000a08c01900000000000a004b00000d0b0000c13d000000200e7000390000000007e5034f000000000707043b000013b308700197000000000a48013f000000000048004b0000000004000019000013b304004041000000000017004b0000000001000019000013b301008041000013b300a0009c000000000401c019000000000004004b00000d0b0000c13d0000000e01700029000000000415034f000000000804043b000013ab0080009c00000d0b0000213d000b0005008002180000000b0460006a0000002007100039000013b301400197000013b30f700197000000000a1f013f00000000001f004b0000000001000019000013b301004041000000000047004b0000000004000019000013b304002041000013b300a0009c000000000104c019000000000001004b00000d0b0000c13d0000006001e0008a000000000115034f000000000401043b000013730040009c00000d0b0000213d0000003f01d00039000013b40a100197000000400100043d000000000ea1001900000000001e004b000000000f000039000000010f004039000013ab00e0009c000009d30000213d0000000100f00190000009d30000c13d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000002c50000a13d000000000d010019000000000a25034f000000000e0a043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b000002bc0000413d0000003f02b00039000013b40a200197000000400200043d000000000ca2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000069004b00000d0b0000213d000000000039004b000002df0000a13d000000000b020019000000000a35034f000000000a0a043b000000200bb000390000000000ab04350000002003300039000000000093004b000002d80000413d0000000b030000290000003f03300039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f00000000008304350000000b08700029000000000068004b00000d0b0000213d0000000d06000029000b00040060003d000000000078004b000002fc0000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b000002f50000413d00000000050004104dbc25930000040f0000000d0200002900000024032000390000000205000367000000000235034f000000000202043b00000000060000310000000b0460006a0000001f0440008a000013b307400197000013b308200197000000000978013f000000000078004b0000000008000019000013b308004041000000000042004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000d00000001001d000000000008004b00000d0b0000c13d0000000b01200029000000000215034f000000000c02043b000013ab00c0009c00000d0b0000213d000000050dc002100000000008d600490000002002100039000013b301800197000013b309200197000000000a19013f000000000019004b0000000001000019000013b301004041000000000082004b0000000008000019000013b308002041000013b300a0009c000000000108c019000000000001004b00000d0b0000c13d0000002001300039000000000315034f000000000303043b000013b308300197000000000978013f000000000078004b0000000008000019000013b308004041000000000043004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000b03300029000000000835034f000000000908043b000013ab0090009c00000d0b0000213d000000050b9002100000000008b600490000002003300039000013b30a800197000013b30e300197000000000fae013f0000000000ae004b000000000a000019000013b30a004041000000000083004b0000000008000019000013b308002041000013b300f0009c000000000a08c01900000000000a004b00000d0b0000c13d0000002001100039000000000815034f000000000808043b000013b30a800197000000000e7a013f00000000007a004b0000000007000019000013b307004041000000000048004b0000000004000019000013b304008041000013b300e0009c000000000704c019000000000007004b00000d0b0000c13d0000000b04800029000000000745034f000000000807043b000013ab0080009c00000d0b0000213d000a0005008002180000000a0e60006a0000002007400039000013b304e00197000013b30f700197000000000a4f013f00000000004f004b0000000004000019000013b3040040410000000000e7004b000000000e000019000013b30e002041000013b300a0009c00000000040ec019000000000004004b00000d0b0000c13d00090060001000920000000901500360000000000401043b000013730040009c00000d0b0000213d0000003f01d00039000013b40a100197000000400100043d000000000ea1001900000000001e004b000000000f000039000000010f004039000013ab00e0009c000009d30000213d0000000100f00190000009d30000c13d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000003920000a13d000000000d010019000000000a25034f000000000e0a043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b000003890000413d0000003f02b00039000013b40a200197000000400200043d000000000ca2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000069004b00000d0b0000213d000000000039004b000003ac0000a13d000000000b020019000000000a35034f000000000a0a043b000000200bb000390000000000ab04350000002003300039000000000093004b000003a50000413d0000000a030000290000003f03300039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f00000000008304350000000a08700029000000000068004b00000d0b0000213d000000000078004b000003c70000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b000003c00000413d00000000050004104dbc25930000040f00000002030003670000000e02300360000a00000001001d000000000102043b000013730010009c00000d0b0000213d0000000902300360000000000202043b000013730020009c00000d0b0000213d0000006404300370000000000604043b0000004403300370000000000503043b0000000d030000290000000a040000294dbc37d60000040f000800000002001d000700000001001d0000000d0210006b000020010000613d00001ffb0000813d000000400100043d000013d602000041000001f70000013d000013820020009c000005c90000213d000013850020009c000009a80000613d000013860020009c00000d0b0000c13d000001440050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000002402100370000000000202043b000d00000002001d0000008402100370000000000202043b000c00000002001d000013730020009c00000d0b0000213d000000a402100370000000000202043b000a00000002001d000000c402100370000000000302043b000000000003004b0000000002000039000000010200c039000b00000003001d000000000023004b00000d0b0000c13d000000e401100370000000000101043b000900000001001d000000ff0010008c00000d0b0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000800000001001d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000301043b00000008010000290000000e02000029000600000003001d4dbc46c30000040f000013b5020000410000000000200443000700000001001d00000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010300008a0000000b0000006b0000000d030060290000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400500043d000013cd01000041000000000015043500000002010003670000010402100370000000000202043b0000012401100370000000000101043b000000c4045000390000000000140435000000a401500039000000000021043500000084015000390000000902000029000000000021043500000064015000390000000a02000029000000000021043500000044015000390000000000310435000000000100041000001373011001970000002402500039000000000012043500000000010004110000137302100197000b00000005001d0000000401500039000900000002001d000000000021043500000000010004140000000702000029000000040020008c000004740000613d0000000b02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013ce011001c700000007020000294dbc4db20000040f00000000030100190000006003300270000113700030019d00030000000103550000000100200190000011090000613d0000000b01000029000013ab0010009c000009d30000213d0000000b01000029000000400010043f000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000a0010006b00000b940000413d00000008010000290000000e0200002900000006030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000004024000390000000903000029000000000032043500000044024000390000000d030000290000000000320435000b00000004001d000000240240003900000000001204350000000003000414000d00000001001d000000040010008c0000137a0000c13d0000000103000031000000200030008c00000020040000390000000004034019000013a70000013d000013a00020009c000008bf0000213d000013a30020009c00000afd0000613d000013a40020009c00000d0b0000c13d000001640050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000002402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d0000004402100370000000000202043b000c00000002001d000000a402100370000000000202043b000b00000002001d000013730020009c00000d0b0000213d000000c402100370000000000202043b000900000002001d000000e402100370000000000302043b000000000003004b0000000002000039000000010200c039000a00000003001d000000000023004b00000d0b0000c13d0000010401100370000000000101043b000800000001001d000000ff0010008c00000d0b0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000600000001001d0000000e020000290000000d030000294dbc46c30000040f000013b5020000410000000000200443000700000001001d00000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010300008a0000000a0000006b0000000c030060290000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400500043d000013cd01000041000000000015043500000002010003670000012402100370000000000202043b0000014401100370000000000101043b000000c4045000390000000000140435000000a401500039000000000021043500000084015000390000000802000029000000000021043500000064015000390000000902000029000000000021043500000044015000390000000000310435000000000100041000001373011001970000002402500039000000000012043500000000010004110000137302100197000a00000005001d0000000401500039000800000002001d000000000021043500000000010004140000000702000029000000040020008c000005260000613d0000000a02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013ce011001c700000007020000294dbc4db20000040f00000000030100190000006003300270000113700030019d00030000000103550000000100200190000011450000613d0000000a01000029000013ab0010009c000009d30000213d0000000a01000029000000400010043f000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000090010006b00000b940000413d00000006010000290000000e020000290000000d030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000004024000390000000803000029000000000032043500000044024000390000000c030000290000000000320435000a00000004001d000000240240003900000000001204350000000003000414000c00000001001d000000040010008c000013cc0000c13d0000000103000031000000200030008c00000020040000390000000004034019000013f90000013d000013880020009c000008fa0000213d0000138b0020009c00000b120000613d0000138c0020009c00000d0b0000c13d0000000001000416000000000001004b00000d0b0000c13d000013cc01000041000000800010043f000013aa0100004100004dbd0001042e0000139b0020009c000009bd0000613d0000139c0020009c00000d0b0000c13d000000e40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000000003250049000013ac0030009c00000d0b0000213d000000840030008c00000d0b0000413d0000002403100370000000000303043b000e00000003001d000013ab0030009c00000d0b0000213d0000000e0350006a000013ac0030009c00000d0b0000213d000000840030008c00000d0b0000413d000000a403100370000000000303043b000d00000003001d000013730030009c00000d0b0000213d000b00040020003d0000000b02100360000000000202043b000c00000002001d000013730020009c00000d0b0000213d0000000e02000029000900040020003d0000000901100360000000000101043b000a00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000c4020000390000000202200367000000000202043b000000000012004b00000b940000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000500000001001d0000000c020000290000000a030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000044020000390000000202200367000000000202043b000000440340003900000000002304350000000002000411000013730220019700000004034000390000000000230435000800000004001d000000240240003900000000001204350000000003000414000700000001001d000000040010008c000012d20000c13d0000000103000031000000200030008c00000020040000390000000004034019000012ff0000013d000013830020009c000009d90000613d000013840020009c00000d0b0000c13d000000c40050008c00000d0b0000413d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d00000000070400190000000403200039000000000331034f000000000403043b000013ab0040009c000009d30000213d00000005034002100000003f06300039000013b406600197000013cb0060009c000009d30000213d00000024022000390000008006600039000000400060043f000000800040043f0000000003230019000000000053004b000000000607001900000d0b0000213d000000000004004b000005f40000613d000000000421034f000000000404043b000013730040009c00000d0b0000213d000000200660003900000000004604350000002002200039000000000032004b000005eb0000413d0000002402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b0000000004000019000013b304008041000013b303300197000000000003004b0000000006000019000013b306004041000013b30030009c000000000604c019000000000006004b00000d0b0000c13d0000000403200039000000000331034f000000000303043b000013ab0030009c000009d30000213d00000005043002100000003f06400039000013b406600197000000400700043d0000000006670019000e00000007001d000000000076004b00000000070000390000000107004039000013ab0060009c000009d30000213d0000000100700190000009d30000c13d0000002402200039000000400060043f0000000e0600002900000000003604350000000004240019000000000054004b00000d0b0000213d000000000003004b000006270000613d0000000e03000029000000000621034f000000000606043b000000200330003900000000006304350000002002200039000000000042004b000006200000413d0000004402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b0000000004000019000013b304008041000013b303300197000000000003004b0000000006000019000013b306004041000013b30030009c000000000604c019000000000006004b00000d0b0000c13d0000000403200039000000000331034f000000000303043b000013ab0030009c000009d30000213d00000005063002100000003f04600039000013b404400197000000400700043d0000000004470019000d00000007001d000000000074004b00000000070000390000000107004039000013ab0040009c000009d30000213d0000000100700190000009d30000c13d0000002402200039000000400040043f0000000d0400002900000000043404360000000006260019000000000056004b00000d0b0000213d000000000003004b0000065a0000613d0000000d03000029000000000721034f000000000707043b000000200330003900000000007304350000002002200039000000000062004b000006530000413d0000006402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b0000000006000019000013b306008041000013b303300197000000000003004b0000000007000019000013b307004041000013b30030009c000000000706c019000000000007004b00000d0b0000c13d0000000403200039000000000331034f000000000303043b0000000008030019000013ab0030009c00000d0b0000213d00000024022000390000000503800210000c00000023001d0000000c0050006b00000d0b0000213d0000008403100370000000000303043b000b00000003001d000013730030009c00000d0b0000213d0000000d030000290000000005030433000000000005004b0000000003000019000006910000613d00000000030000190000000006000019000000050730021000000000077400190000000007070433000000000067001a00000a3f0000413d00000000066700190000000103300039000000000053004b000006810000413d000000000006004b0000000003000019000006910000613d000013cc036000d100000000046300d9000013cc0040009c00000a3f0000c13d000000a401100370000000000501043b000000000400041000000000010300190000000003080019000a00000003001d4dbc42e80000040f000900000001001d0000000a0000006b00000a3f0000613d0000000c01000029000000200110008a0000000201100367000000000401043b000013730040009c00000d0b0000213d00000080010000390000000e020000290000000d0300002900000000050004100000000b060000294dbc27dd0000040f0000002001000039000000400200043d000e00000002001d0000000002120436000000090100002900000bc40000013d000013980020009c00000a3b0000613d000013990020009c00000d0b0000c13d000000840050008c00000d0b0000413d0000000402100370000000000202043b000e00000002001d0000002402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d000c00040020003d0000000c03100360000000000303043b000d00000003001d000013ab0030009c00000d0b0000213d00000024032000390000000d020000290000000502200210000a00000003001d000b00000002001d0000000003320019000000000053004b00000d0b0000213d0000004402100370000000000202043b000900000002001d000013730020009c00000d0b0000213d000700000003001d0000006401100370000000000101043b000800000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000080010006b00000b940000413d0000000d0000006b000001d90000613d0000000c010000290000002001100039000800000001001d0000000201100367000000000101043b000c00000001001d000013730010009c00000d0b0000213d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b00001373011001970000000c0010006b000011060000c13d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000600000001001d0000000b010000290000003f01100039000013b401100197000000400300043d0000000001130019000000000031004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f0000000d0100002900000000001304350000000706000029000000000060007c00000d0b0000213d000000020100036700000000020300190000000a04000029000000000541034f000000000505043b000013730050009c00000d0b0000213d000000200220003900000000005204350000002004400039000000000064004b000007240000413d000000000200041600000006010000294dbc49590000040f000b00000001001d0000000021010434000700000002001d000000000001004b00000a3f0000613d00000005011002100000000b0110002900000000010104330000000e0010006c000008760000413d00000007010000290000000001010433000e00000001001d000013b50100004100000000001004430000000c0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013c301000041000500000002001d000000000012043500000000010004140000000c02000029000000040020008c00001c300000613d0000000502000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f0000000e0000006b00001c240000c13d00001378011001c70000000c0200002900001c290000013d000013800020009c00000a450000613d000013810020009c00000d0b0000c13d000000c40050008c00000d0b0000413d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000008402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d000000a402100370000000000202043b000c00000002001d0000002402100370000000000202043b000a00000002001d0000004402100370000000000202043b000b00000002001d0000006401100370000000000101043b000900000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000c0010006b00000b940000413d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000201043b00000000040004160000000e01000029000c00000002001d0000000a030000290000000b0500002900000009060000294dbc37d60000040f00001375030000410000000000300443000000000300041200000004003004430000002400000443000b00000001001d000a00000002001d0000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000e020000290000000c030000294dbc46c30000040f000000000301001900000000020004110000000e01000029000900000003001d0000000b040000294dbc36eb0000040f000013b50100004100000000001004430000000c010000290000137301100197000e00000001001d00000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013c301000041000c00000002001d000000000012043500000000010004140000000e02000029000000040020008c000011220000613d0000000c02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f0000000a0000006b000011160000c13d00001378011001c70000000e020000290000111b0000013d000013a60020009c00000b610000613d000013a70020009c00000d0b0000c13d000000a40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000002402100370000000000202043b000d00000002001d0000000402100370000000000202043b000e00000002001d0000004402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d000b00040020003d0000000b03100360000000000303043b000c00000003001d000013ab0030009c00000d0b0000213d00000024022000390000000c030000290000000503300210000900000002001d000a00000003001d0000000003230019000000000053004b00000d0b0000213d0000006402100370000000000202043b000800000002001d000013730020009c00000d0b0000213d000600000003001d0000008401100370000000000101043b000700000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000070010006b00000b940000413d0000000c0000006b00000a3f0000613d0000000a020000290000000b012000290000000201100367000000000101043b000700000001001d000013730010009c00000d0b0000213d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000137301100197000000070010006b000011060000c13d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000500000001001d0000000a010000290000003f01100039000a13b40010019b000000400300043d0000000a01300029000000000031004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f0000000c0100002900000000001304350000000606000029000000000060007c00000d0b0000213d000000020100036700000000020300190000000904000029000000000541034f000000000505043b000013730050009c00000d0b0000213d000000200220003900000000005204350000002004400039000000000064004b000008600000413d00000005010000290000000e020000294dbc49590000040f000e00000001001d0000000021010434000400000002001d000000000001004b00000a3f0000613d00000005011002100000000e0110002900000000010104330000000d0010006c00001aa30000813d000000400100043d000013db02000041000001f70000013d0000138e0020009c00000b6a0000613d0000138f0020009c00000d0b0000c13d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc236d0000040f000c00000001001d000b00000002001d0000000009050019000000000a060019000900000007001d000a00000003001d0000000032030434000000000002004b00000000010000190000089e0000613d00000000010000190000000005000019000000050610021000000000066300190000000006060433000000000056001a00000a3f0000413d00000000055600190000000101100039000000000021004b0000088e0000413d000000000005004b00000000010000190000089e0000613d000013cc015000d100000000025100d9000013cc0020009c00000a3f0000c13d000000000500041100000000060004100000000002040019000000000309001900000000040a00190000000007080019000e00000009001d000d0000000a001d4dbc3fe50000040f0000000d030000290000000e02000029000000000003004b00000a3f0000613d000800000001001d00000005013002100000000001120019000000200110008a0000000201100367000000000401043b000013730040009c00000d0b0000213d0000000c010000290000000b020000290000000a03000029000000000500041000000009060000294dbc27dd0000040f0000002001000039000000400200043d000e00000002001d0000000002120436000000080100002900000bc40000013d000013a10020009c00000b970000613d000013a20020009c00000d0b0000c13d000000a40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000004402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d0000000403200039000000000331034f000000000403043b000013ab0040009c000009d30000213d00000005034002100000003f06300039000013b406600197000013cb0060009c000009d30000213d00000024022000390000008006600039000000400060043f000000800040043f0000000003230019000000000053004b00000d0b0000213d000000000004004b000008ec0000613d0000008004000039000000000521034f000000000505043b000013730050009c00000d0b0000213d000000200440003900000000005404350000002002200039000000000032004b000008e30000413d0000006402100370000000000502043b000013730050009c00000d0b0000213d0000000402100370000000000702043b0000002402100370000000000202043b0000008401100370000000000601043b00000080030000390000000004000411000000000107001900000d020000013d000013890020009c00000ba40000613d0000138a0020009c00000d0b0000c13d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc25620000040f0000000005000412001200000005001d001100000000003d000e00000001001d000d00000002001d000c00000003001d000b00000004001d000080050100003900000044030000390000000004000415000000120440008a000000050440021000001375020000414dbc4d940000040f00000000050100190000000e010000290000000d020000290000000c030000290000000b040000294dbc47890000040f00000b9d0000013d000000a40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000002402100370000000000202043b000d00000002001d0000000402100370000000000202043b000e00000002001d0000004402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d000b00040020003d0000000b03100360000000000303043b000c00000003001d000013ab0030009c00000d0b0000213d00000024022000390000000c030000290000000503300210000900000002001d000a00000003001d0000000003230019000000000053004b00000d0b0000213d0000006402100370000000000202043b000800000002001d000013730020009c00000d0b0000213d000600000003001d0000008401100370000000000101043b000700000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000070010006b00000b940000413d0000000c0000006b00000a3f0000613d0000000a020000290000000b012000290000000201100367000000000101043b000700000001001d000013730010009c00000d0b0000213d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000137301100197000000070010006b000011060000c13d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000500000001001d0000000a010000290000003f01100039000a13b40010019b000000400300043d0000000a01300029000000000031004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f0000000c0100002900000000001304350000000606000029000000000060007c00000d0b0000213d000000020100036700000000020300190000000904000029000000000541034f000000000505043b000013730050009c00000d0b0000213d000000200220003900000000005204350000002004400039000000000064004b000009900000413d00000005010000290000000e020000294dbc4b210000040f000400000001001d0000000021010434000e00000002001d000000000001004b000001d90000613d0000000e0100002900000000010104330000000d0010006c00001b2b0000a13d000000400100043d000013d902000041000001f70000013d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc25050000040f0000000003000412001000000003001d000f00000000003d000e00000001001d000d00000002001d000080050100003900000044030000390000000004000415000000100440008a000000050440021000001375020000414dbc4d940000040f0000000e020000290000000d030000294dbc49590000040f00000bc00000013d000001240050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000002303200039000000000053004b00000d0b0000813d0000000403200039000000000331034f000000000403043b000013ab0040009c000009d30000213d00000005034002100000003f06300039000013b406600197000013cb0060009c00000d040000a13d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000001040050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000002402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d000000c401100370000000000101043b000c00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000201043b0000000201000367000000e403100370000000000303043b000000000023004b00000b940000413d0000004402100370000000000302043b0000006402100370000000000402043b0000008402100370000000000502043b000000a401100370000000000601043b0000000e010000290000000d020000294dbc37d60000040f00001375030000410000000000300443000000000300041200000004003004430000002400000443000b00000001001d000a00000002001d0000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d0000000c02000029000913730020019b000000000101043b0000000e020000290000000d030000294dbc46c30000040f0000000003010019000c00000003001d00000000020004110000000e010000290000000b040000294dbc36eb0000040f0000000d0100002900000000020004110000000c030000290000000a040000294dbc36eb0000040f000013c701000041000000400200043d0000000000120435000e00000002001d00000004012000390000000902000029000000000021043500000000010004140000000c030000290000000002030019000000040030008c00000ff80000c13d0000000103000031000000200030008c00000020040000390000000004034019000010230000013d00000000010500194dbc236d0000040f000000000006004b00000c3d0000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000001040050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000000003250049000013ac0030009c00000d0b0000213d000000840030008c00000d0b0000413d0000002403100370000000000303043b000e00000003001d000013730030009c00000d0b0000213d000000a403100370000000000303043b000d00000003001d000013730030009c00000d0b0000213d000000e403100370000000000403043b000000000004004b0000000003000039000000010300c039000c00000004001d000000000034004b00000d0b0000c13d000a00040020003d0000000a01100360000000000101043b000b00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000c4020000390000000202200367000000000202043b000000000012004b00000b940000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000600000001001d0000000b020000290000000e030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000044020000390000000202200367000000000202043b000000440340003900000000002304350000000002000411000013730220019700000004034000390000000000230435000900000004001d000000240240003900000000001204350000000003000414000800000001001d000000040010008c000011520000c13d0000000103000031000000200030008c000000200400003900000000040340190000117f0000013d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc25620000040f0000000005000412001800000005001d001700000000003d000e00000001001d000d00000002001d000c00000003001d000b00000004001d000080050100003900000044030000390000000004000415000000180440008a000000050440021000001375020000414dbc4d940000040f00000000050100190000000e010000290000000d020000290000000c030000290000000b040000294dbc48760000040f00000b9d0000013d00000000010500194dbc25400000040f4dbc42e80000040f00000bc00000013d000000c40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000008402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d000000a402100370000000000202043b000c00000002001d0000002402100370000000000202043b000b00000002001d0000004402100370000000000202043b000a00000002001d0000006401100370000000000101043b000900000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000c0010006b00000ea90000813d000013dc01000041000000800010043f000013dd0100004100004dbe000104300000000001000416000000000001004b00000d0b0000c13d0000000001000412001600000001001d001500200000003d000080050100003900000044030000390000000004000415000000160440008a00000bae0000013d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc25050000040f0000000003000412001a00000003001d001900000000003d000e00000001001d000d00000002001d0000800501000039000000440300003900000000040004150000001a0440008a000000050440021000001375020000414dbc4d940000040f0000000e020000290000000d030000294dbc4b210000040f00000bc00000013d000000e40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013730020009c00000d0b0000213d0000002402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d000000a401100370000000000101043b000c00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000c4020000390000000202200367000000000202043b000000000012004b00000b940000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000e020000290000000d030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000044020000390000000202200367000000000202043b000000440340003900000000002304350000000002000411000013730220019700000004034000390000000000230435000b00000004001d000000240240003900000000001204350000000003000414000a00000001001d000000040010008c0000103e0000c13d0000000103000031000000200030008c000000200400003900000000040340190000106b0000013d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc243b0000040f000000000605001900000000050004114dbc27dd0000040f00000b9d0000013d000000c40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000e00000002001d000013ab0020009c00000d0b0000213d0000000e0250006a000013ac0020009c00000d0b0000213d000000840020008c00000d0b0000413d0000002402100370000000000202043b000d00000002001d000013730020009c00000d0b0000213d0000008401100370000000000101043b000c00000001001d000013730010009c00000d0b0000213d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000206000367000000a402600370000000000202043b000000000012004b00000ee20000813d000000400100043d000013dc02000041000001f70000013d0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc243b0000040f4dbc25930000040f000000400200043d0000000000120435000013700020009c00001370020080410000004001200210000013cf011001c700004dbd0001042e0000000001000416000000000001004b00000d0b0000c13d0000000001000412001400000001001d001300000000003d000080050100003900000044030000390000000004000415000000140440008a000000050440021000001375020000414dbc4d940000040f0000137301100197000000800010043f000013aa0100004100004dbd0001042e0000000001000416000000000001004b00000d0b0000c13d00000000010500194dbc24e10000040f000000000705001900000000080600190000000005000411000000000607001900000000070800194dbc3fe50000040f0000002002000039000000400300043d000e00000003001d00000000022304364dbc242e0000040f0000000e020000290000000001210049000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f00004dbd0001042e000000e40050008c00000d0b0000413d0000000002000416000000000002004b00000d0b0000c13d0000000402100370000000000202043b000013ab0020009c00000d0b0000213d0000000003250049000013ac0030009c00000d0b0000213d000000840030008c00000d0b0000413d0000008403100370000000000303043b000e00000003001d000013730030009c00000d0b0000213d000000c403100370000000000403043b000000000004004b0000000003000039000000010300c039000d00000004001d000000000034004b00000d0b0000c13d000b00040020003d0000000b01100360000000000101043b000c00000001001d000013730010009c00000d0b0000213d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000a00000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000a4020000390000000202200367000000000202043b000000000012004b00000b940000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000600000001001d0000000c020000290000000a030000294dbc46c30000040f000013af02000041000000400400043d000000000024043500000024020000390000000202200367000000000202043b000000440340003900000000002304350000000002000411000013730220019700000004034000390000000000230435000900000004001d000000240240003900000000001204350000000003000414000800000001001d000000040010008c000011a40000c13d0000000103000031000000200030008c00000020040000390000000004034019000011d10000013d000b00000003001d000c00000002001d000d00000001001d000700000008001d000800000004001d000600000007001d000a00000006001d00090005006002180000000902500029000000200120008a0000000201100367000000000101043b000e00000001001d000013730010009c00000d0b0000213d000400000002001d000500000005001d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b00001373011001970000000e0010006b00000d0d0000c13d00000005010000290000000201100367000000000401043b000013730040009c00000d0b0000213d00000000050004100000000d010000290000000c020000290000000b030000294dbc25930000040f000d00000001001d00000005010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000d020000294dbc33a20000040f0000000a01000029000013ab0010009c000009d30000213d00000009010000290000003f01100039000013b401100197000000400300043d0000000001130019000000000031004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f0000000a0100002900000000001304350000000406000029000000000060007c000000050500002900000d0b0000213d000000000056004b00000c960000a13d00000002010003670000000002030019000000000451034f000000000404043b000013730040009c00000d0b0000213d000000200220003900000000004204350000002005500039000000000065004b00000c8d0000413d0000000d0100002900000008020000290000000004000410000000000504001900000007060000294dbc3a170000040f000d00000001001d0000000001010433000000000001004b00000a3f0000613d00000005011002100000000d011000290000000001010433000c00000001001d000013b50100004100000000001004430000000e0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000000120435000b00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000e02000029000000040020008c00000cd00000613d0000000b02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000e020000294dbc4db20000040f00000000030100190000006003300270000113700030019d00030000000103550000000100200190000016a60000613d0000000b01000029000013ab0010009c000009d30000213d0000000b01000029000000400010043f0000000d010000290000000001010433000000000001004b00000a3f0000613d000000010210008a0000000d010000294dbc25740000040f000000000201043300000006010000294dbc37720000040f000000400200043d000e00000002001d000000200100003900000000021204360000000d0100002900000bc40000013d000a00000006001d000b00000008001d000c00000007001d000d00000004001d000e00000005001d0000000204500367000000000404043b000013730040009c00000d0b0000213d00000000050004104dbc25930000040f00000000020100190000000e010000290000000201100367000000000101043b000013730010009c00000d0b0000213d000900000002001d4dbc33a20000040f00000000030000310000000e010000290000000a020000294dbc23430000040f000000000301001900000009010000290000000d0200002900000000040004100000000c050000290000000b060000294dbc3a170000040f00000bc00000013d00000024022000390000008006600039000000400060043f000000800040043f0000000003230019000000000053004b00000d100000a13d000000000100001900004dbe00010430000000400100043d000013d302000041000001f70000013d000000000004004b00000d1c0000613d0000008004000039000000000621034f000000000606043b000013730060009c00000d0b0000213d000000200440003900000000006404350000002002200039000000000032004b00000d130000413d0000002402100370000000000302043b000013ab0030009c00000d0b0000213d0000002302300039000000000052004b0000000004000019000013b304008041000013b302200197000000000002004b0000000006000019000013b306004041000013b30020009c000000000604c019000000000006004b00000d0b0000c13d0000000402300039000000000221034f000000000402043b000013ab0040009c000009d30000213d00000005064002100000003f02600039000013b407200197000000400200043d0000000007720019000000000027004b00000000080000390000000108004039000013ab0070009c000009d30000213d0000000100800190000009d30000c13d0000002403300039000000400070043f00000000004204350000000006360019000000000056004b00000d0b0000213d000000000004004b00000d4d0000613d0000000004020019000000000731034f000000000707043b000000200440003900000000007404350000002003300039000000000063004b00000d460000413d0000004403100370000000000403043b000013ab0040009c00000d0b0000213d0000002303400039000000000053004b0000000006000019000013b306008041000013b303300197000000000003004b0000000007000019000013b307004041000013b30030009c000000000706c019000000000007004b00000d0b0000c13d0000000403400039000000000331034f000000000603043b000013ab0060009c000009d30000213d00000005076002100000003f03700039000013b408300197000000400300043d0000000008830019000000000038004b00000000090000390000000109004039000013ab0080009c000009d30000213d0000000100900190000009d30000c13d0000002404400039000000400080043f00000000006304350000000007470019000000000057004b00000d0b0000213d000000000006004b00000d7e0000613d0000000006030019000000000841034f000000000808043b000000200660003900000000008604350000002004400039000000000074004b00000d770000413d0000006404100370000000000404043b000013ab0040009c00000d0b0000213d0000002306400039000000000056004b0000000007000019000013b307008041000013b306600197000000000006004b0000000008000019000013b308004041000013b30060009c000000000807c019000000000008004b00000d0b0000c13d0000000406400039000000000661034f000000000606043b000013ab0060009c000009d30000213d00000005076002100000003f08700039000013b408800197000000400900043d0000000008890019000d00000009001d000000000098004b00000000090000390000000109004039000013ab0080009c000009d30000213d0000000100900190000009d30000c13d0000002404400039000000400080043f0000000d0800002900000000006804350000000007470019000000000057004b00000d0b0000213d000000000006004b00000db30000613d0000000d06000029000000000841034f000000000808043b000013730080009c00000d0b0000213d000000200660003900000000008604350000002004400039000000000074004b00000daa0000413d0000008404100370000000000404043b000013ab0040009c00000d0b0000213d0000002306400039000000000056004b0000000007000019000013b307008041000013b306600197000000000006004b0000000008000019000013b308004041000013b30060009c000000000807c019000000000008004b00000d0b0000c13d0000000406400039000000000661034f000000000606043b000013ab0060009c000009d30000213d00000005076002100000003f08700039000013b408800197000000400900043d0000000008890019000a00000009001d000000000098004b00000000090000390000000109004039000013ab0080009c000009d30000213d0000000100900190000009d30000c13d0000002404400039000000400080043f0000000a0800002900000000006804350000000007470019000000000057004b00000d0b0000213d000000000006004b00000de60000613d0000000a06000029000000000841034f000000000808043b000000200660003900000000008604350000002004400039000000000074004b00000ddf0000413d000000a404100370000000000404043b000013ab0040009c00000d0b0000213d0000002306400039000000000056004b0000000007000019000013b307008041000013b306600197000000000006004b0000000008000019000013b308004041000013b30060009c000000000807c019000000000008004b00000d0b0000c13d0000000406400039000000000661034f000000000606043b000013ab0060009c000009d30000213d00000005076002100000003f08700039000013b408800197000000400900043d0000000008890019000900000009001d000000000098004b00000000090000390000000109004039000013ab0080009c000009d30000213d0000000100900190000009d30000c13d0000002404400039000000400080043f00000009080000290000000008680436000e00000008001d0000000007470019000000000057004b00000d0b0000213d000000000006004b00000e1a0000613d0000000906000029000000000841034f000000000808043b000000200660003900000000008604350000002004400039000000000074004b00000e130000413d000000c404100370000000000404043b000013ab0040009c00000d0b0000213d0000002306400039000000000056004b0000000007000019000013b307008041000013b306600197000000000006004b0000000008000019000013b308004041000013b30060009c000000000807c019000000000008004b00000d0b0000c13d0000000406400039000000000761034f000000000707043b000800000007001d000013ab0070009c00000d0b0000213d000000240740003900000008040000290000000504400210000c00000007001d000700000004001d000b00000074001d0000000b0050006b00000d0b0000213d000000e404100370000000000404043b000600000004001d000013730040009c00000d0b0000213d000000080000006b000001d90000613d000500200060003d0000000501100360000000000401043b000013730040009c00000d0b0000213d000000800100003900000000050004104dbc25930000040f0000000b02000029000200200020009200000002020003670000000203200360000400000001001d000000000103043b000300000001001d000013730010009c00000d0b0000213d00000009010000290000000001010433000000000001004b000100000000001d00000e670000613d0000000004000019000000000300001900000005054002100000000e055000290000000005050433000000000035001a00000a3f0000413d00000000033500190000000104400039000000000014004b00000e570000413d000000000003004b000100000000001d00000e670000613d000113cc003000d500000001013000f9000013cc0010009c00000a3f0000c13d0000000501200360000000000101043b000013730010009c00000d0b0000213d00000004020000294dbc33a20000040f00000007010000290000003f01100039000013b401100197000000400300043d0000000002130019000000000032004b0000000004000039000000010400403900000002010003670000010405100370000000000605043b000013ab0020009c000009d30000213d0000000100400190000009d30000c13d000000400020043f000000080200002900000000002304350000000b02000029000000000020007c00000d0b0000213d00000000020300190000000c04100360000000000404043b000013730040009c00000d0b0000213d000000200220003900000000004204350000000c040000290000002004400039000c00000004001d0000000b0040006c00000e830000413d00000004010000290000000102000029000000000400041000000000050400194dbc3a170000040f000e00000001001d000000030100002900001373041001970000000d010000290000000a020000290000000903000029000000000500041000000006060000294dbc27dd0000040f0000000e010000290000000001010433000000000001004b00000a3f0000613d00000005011002100000000e011000290000000001010433000d00010010007400000a3f0000413d000020080000c13d000000400100043d000d00000001001d000020570000013d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000800000001001d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000e0200002900000008030000294dbc46c30000040f000013af02000041000000400400043d0000000000240435000000000200041100001373022001970000000403400039000000000023043500000044024000390000000b030000290000000000320435000c00000004001d000000240240003900000000001204350000000003000414000b00000001001d000000040010008c000010900000c13d0000000103000031000000200030008c00000020040000390000000004034019000010bd0000013d0000000e010000290000000403100039000b00240010003d0000000b01600360000000000201043b0000000005000031000e00000003001d00000000013500490000001f0110008a000013b304100197000013b303200197000000000743013f000000000043004b0000000003000019000013b303004041000000000012004b0000000008000019000013b308008041000013b30070009c000000000308c019000000000003004b00000d0b0000c13d0000000e02200029000000000326034f000000000c03043b000013ab00c0009c00000d0b0000213d000000050dc002100000000003d500490000002002200039000013b307300197000013b308200197000000000978013f000000000078004b0000000007000019000013b307004041000000000032004b0000000003000019000013b303002041000013b30090009c000000000703c019000000000007004b00000d0b0000c13d0000000b03000029000a00200030003d0000000a03600360000000000303043b000013b307300197000000000847013f000000000047004b0000000007000019000013b307004041000000000013004b0000000009000019000013b309008041000013b30080009c000000000709c019000000000007004b00000d0b0000c13d0000000e03300029000000000736034f000000000907043b000013ab0090009c00000d0b0000213d000000050b9002100000000007b500490000002003300039000013b308700197000013b30a300197000000000e8a013f00000000008a004b0000000008000019000013b308004041000000000073004b0000000007000019000013b307002041000013b300e0009c000000000807c019000000000008004b00000d0b0000c13d0000000a07000029000900200070003d0000000907600360000000000707043b000013b308700197000000000a48013f000000000048004b0000000004000019000013b304004041000000000017004b0000000001000019000013b301008041000013b300a0009c000000000401c019000000000004004b00000d0b0000c13d0000000e01700029000000000416034f000000000804043b000013ab0080009c00000d0b0000213d000000050a8002100000000004a500490000002007100039000013b301400197000013b30e700197000000000f1e013f00000000001e004b0000000001000019000013b301004041000000000047004b0000000004000019000013b304002041000013b300f0009c000000000104c019000000000001004b00000d0b0000c13d000000090100002900080060001000920000000801600360000000000401043b000013730040009c00000d0b0000213d0000003f01d00039000013b40e100197000000400100043d000000000ee1001900000000001e004b000000000f000039000000010f004039000013ab00e0009c000009d30000213d0000000100f00190000009d30000c13d0000004000e0043f0000000000c10435000000000c2d001900000000005c004b00000d0b0000213d00000000002c004b00000f790000a13d000000000d010019000000000e26034f000000000e0e043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b00000f700000413d0000003f02b00039000013b40c200197000000400200043d000000000cc2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000059004b00000d0b0000213d000000000039004b00000f930000a13d000000000b020019000000000c36034f000000000c0c043b000000200bb000390000000000cb04350000002003300039000000000093004b00000f8c0000413d0000003f03a00039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f000000000083043500000000087a0019000000000058004b00000d0b0000213d0000000005000410000000000078004b00000fae0000a13d0000000009030019000000000a76034f000000000a0a043b00000020099000390000000000a904350000002007700039000000000087004b00000fa70000413d4dbc25930000040f00000002020003670000000803200360000700000001001d000000000103043b000013730010009c00000d0b0000213d0000006403200370000000000603043b0000004402200370000000000402043b0000000d02000029000000070300002900000000050300194dbc37d60000040f000600000002001d000000070010006b00001c690000c13d00000008010000290000000201100367000000000101043b000500000001001d000013730010009c00000d0b0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b00000005020000290000000d030000294dbc46c30000040f000500000001001d00000008010000290000000201100367000000000101043b000013730010009c00000d0b0000213d000000050200002900000007030000294dbc36670000040f00000000020004110000000d01000029000000050300002900000006040000294dbc36eb0000040f000013c701000041000000400300043d00000000001304350000000c010000290000137302100197000d00000003001d0000000401300039000c00000002001d000000000021043500000000010004140000000502000029000000040020008c00001cef0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001d1b0000013d0000000e03000029000013700030009c00001370030080410000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013b2011001c74dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000e05700029000010120000613d000000000801034f0000000e09000029000000008a08043c0000000009a90436000000000059004b0000100e0000c13d000000000006004b0000101f0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010e20000613d0000001f01400039000000600210018f0000000e01200029000000000021004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f000000200030008c00000d0b0000413d0000000e0200002900000000020204330000004003100039000000000023043500000020021000390000000a0300002900000000003204350000000b020000290000000000210435000013700010009c00001370010080410000004001100210000013ca011001c700004dbd0001042e0000000b01000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c70000000a020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b057000290000105a0000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b000010560000c13d000000000006004b000010670000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010ee0000613d0000001f01400039000000600110018f0000000b02100029000000000012004b00000000010000390000000101004039000900000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000901000029000000400010043f000000200030008c00000d0b0000413d0000000b010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000009020000290000000001120436000b00000001001d00000004012000390000000c02000029000000000021043500000000010004140000000a02000029000000040020008c000011f60000c13d000000400030008c00000040040000390000000004034019000012220000013d0000000c01000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c70000000b020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000c05700029000010ac0000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000010a80000c13d000000000006004b000010b90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000010fa0000613d0000001f01400039000000600110018f0000000c02100029000000000012004b00000000010000390000000101004039000700000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000701000029000000400010043f000000200030008c00000d0b0000413d0000000c010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000007020000290000000001120436000c00000001001d00000004012000390000000002000410000000000021043500000000010004140000000b02000029000000040020008c000012410000c13d000000400030008c000000400400003900000000040340190000126d0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010e90000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000010f50000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011010000c13d00001bc80000013d000000400100043d000013da02000041000001f70000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011110000c13d00001bc80000013d000013c4011001c700008009020000390000000a030000290000000e0400002900000000050000194dbc4db20000040f000300000001035500000000030100190000006003300270000113700030019d0000000100200190000011380000613d0000000c01000029000013ab0010009c000009d30000213d0000000c03000029000000400030043f00000024013000390000000a020000290000000000210435000013c501000041000000000013043500000004013000390000000902000029000000000021043500000000010004140000000e02000029000000040020008c0000128d0000c13d0000000104000031000000200040008c00000020030000390000000003044019000012b90000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000011400000c13d00001bc80000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000114d0000c13d00001bc80000013d0000000901000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c700000008020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000009057000290000116e0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b0000116a0000c13d000000000006004b0000117b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013240000613d0000001f01400039000000600110018f0000000902100029000000000012004b00000000010000390000000101004039000700000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000701000029000000400010043f000000200030008c00000d0b0000413d00000009010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000007020000290000000001120436000900000001001d00000004012000390000000002000410000000000021043500000000010004140000000802000029000000040020008c000014450000c13d000000400030008c00000040040000390000000004034019000014710000013d0000000901000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c700000008020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000905700029000011c00000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b000011bc0000c13d000000000006004b000011cd0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013300000613d0000001f01400039000000600110018f0000000902100029000000000012004b00000000010000390000000101004039000700000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000701000029000000400010043f000000200030008c00000d0b0000413d00000009010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000007020000290000000001120436000900000001001d00000004012000390000000002000410000000000021043500000000010004140000000802000029000000040020008c000015690000c13d000000400030008c00000040040000390000000004034019000015950000013d0000000902000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000a020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f00000060074001900000000905700029000012110000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b0000120d0000c13d000000000006004b0000121e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000133c0000613d0000001f01400039000000e00110018f0000000901100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d000013700010009c0000137002000041000000000201401900000040022002100000000d040000290000000e0040006b0000141e0000c13d0000006403100039000013c00400004100000000004304350000004403100039000013c1040000410000000000430435000000240310003900000025040000390000000000430435000013bf030000410000000000310435000000040110003900000020030000390000000000310435000013c2012001c700004dbe000104300000000702000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000b020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f000000600740019000000007057000290000125c0000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000012580000c13d000000000006004b000012690000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000013480000613d0000001f01400039000000e00110018f0000000701100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d00000008020000290000137303200197000b00000003001d0000000e0030006b000014300000c13d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe000104300000000c02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c70000000e020000294dbc4db20000040f000000000301001900000060033002700000137004300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000c05700029000012a80000613d000000000801034f0000000c09000029000000008a08043c0000000009a90436000000000059004b000012a40000c13d000000000006004b000012b50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f00030000000103550000000100200190000013540000613d0000001f01300039000000600110018f0000000c02100029000e00000002001d000013ab0020009c000009d30000213d0000000e02000029000000400020043f000000200040008c00000d0b0000413d0000000c020000290000000002020433000000000002004b0000000005000039000000010500c039000000000052004b00000d0b0000c13d000000000002004b000016b30000c13d000013d201000041000000000010043f0000000101000039000000040010043f000013b20100004100004dbe000104300000000801000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c700000007020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000805700029000012ee0000613d000000000801034f0000000809000029000000008a08043c0000000009a90436000000000059004b000012ea0000c13d000000000006004b000012fb0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000136e0000613d0000001f01400039000000600110018f0000000802100029000000000012004b00000000010000390000000101004039000600000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000601000029000000400010043f000000200030008c00000d0b0000413d00000008010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000006020000290000000001120436000800000001001d00000004012000390000000002000410000000000021043500000000010004140000000702000029000000040020008c000017230000c13d000000400030008c000000400400003900000000040340190000174f0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000132b0000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013370000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013430000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000134f0000c13d00001bc80000013d0000001f0540018f0000137206400198000000400200043d00000000036200190000135f0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b0000135b0000c13d000000000005004b0000136c0000613d000000000161034f0000000305500210000000000603043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f0000000000130435000000600140021000001bd60000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000013750000c13d00001bc80000013d0000000b01000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c70000000d020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000b05700029000013960000613d000000000801034f0000000b09000029000000008a08043c0000000009a90436000000000059004b000013920000c13d000000000006004b000013a30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000168e0000613d0000001f01400039000000600110018f0000000b02100029000000000012004b00000000010000390000000101004039000a00000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000a01000029000000400010043f000000200030008c00000d0b0000413d0000000b010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b1010000410000000a020000290000000001120436000b00000001001d00000004012000390000000002000410000000000021043500000000010004140000000d02000029000000040020008c000019800000c13d000000400030008c00000040040000390000000004034019000019ac0000013d0000000a01000029000013700010009c000013700200004100000000020140190000004002200210000013700030009c0000137003008041000000c001300210000000000121019f000013b0011001c70000000c020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a05700029000013e80000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000013e40000c13d000000000006004b000013f50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000169a0000613d0000001f01400039000000600110018f0000000a02100029000000000012004b00000000010000390000000101004039000900000002001d000013ab0020009c000009d30000213d0000000100100190000009d30000c13d0000000901000029000000400010043f000000200030008c00000d0b0000413d0000000a010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000013b10100004100000009020000290000000001120436000a00000001001d00000004012000390000000b02000029000000000021043500000000010004140000000c02000029000000040020008c00001a100000c13d000000400030008c0000004004000039000000000403401900001a3c0000013d0000000d0400002900000000030400190000000e03004029000000000003004b000017020000c13d0000004403100039000013be04000041000000000043043500000024031000390000001e040000390000000000430435000013bf030000410000000000310435000000040110003900000020030000390000000000310435000013b0012001c700004dbe0001043000000008030000290000000e0300402900000000040300190000137300300198000017140000c13d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe000104300000000702000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000008020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f00000060074001900000000705700029000014600000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b0000145c0000c13d000000000006004b0000146d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000194b0000613d0000001f01400039000000e00110018f0000000701100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d0000000b030000290000000e0030006c0000127a0000613d0000000b030000290000000e020000290000000002034019000000000002004b000014350000613d00000007020000290000000002020433000000090300002900000000060304330000000b040000290000000e0040006c00000000030600190000000003022019000b00000003001d000000000602a01900000002050003670000006402500370000000000202043b000900000006001d000000000026004b000017210000413d0000008402500370000000000202043b0000000b0020006b0000196e0000413d0000000a03000029000800200030003d0000000802500360000000000202043b000000000600003100000000033600490000001f0430008a000013b307400197000013b303200197000000000873013f000000000073004b0000000003000019000013b303004041000000000042004b0000000009000019000013b309008041000013b30080009c000000000309c019000000000003004b00000d0b0000c13d0000000a02200029000000000325034f000000000c03043b000013ab00c0009c00000d0b0000213d000000050dc002100000000003d600490000002002200039000013b308300197000013b309200197000000000a89013f000000000089004b0000000008000019000013b308004041000000000032004b0000000003000019000013b303002041000013b300a0009c000000000803c019000000000008004b00000d0b0000c13d0000000803000029000700200030003d0000000703500360000000000303043b000013b308300197000000000978013f000000000078004b0000000008000019000013b308004041000000000043004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000a03300029000000000835034f000000000908043b000013ab0090009c00000d0b0000213d000000050b9002100000000008b600490000002003300039000013b30a800197000013b30e300197000000000fae013f0000000000ae004b000000000a000019000013b30a004041000000000083004b0000000008000019000013b308002041000013b300f0009c000000000a08c01900000000000a004b00000d0b0000c13d0000000708000029000500200080003d0000000508500360000000000808043b000013b30a800197000000000e7a013f00000000007a004b0000000007000019000013b307004041000000000048004b0000000004000019000013b304008041000013b300e0009c000000000704c019000000000007004b00000d0b0000c13d0000000a04800029000000000745034f000000000807043b000013ab0080009c00000d0b0000213d0004000500800218000000040e60006a0000002007400039000013b304e00197000013b30f700197000000000a4f013f00000000004f004b0000000004000019000013b3040040410000000000e7004b000000000e000019000013b30e002041000013b300a0009c00000000040ec019000000000004004b00000d0b0000c13d0000000a04500360000000000404043b000013730040009c00000d0b0000213d0000003f0ad00039000013b40aa00197000000000e1a0019000013ab00e0009c000009d30000213d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000015220000a13d000000000d010019000000000a25034f000000000e0a043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b000015190000413d0000003f02b00039000013b40a200197000000400200043d000000000ca2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000069004b00000d0b0000213d000000000039004b0000153c0000a13d000000000b020019000000000a35034f000000000a0a043b000000200bb000390000000000ab04350000002003300039000000000093004b000015350000413d00000004030000290000003f03300039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f00000000008304350000000408700029000000000068004b00000d0b0000213d000000000078004b000015570000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b000015500000413d00000000050004100000000d060000294dbc27dd0000040f000400090010007300000a3f0000413d0000000c0000006b00001ed30000c13d000000090010006b00001edf0000613d0000000a010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000d0200002900000004030000294dbc36670000040f00001edf0000013d0000000702000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000008020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f00000060074001900000000705700029000015840000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b000015800000c13d000000000006004b000015910000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000019570000613d0000001f01400039000000e00110018f0000000701100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d0000000a020000290000137302200197000800000002001d0000000c0020006b0000127a0000613d0000000c030000290000000a0200002900000000020340190000137302200198000014350000613d00000007030000290000000006030433000000090300002900000000030304330000000c0020006b00000000020600190000000002036019000c00000002001d000000000603c01900000002050003670000004402500370000000000202043b000900000006001d000000000026004b000017210000413d0000006402500370000000000202043b0000000c0020006b0000196e0000413d0000000b03000029000700200030003d0000000702500360000000000202043b000000000600003100000000033600490000001f0430008a000013b307400197000013b303200197000000000873013f000000000073004b0000000003000019000013b303004041000000000042004b0000000009000019000013b309008041000013b30080009c000000000309c019000000000003004b00000d0b0000c13d0000000b02200029000000000325034f000000000c03043b000013ab00c0009c00000d0b0000213d000000050dc002100000000003d600490000002002200039000013b308300197000013b309200197000000000a89013f000000000089004b0000000008000019000013b308004041000000000032004b0000000003000019000013b303002041000013b300a0009c000000000803c019000000000008004b00000d0b0000c13d0000000703000029000500200030003d0000000503500360000000000303043b000013b308300197000000000978013f000000000078004b0000000008000019000013b308004041000000000043004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000b03300029000000000835034f000000000908043b000013ab0090009c00000d0b0000213d000000050b9002100000000008b600490000002003300039000013b30a800197000013b30e300197000000000fae013f0000000000ae004b000000000a000019000013b30a004041000000000083004b0000000008000019000013b308002041000013b300f0009c000000000a08c01900000000000a004b00000d0b0000c13d0000000508000029000400200080003d0000000408500360000000000808043b000013b30a800197000000000e7a013f00000000007a004b0000000007000019000013b307004041000000000048004b0000000004000019000013b304008041000013b300e0009c000000000704c019000000000007004b00000d0b0000c13d0000000b04800029000000000745034f000000000807043b000013ab0080009c00000d0b0000213d0003000500800218000000030e60006a0000002007400039000013b304e00197000013b30f700197000000000a4f013f00000000004f004b0000000004000019000013b3040040410000000000e7004b000000000e000019000013b30e002041000013b300a0009c00000000040ec019000000000004004b00000d0b0000c13d0000000b04500360000000000404043b000013730040009c00000d0b0000213d0000003f0ad00039000013b40aa00197000000000e1a0019000013ab00e0009c000009d30000213d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000016470000a13d000000000d010019000000000a25034f000000000e0a043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b0000163e0000413d0000003f02b00039000013b40a200197000000400200043d000000000ca2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000069004b00000d0b0000213d000000000039004b000016610000a13d000000000b020019000000000a35034f000000000a0a043b000000200bb000390000000000ab04350000002003300039000000000093004b0000165a0000413d00000003030000290000003f03300039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f00000000008304350000000308700029000000000068004b00000d0b0000213d000000000078004b0000167c0000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b000016750000413d00000000050004100000000e060000294dbc27dd0000040f000300090010007300000a3f0000413d0000000d0000006b00001fb00000c13d000000090010006b00001fbc0000613d0000000b010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000e0200002900000003030000294dbc36670000040f00001fbc0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016950000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016a10000c13d00001bc80000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000016ae0000c13d00001bc80000013d000013c7020000410000000e05000029000000000025043500000004025000390000000d05000029000000000052043500000000020004140000000905000029000000040050008c000016eb0000613d0000000e01000029000013700010009c00001370010080410000004001100210000013700020009c0000137002008041000000c002200210000000000112019f000013b2011001c700000009020000294dbc4db20000040f000000000301001900000060033002700000137004300197000000200040008c000000200300003900000000030440190000001f0630018f00000020073001900000000e05700029000016d80000613d000000000801034f0000000e09000029000000008a08043c0000000009a90436000000000059004b000016d40000c13d000000000006004b000016e50000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000001a540000613d0000001f01300039000000600110018f0000000e01100029000013ab0010009c000009d30000213d000000400010043f000000200030008c00000d0b0000413d0000000e020000290000000002020433000e00000002001d00000000030004160000000a0330006c00001bec0000a13d000013b80010009c000009d30000213d0000002002100039000000400020043f000000000001043500000000010004140000000d02000029000000040020008c00001bdb0000c13d000000010200003900001be70000013d000000090300002900000000050304330000000b0300002900000000030304330000000d060000290000000e0060006b00000000040300190000000004052019000000000305a01900000002050003670000006406500370000000000606043b000000000063004b000019630000813d000013bd03000041000000000031043500001378012001c700004dbe00010430000000070200002900000000050204330000000c0200002900000000020204330000000e0340014f000013730030019800000000030500190000000003026019000c00000003001d000000000502c019000800000005001d0000000a0050006c0000196b0000813d000013bd02000041000001f70000013d0000000602000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000007020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f000000600740019000000006057000290000173e0000613d000000000801034f0000000609000029000000008a08043c0000000009a90436000000000059004b0000173a0000c13d000000000006004b0000174b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000019700000613d0000001f01400039000000e00110018f0000000601100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d0000000a030000290000000c0030006b0000127a0000613d0000000a0300002900000000020300190000000c02004029000000000002004b000014350000613d00000006020000290000000002020433000000080300002900000000040304330000000a050000290000000c0050006b00000000030400190000000003022019000c00000003001d000000000402a01900000002050003670000006402500370000000000202043b000a00000004001d000000000024004b000017210000413d0000008402500370000000000202043b0000000c0020006b0000196e0000413d0000000b040000290000002003400039000000000235034f000000000202043b000000000600003100000000044600490000001f0440008a000013b307400197000013b308200197000000000978013f000000000078004b0000000008000019000013b308004041000000000042004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000b02200029000000000825034f000000000c08043b000013ab00c0009c00000d0b0000213d000000050dc002100000000008d600490000002002200039000013b309800197000013b30a200197000000000b9a013f00000000009a004b0000000009000019000013b309004041000000000082004b0000000008000019000013b308002041000013b300b0009c000000000908c019000000000009004b00000d0b0000c13d0000002008300039000000000385034f000000000303043b000013b309300197000000000a79013f000000000079004b0000000009000019000013b309004041000000000043004b000000000b000019000013b30b008041000013b300a0009c00000000090bc019000000000009004b00000d0b0000c13d0000000b03300029000000000935034f000000000909043b000013ab0090009c00000d0b0000213d0008000500900218000000080a60006a0000002003300039000013b30ea00197000013b30f300197000000000bef013f0000000000ef004b000000000e000019000013b30e0040410000000000a3004b000000000a000019000013b30a002041000013b300b0009c000000000e0ac01900000000000e004b00000d0b0000c13d0000002008800039000000000885034f000000000808043b000013b30a800197000000000b7a013f00000000007a004b0000000007000019000013b307004041000000000048004b0000000004000019000013b304008041000013b300b0009c000000000704c019000000000007004b00000d0b0000c13d0000000b04800029000000000745034f000000000807043b000013ab0080009c00000d0b0000213d000000050a800210000000000ba600490000002007400039000013b304b00197000013b30e700197000000000f4e013f00000000004e004b0000000004000019000013b3040040410000000000b7004b000000000b000019000013b30b002041000013b300f0009c00000000040bc019000000000004004b00000d0b0000c13d0000000b04500360000000000404043b000013730040009c00000d0b0000213d0000003f0bd00039000013b40bb00197000000000e1b0019000013ab00e0009c000009d30000213d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000017fe0000a13d000000000d010019000000000b25034f000000000e0b043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b000017f50000413d00000008020000290000003f02200039000013b40b200197000000400200043d000000000cb2001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f00000000009204350000000809300029000000000069004b00000d0b0000213d000000000039004b000018190000a13d000000000b020019000000000c35034f000000000c0c043b000000200bb000390000000000cb04350000002003300039000000000093004b000018120000413d0000003f03a00039000013b409300197000000400300043d0000000009930019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f000000000083043500000000087a0019000000000068004b00000d0b0000213d000000000078004b000018330000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b0000182c0000413d00000000050004100000000d060000294dbc27dd0000040f0000000e0200002900000024032000390000000205000367000000000235034f000000000202043b0000000006000031000000090460006a0000001f0440008a000013b307400197000013b308200197000000000978013f000000000078004b0000000008000019000013b308004041000000000042004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000e00000001001d000000000008004b00000d0b0000c13d0000000901200029000000000215034f000000000c02043b000013ab00c0009c00000d0b0000213d000000050dc002100000000008d600490000002002100039000013b301800197000013b309200197000000000a19013f000000000019004b0000000001000019000013b301004041000000000082004b0000000008000019000013b308002041000013b300a0009c000000000108c019000000000001004b00000d0b0000c13d0000002001300039000000000315034f000000000303043b000013b308300197000000000978013f000000000078004b0000000008000019000013b308004041000000000043004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000903300029000000000835034f000000000908043b000013ab0090009c00000d0b0000213d000000050b9002100000000008b600490000002003300039000013b30a800197000013b30e300197000000000fae013f0000000000ae004b000000000a000019000013b30a004041000000000083004b0000000008000019000013b308002041000013b300f0009c000000000a08c01900000000000a004b00000d0b0000c13d0000002001100039000000000815034f000000000808043b000013b30a800197000000000e7a013f00000000007a004b0000000007000019000013b307004041000000000048004b0000000004000019000013b304008041000013b300e0009c000000000704c019000000000007004b00000d0b0000c13d0000000904800029000000000745034f000000000707043b000800000007001d000013ab0070009c00000d0b0000213d0000000807000029000000050a700210000000000ea600490000002007400039000013b304e00197000013b30f70019700000000084f013f00000000004f004b0000000004000019000013b3040040410000000000e7004b000000000e000019000013b30e002041000013b30080009c00000000040ec019000000000004004b00000d0b0000c13d00040060001000920000000401500360000000000401043b000013730040009c00000d0b0000213d0000003f01d00039000013b408100197000000400100043d000000000e81001900000000001e004b000000000f000039000000010f004039000013ab00e0009c000009d30000213d0000000100f00190000009d30000c13d0000004000e0043f0000000000c10435000000000c2d001900000000006c004b00000d0b0000213d00000000002c004b000018cc0000a13d000000000d010019000000000825034f000000000e08043b0000137300e0009c00000d0b0000213d000000200dd000390000000000ed043500000020022000390000000000c2004b000018c30000413d0000003f02b00039000013b408200197000000400200043d000000000c82001900000000002c004b000000000d000039000000010d004039000013ab00c0009c000009d30000213d0000000100d00190000009d30000c13d0000004000c0043f000000000092043500000000093b0019000000000069004b00000d0b0000213d000000000039004b000018e60000a13d000000000b020019000000000835034f000000000808043b000000200bb0003900000000008b04350000002003300039000000000093004b000018df0000413d0000003f03a00039000013b408300197000000400300043d0000000009830019000000000039004b000000000b000039000000010b004039000013ab0090009c000009d30000213d0000000100b00190000009d30000c13d000000400090043f0000000808000029000000000083043500000000087a0019000000000068004b00000d0b0000213d000000000078004b000019010000a13d0000000006030019000000000975034f000000000909043b000000200660003900000000009604350000002007700039000000000087004b000018fa0000413d00000000050004100000000d060000294dbc27dd0000040f000600000001001d0000000e020000290008000a0020007300000a3f0000413d00000006020000290007000c0020007300000a3f0000413d0000000e020000290000000a0020006b000019150000613d0000000b010000290000000201100367000000000101043b000013730010009c00000d0b0000213d00000008020000294dbc35e30000040f00000006020000290000000c0020006b0000191f0000613d00000009010000290000000201100367000000000101043b000013730010009c00000d0b0000213d00000007020000294dbc35e30000040f00000002010003670000000b02100360000000000202043b000013730020009c00000d0b0000213d0000000401100360000000000301043b000013730030009c00000d0b0000213d00000005010000294dbc46c30000040f0000000002010019000000400100043d000e00000001001d0000000b0300002900000009040000294dbc2c110000040f0000000e020000290000000001210049000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000121019f0000000d020000290000137305200197000013b9011001c70000800d020000390000000203000039000013d4040000414dbc4db20000040f000000010020019000000d0b0000613d000000400100043d0000002002100039000000070300002900001a9b0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019520000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000195e0000c13d00001bc80000013d0000008405500370000000000505043b000000000054004b0000197c0000813d000013bc03000041000000000031043500001378012001c700004dbe000104300000000c03000029000000090030006c00001a600000813d000013bc02000041000001f70000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000019770000c13d00001bc80000013d00000000013104360000000000410435000013bb012001c700004dbd0001042e0000000a02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000d020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f00000060074001900000000a057000290000199b0000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000019970000c13d000000000006004b000019a80000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001bb10000613d0000001f01400039000000e00110018f0000000a01100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d00000006020000290000137303200197000d00000003001d0000000e0030006b0000127a0000613d00000006030000290000000e0300402900000000040300190000137300300198000014350000613d0000000a0200002900000000050204330000000b0200002900000000020204330000000e0340014f000013730030019800000000030500190000000003026019000b00000003001d000000000502c01900000002020003670000004403200370000000000303043b000a00000005001d000000000035004b000017210000413d0000006402200370000000000202043b0000000b0020006b0000196e0000413d0000000e010000290000000c020000290000000a030000294dbc36670000040f000013b50100004100000000001004430000000d0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000000120435000e00000002001d00000004012000390000000b02000029000000000021043500000000010004140000000d02000029000000040020008c00001a020000613d0000000e02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000d020000294dbc4db20000040f00000000030100190000006003300270000113700030019d0003000000010355000000010020019000001cbc0000613d0000000e01000029000013ab0010009c000009d30000213d0000000e01000029000000400010043f0000000c010000290000000b020000294dbc37720000040f000000400100043d00000020021000390000000b0300002900000000003204350000000a0200002900001a9d0000013d0000000902000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000c020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000400030008c000000400400003900000000040340190000001f0640018f0000006007400190000000090570002900001a2b0000613d000000000801034f0000000909000029000000008a08043c0000000009a90436000000000059004b00001a270000c13d000000000006004b00001a380000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001bbd0000613d0000001f01400039000000e00110018f0000000901100029000013ab0010009c000009d30000213d000000400010043f000000400030008c00000d0b0000413d000013700010009c0000137002000041000000000201401900000040022002100000000d040000290000000e0040006b000012310000613d0000000d0400002900000000030400190000000e03004029000000000003004b000014230000613d000000090300002900000000050304330000000a03000029000017050000013d0000001f0540018f0000137206400198000000400200043d00000000036200190000135f0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00001a5b0000c13d0000135f0000013d0000000e010000290000000d0200002900000008030000294dbc36670000040f000013b50100004100000000001004430000000b0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000000120435000e00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000b02000029000000040020008c00001a900000613d0000000e02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000b020000294dbc4db20000040f00000000030100190000006003300270000113700030019d0003000000010355000000010020019000001c170000613d0000000e01000029000013ab0010009c000009d30000213d0000000e01000029000000400010043f0000000d010000290000000c020000294dbc37720000040f000000400100043d00000020021000390000000c03000029000000000032043500000008020000290000000000210435000013700010009c00001370010080410000004001100210000013bb011001c700004dbd0001042e0000000b0100002900000020021000390000000201000367000000000321034f000000000303043b000d00000003001d000013730030009c00000d0b0000213d0000000c03000029000000020030008c000001d90000413d0000002002200039000000000121034f000000000301043b000013730030009c00000d0b0000213d00000005010000290000000d020000294dbc46c30000040f00000000030100190000000e010000290000000001010433000000000001004b000001d90000613d0000000401000029000000000401043300000000020004110000000d010000294dbc36eb0000040f000000400200043d0000000a01200029000000000021004b00000000030000390000000103004039000013ab0010009c000009d30000213d0000000100300190000009d30000c13d000000400010043f0000000c0100002900000000001204350000000607000029000000000070007c00000d0b0000213d00000000030004100000000201000367000000000402001900000009050000290000000006050019000000000551034f000000000505043b000013730050009c00000d0b0000213d0000002004400039000000000054043500000000050600190000002005500039000000000075004b00001ad30000413d0000000e010000294dbc3e410000040f0000000e010000290000000001010433000000000001004b00000a3f0000613d00000005011002100000000e011000290000000001010433000d00000001001d000013b5010000410000000000100443000000070100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000000120435000c00000002001d00000004012000390000000d02000029000000000021043500000000010004140000000702000029000000040020008c00001b140000613d0000000c02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000007020000294dbc4db20000040f00000000030100190000006003300270000113700030019d0003000000010355000000010020019000001cd50000613d0000000c01000029000013ab0010009c000009d30000213d0000000c01000029000000400010043f0000000e010000290000000001010433000000000001004b00000a3f0000613d000000010210008a0000000e010000294dbc25740000040f000000000201043300000008010000294dbc37720000040f000000400200043d000d00000002001d000000200100003900000000021204360000000e010000294dbc242e0000040f0000000d0200002900000bc60000013d0000000b0100002900000020021000390000000201000367000000000321034f000000000303043b000d00000003001d000013730030009c00000d0b0000213d0000000c03000029000000020030008c000001d90000413d0000002002200039000000000121034f000000000301043b000013730030009c00000d0b0000213d00000005010000290000000d020000294dbc46c30000040f000000000301001900000004010000290000000001010433000000000001004b000001d90000613d0000000e01000029000000000401043300000000020004110000000d010000294dbc36eb0000040f000000400200043d0000000a01200029000000000021004b00000000030000390000000103004039000013ab0010009c000009d30000213d0000000100300190000009d30000c13d000000400010043f0000000c0100002900000000001204350000000607000029000000000070007c00000d0b0000213d00000000030004100000000201000367000000000402001900000009050000290000000006050019000000000551034f000000000505043b000013730050009c00000d0b0000213d0000002004400039000000000054043500000000050600190000002005500039000000000075004b00001b5b0000413d00000004010000294dbc3e410000040f00000004010000290000000001010433000000000001004b00000a3f0000613d000000050110021000000004011000290000000001010433000e00000001001d000013b5010000410000000000100443000000070100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000000120435000d00000002001d00000004012000390000000e02000029000000000021043500000000010004140000000702000029000000040020008c00001b9c0000613d0000000d02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000007020000294dbc4db20000040f00000000030100190000006003300270000113700030019d0003000000010355000000010020019000001ce20000613d0000000d01000029000013ab0010009c000009d30000213d0000000d01000029000000400010043f00000004010000290000000001010433000000000001004b00000a3f0000613d000000010210008a00000004010000294dbc25740000040f000000000201043300000008010000294dbc37720000040f000000400200043d000e00000002001d00000020010000390000000002120436000000040100002900000bc40000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bb80000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001bc40000c13d000000000005004b00001bd50000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000013700010009c0000137001008041000000c001100210000013b9011001c700008009020000390000000d0400002900000000050000194dbc4db20000040f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b00001bf00000c13d000000400100043d00000001002001900000232e0000613d00000040021000390000000e030000290000000000320435000010340000013d0000001f03400039000013de033001970000003f03300039000013de05300197000000400300043d0000000005530019000000000035004b00000000060000390000000106004039000013ab0050009c000009d30000213d0000000100600190000009d30000c13d000000400050043f0000000006430436000013de034001980000001f0440018f0000000001360019000000030500036700001c090000613d000000000705034f000000007807043c0000000006860436000000000016004b00001c050000c13d000000000004004b00001be90000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500001be90000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c1f0000c13d00001bc80000013d000013c4011001c700008009020000390000000e030000290000000c0400002900000000050000194dbc4db20000040f000300000001035500000000030100190000006003300270000113700030019d000000010020019000001c5c0000613d0000000501000029000013ab0010009c000009d30000213d0000000501000029000000400010043f00000002010003670000000802100360000000000202043b000013730020009c00000d0b0000213d0000000d03000029000000020030008c000001d90000413d00000008030000290000002003300039000000000131034f000000000301043b000013730030009c00000d0b0000213d00000006010000294dbc46c30000040f0000000b020000290000000002020433000000000002004b000001d90000613d00000007020000290000000002020433000000400400043d00000024034000390000000000230435000013c5020000410000000000240435000e00000004001d0000000402400039000000000012043500000000010004140000000c02000029000000040020008c00001c6c0000c13d0000000103000031000000200030008c0000002004000039000000000403401900001c980000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001c640000c13d00001bc80000013d000000400100043d000013d002000041000001f70000013d0000000e02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c70000000c020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000e0570002900001c870000613d000000000801034f0000000e09000029000000008a08043c0000000009a90436000000000059004b00001c830000c13d000000000006004b00001c940000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001cc90000613d0000001f01400039000000600210018f0000000e01200029000000000021004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f000000200030008c00000d0b0000413d0000000e010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00000d0b0000c13d000000000001004b000012cc0000613d00000000030000310000000a010000290000000d020000294dbc23430000040f00000000020100190000000b0100002900000009030000294dbc3e410000040f000000400200043d000e00000002001d000000200100003900000000021204360000000b0100002900000bc40000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001cc40000c13d00001bc80000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001cd00000c13d00001bc80000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001cdd0000c13d00001bc80000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001cea0000c13d00001bc80000013d0000000d02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000005020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000d0570002900001d0a0000613d000000000801034f0000000d09000029000000008a08043c0000000009a90436000000000059004b00001d060000c13d000000000006004b00001d170000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000001e120000613d0000001f01400039000000600210018f0000000d01200029000000000021004b00000000020000390000000102004039000013ab0010009c000009d30000213d0000000100200190000009d30000c13d000000400010043f000000200030008c00000d0b0000413d0000000d020000290000000002020433000d00000002001d0000002002100039000000400300003900000000003204350000000502000029000000000021043500000002020003670000000803200360000000000403043b000013730040009c00000d0b0000213d000000400310003900000000004304350000000b0620036000000000040000310000000e0540006a0000001f0550008a000000000706043b000013b308700197000013b306500197000000000968013f000000000068004b0000000008000019000013b308004041000000000057004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000e07700029000000000872034f000000000808043b000013ab0080009c00000d0b0000213d000000200970003900000005078002100000000007740049000000000079004b000000000a000019000013b30a002041000013b307700197000013b30b900197000000000c7b013f00000000007b004b0000000007000019000013b307004041000013b300c0009c00000000070ac019000000000007004b00000d0b0000c13d000000c007100039000000600a100039000000800b0000390000000000ba04350000000000870435000000e007100039000000000008004b00001d700000613d000000000a000019000000000b92034f000000000b0b043b0000137300b0009c00000d0b0000213d0000000007b704360000002009900039000000010aa0003900000000008a004b00001d670000413d0000000a08200360000000000808043b000013b309800197000000000a69013f000000000069004b0000000009000019000013b309004041000000000058004b000000000b000019000013b30b008041000013b300a0009c00000000090bc019000000000009004b00000d0b0000c13d0000000e08800029000000000982034f000000000909043b000013ab0090009c00000d0b0000213d0000002008800039000000050a900210000000000ba400490000000000b8004b000000000c000019000013b30c002041000013b30bb00197000013b30d800197000000000ebd013f0000000000bd004b000000000b000019000013b30b004041000013b300e0009c000000000b0cc01900000000000b004b00000d0b0000c13d000000000b370049000000800c1000390000000000bc0435000000000b9704360000001f09a0018f0000000007ab001900000000000a004b00001da00000613d000000000882034f000000008a08043c000000000bab043600000000007b004b00001d9c0000c13d000000000009004b0000000908200360000000000808043b000013b309800197000000000a69013f000000000069004b0000000006000019000013b306004041000000000058004b0000000005000019000013b305008041000013b300a0009c000000000605c019000000000006004b00000d0b0000c13d0000000e05800029000000000652034f000000000806043b000013ab0080009c00000d0b0000213d000000200650003900000005058002100000000004540049000000000046004b0000000009000019000013b309002041000013b304400197000013b30a600197000000000b4a013f00000000004a004b0000000004000019000013b304004041000013b300b0009c000000000409c019000000000004004b00000d0b0000c13d0000000003370049000000a004100039000000000034043500000000038704360000001f0450018f000000000005004b00001dd20000613d000000000262034f00000000065300190000000007030019000000002802043c0000000007870436000000000067004b00001dce0000c13d000000000004004b00000000021300490000000002520019000013700020009c00001370020080410000006002200210000013700010009c00001370010080410000004001100210000000000112019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000800d020000390000000203000039000013d1040000410000000c050000294dbc4db20000040f000000010020019000000d0b0000613d000000400100043d00000040021000390000000d030000290000000000320435000000200210003900000006030000290000232a0000013d000013c4011001c700008009020000390000000503000029000000070400002900000000050000194dbc4db20000040f000300000001035500000000030100190000006003300270000113700030019d000000010020019000001e1e0000613d0000000201000029000013ab0010009c000009d30000213d0000000203000029000000400030043f000000240130003900000005020000290000000000210435000013c501000041000000000013043500000004013000390000000402000029000000000021043500000000010004140000000702000029000000040020008c00001e2b0000c13d0000000104000031000000200040008c0000002003000039000000000304401900001e570000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e190000c13d00001bc80000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00001e260000c13d00001bc80000013d0000000202000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c700000007020000294dbc4db20000040f000000000301001900000060033002700000137004300197000000200040008c000000200300003900000000030440190000001f0630018f0000002007300190000000020570002900001e460000613d000000000801034f0000000209000029000000008a08043c0000000009a90436000000000059004b00001e420000c13d000000000006004b00001e530000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000001ebb0000613d0000001f01300039000000600110018f0000000202100029000700000002001d000013ab0020009c000009d30000213d0000000702000029000000400020043f000000200040008c00000d0b0000413d00000002020000290000000002020433000000000002004b0000000005000039000000010500c039000000000052004b00000d0b0000c13d000000000002004b000012cc0000613d0000000e020000290000137305200197000013c702000041000000070600002900000000002604350000000402600039000200000005001d000000000052043500000000020004140000000405000029000000040050008c00001ea40000613d0000000701000029000013700010009c00001370010080410000004001100210000013700020009c0000137002008041000000c002200210000000000112019f000013b2011001c700000004020000294dbc4db20000040f000000000301001900000060033002700000137004300197000000200040008c000000200300003900000000030440190000001f0630018f0000002007300190000000070570002900001e910000613d000000000801034f0000000709000029000000008a08043c0000000009a90436000000000059004b00001e8d0000c13d000000000006004b00001e9e0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000004001f0003000000010355000000010020019000001ec70000613d0000001f01300039000000600110018f0000000701100029000013ab0010009c000009d30000213d000000400010043f000000200030008c00000d0b0000413d00000007020000290000000002020433000700000002001d0000000003000416000000050330006c000020930000a13d000013b80010009c000009d30000213d0000002002100039000000400020043f000000000001043500000000010004140000000e02000029000000040020008c0000205d0000c13d0000000102000039000020690000013d0000001f0540018f0000137206400198000000400200043d00000000036200190000135f0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00001ec20000c13d0000135f0000013d0000001f0540018f0000137206400198000000400200043d00000000036200190000135f0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000038004b00001ece0000c13d0000135f0000013d0000000a010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000e0200002900000004030000294dbc2d660000040f0000000b0010002a00000a3f0000413d000b000b0010002d000400000000001d0000000e010000290000000d020000290000000b030000294dbc36670000040f0000000a010000290000000201100367000000000201043b000013730020009c00000d0b0000213d00000006010000290000000e030000294dbc46c30000040f000000800d000039000000400200043d000000200320003900000040040000390000000000430435000000000012043500000002010003670000000a03100360000000000403043b000013730040009c00000d0b0000213d00000040032000390000000000430435000000080610036000000000040000310000000a0540006a0000001f0550008a000000000706043b000013b308700197000013b306500197000000000968013f000000000068004b0000000008000019000013b308004041000000000057004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000a07700029000000000871034f000000000808043b000013ab0080009c00000d0b0000213d000000200970003900000005078002100000000007740049000000000079004b000000000a000019000013b30a002041000013b307700197000013b30b900197000000000c7b013f00000000007b004b0000000007000019000013b307004041000013b300c0009c00000000070ac019000000000007004b00000d0b0000c13d000000c007200039000000600a2000390000000000da04350000000000870435000000e007200039000000000008004b00001f300000613d000000000a000019000000000b91034f000000000b0b043b0000137300b0009c00000d0b0000213d0000000007b704360000002009900039000000010aa0003900000000008a004b00001f270000413d0000000708100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000009000019000013b309004041000000000058004b000000000b000019000013b30b008041000013b300a0009c00000000090bc019000000000009004b00000d0b0000c13d0000000a08800029000000000981034f000000000909043b000013ab0090009c00000d0b0000213d0000002008800039000000050a900210000000000ba400490000000000b8004b000000000c000019000013b30c002041000013b30bb00197000013b30d800197000000000ebd013f0000000000bd004b000000000b000019000013b30b004041000013b300e0009c000000000b0cc01900000000000b004b00000d0b0000c13d000000000b370049000000800c2000390000000000bc0435000000000b9704360000001f09a0018f0000000007ab001900000000000a004b00001f600000613d000000000881034f000000008a08043c000000000bab043600000000007b004b00001f5c0000c13d000000000009004b0000000508100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000006000019000013b306004041000000000058004b0000000005000019000013b305008041000013b300a0009c000000000605c019000000000006004b00000d0b0000c13d0000000a05800029000000000651034f000000000806043b000013ab0080009c00000d0b0000213d000000200550003900000005068002100000000004640049000000000045004b0000000009000019000013b309002041000013b304400197000013b30a500197000000000b4a013f00000000004a004b0000000004000019000013b304004041000013b300b0009c000000000409c019000000000004004b00000d0b0000c13d0000000003370049000000a004200039000000000034043500000000038704360000001f0460018f000000000006004b00001f920000613d000000000151034f00000000056300190000000007030019000000001801043c0000000007870436000000000057004b00001f8e0000c13d0000000d010000290000137305100197000000000004004b00000000012300490000000001610019000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000800d020000390000000203000039000013ba040000414dbc4db20000040f000000010020019000000d0b0000613d000000400100043d00000020021000390000000b030000290000000000320435000000040200002900001a9d0000013d0000000b010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000a0200002900000003030000294dbc2d660000040f0000000c0010002a00000a3f0000413d000c000c0010002d000300000000001d000013b5010000410000000000100443000000080100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013b7010000410000000001120436000900000001001d000d00000002001d00000004012000390000000c02000029000000000021043500000000010004140000000802000029000000040020008c00001fe90000613d0000000d02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c700000008020000294dbc4db20000040f00000000030100190000006003300270000113700030019d00030000000103550000000100200190000021620000613d0000000d01000029000013ab0010009c000009d30000213d0000000d01000029000000400010043f000013b80010009c000009d30000213d0000000901000029000000400010043f0000000d01000029000000000001043500000000010004140000000e02000029000000040020008c0000216f0000c13d00000001020000390000000101000031000021d40000013d0000000e010000290000000201100367000000000101043b000013730010009c00000d0b0000213d4dbc35e30000040f0000000a02000029000000080220006c0000217c0000613d000021760000813d000000400100043d000013d702000041000001f70000013d0000000801000029000000020010008c00000a3f0000413d0000000201000029000000200110008a0000000201100367000000000101043b000c00000001001d000013730010009c00000d0b0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000c0200002900000003030000294dbc46c30000040f0000000002010019000c00000002001d00000003010000290000000d030000294dbc36670000040f000013b50100004100000000001004430000000c0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b000000000001004b00000d0b0000613d000000400200043d000013d501000041000d00000002001d000000000012043500000000010004140000000c02000029000000040020008c000020520000613d0000000d02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f00001378011001c70000000c020000294dbc4db20000040f00000000030100190000006003300270000113700030019d00030000000103550000000100200190000021bd0000613d0000000d01000029000013ab0010009c000009d30000213d0000000d01000029000000400010043f00000020010000390000000d02000029000d00000002001d0000000000120435000000200220003900001b270000013d000013700010009c0000137001008041000000c001100210000013b9011001c700008009020000390000000e0400002900000000050000194dbc4db20000040f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b000020910000613d0000001f03400039000013de033001970000003f03300039000013de05300197000000400300043d0000000005530019000000000035004b00000000060000390000000106004039000013ab0050009c000009d30000213d0000000100600190000009d30000c13d000000400050043f0000000006430436000013de034001980000001f0440018f00000000013600190000000305000367000020840000613d000000000705034f000000007807043c0000000006860436000000000016004b000020800000c13d000000000004004b000020910000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000001002001900000232d0000613d00000009010000290000000201100367000000000201043b000013730020009c00000d0b0000213d000000030100002900000006030000294dbc46c30000040f000000400200043d000000200320003900000040040000390000000000430435000000000012043500000002010003670000000903100360000000000403043b000013730040009c00000d0b0000213d000000400320003900000000004304350000000c0610036000000000040000310000000d0540006a0000001f0550008a000000000706043b000013b308700197000013b306500197000000000968013f000000000068004b0000000008000019000013b308004041000000000057004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000d07700029000000000871034f000000000808043b000013ab0080009c00000d0b0000213d000000200970003900000005078002100000000007740049000000000079004b000000000a000019000013b30a002041000013b307700197000013b30b900197000000000c7b013f00000000007b004b0000000007000019000013b307004041000013b300c0009c00000000070ac019000000000007004b00000d0b0000c13d000000c007200039000000600a200039000000800b0000390000000000ba04350000000000870435000000e007200039000000000008004b000020e00000613d000000000a000019000000000b91034f000000000b0b043b0000137300b0009c00000d0b0000213d0000000007b704360000002009900039000000010aa0003900000000008a004b000020d70000413d0000000b08100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000009000019000013b309004041000000000058004b000000000b000019000013b30b008041000013b300a0009c00000000090bc019000000000009004b00000d0b0000c13d0000000d08800029000000000981034f000000000909043b000013ab0090009c00000d0b0000213d0000002008800039000000050a900210000000000ba400490000000000b8004b000000000c000019000013b30c002041000013b30bb00197000013b30d800197000000000ebd013f0000000000bd004b000000000b000019000013b30b004041000013b300e0009c000000000b0cc01900000000000b004b00000d0b0000c13d000000000b370049000000800c2000390000000000bc0435000000000b9704360000001f09a0018f0000000007ab001900000000000a004b000021100000613d000000000881034f000000008a08043c000000000bab043600000000007b004b0000210c0000c13d000000000009004b0000000a08100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000006000019000013b306004041000000000058004b0000000005000019000013b305008041000013b300a0009c000000000605c019000000000006004b00000d0b0000c13d0000000d05800029000000000651034f000000000806043b000013ab0080009c00000d0b0000213d000000200650003900000005058002100000000004540049000000000046004b0000000009000019000013b309002041000013b304400197000013b30a600197000000000b4a013f00000000004a004b0000000004000019000013b304004041000013b300b0009c000000000409c019000000000004004b00000d0b0000c13d0000000003370049000000a004200039000000000034043500000000038704360000001f0450018f000000000005004b000021420000613d000000000161034f00000000065300190000000007030019000000001801043c0000000007870436000000000067004b0000213e0000c13d000000000004004b00000000012300490000000001510019000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000800d020000390000000203000039000013d10400004100000002050000294dbc4db20000040f000000010020019000000d0b0000613d000000400100043d0000004002100039000000070300002900000000003204350000002002100039000000050300002900000000003204350000000802000029000010380000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000216a0000c13d00001bc80000013d000013700010009c0000137001008041000000c0011002100000000c0000006b000021ca0000c13d0000000e02000029000021cf0000013d00000009010000290000000201100367000000000101043b000013730010009c00000d0b0000213d4dbc35e30000040f00000002010003670000000e02100360000000000202043b000d00000002001d000013730020009c00000d0b0000213d0000000901100360000000000101043b000a00000001001d000013730010009c00000d0b0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000021bc0000613d000000000101043b0000000d020000290000000a030000294dbc46c30000040f000d00000001001d0000000e010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000d0200002900000007030000294dbc36670000040f00000009010000290000000201100367000000000101043b000013730010009c00000d0b0000213d0000000d0200002900000008030000294dbc36670000040f000013c701000041000000400300043d00000000001304350000000c010000290000137302100197000a00000003001d0000000401300039000c00000002001d000000000021043500000000010004140000000d02000029000000040020008c000022cb0000c13d0000000103000031000000200030008c00000020040000390000000004034019000022f70000013d000000000001042f00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000021c50000c13d00001bc80000013d000013b9011001c700008009020000390000000c030000290000000e0400002900000000050000194dbc4db20000040f00030000000103550000006001100270000113700010019d0000137001100197000000000001004b000021fc0000613d0000001f04100039000013de044001970000003f04400039000013de05400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000013ab0050009c000009d30000213d0000000100600190000009d30000c13d000000400050043f0000000006140436000013de031001980000001f0410018f00000000013600190000000305000367000021ef0000613d000000000705034f000000007807043c0000000006860436000000000016004b000021eb0000c13d000000000004004b000021fc0000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000001002001900000232d0000613d0000000b010000290000000201100367000000000201043b000013730020009c00000d0b0000213d00000006010000290000000a030000294dbc46c30000040f000000800d000039000000400200043d000000200320003900000040040000390000000000430435000000000012043500000002010003670000000b03100360000000000403043b000013730040009c00000d0b0000213d00000040032000390000000000430435000000070610036000000000040000310000000b0540006a0000001f0550008a000000000706043b000013b308700197000013b306500197000000000968013f000000000068004b0000000008000019000013b308004041000000000057004b000000000a000019000013b30a008041000013b30090009c00000000080ac019000000000008004b00000d0b0000c13d0000000b07700029000000000871034f000000000808043b000013ab0080009c00000d0b0000213d000000200970003900000005078002100000000007740049000000000079004b000000000a000019000013b30a002041000013b307700197000013b30b900197000000000c7b013f00000000007b004b0000000007000019000013b307004041000013b300c0009c00000000070ac019000000000007004b00000d0b0000c13d000000c007200039000000600a2000390000000000da04350000000000870435000000e007200039000000000008004b0000224b0000613d000000000a000019000000000b91034f000000000b0b043b0000137300b0009c00000d0b0000213d0000000007b704360000002009900039000000010aa0003900000000008a004b000022420000413d0000000508100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000009000019000013b309004041000000000058004b000000000b000019000013b30b008041000013b300a0009c00000000090bc019000000000009004b00000d0b0000c13d0000000b08800029000000000981034f000000000909043b000013ab0090009c00000d0b0000213d0000002008800039000000050a900210000000000ba400490000000000b8004b000000000c000019000013b30c002041000013b30bb00197000013b30d800197000000000ebd013f0000000000bd004b000000000b000019000013b30b004041000013b300e0009c000000000b0cc01900000000000b004b00000d0b0000c13d000000000b370049000000800c2000390000000000bc0435000000000b9704360000001f09a0018f0000000007ab001900000000000a004b0000227b0000613d000000000881034f000000008a08043c000000000bab043600000000007b004b000022770000c13d000000000009004b0000000408100360000000000808043b000013b309800197000000000a69013f000000000069004b0000000006000019000013b306004041000000000058004b0000000005000019000013b305008041000013b300a0009c000000000605c019000000000006004b00000d0b0000c13d0000000b05800029000000000651034f000000000806043b000013ab0080009c00000d0b0000213d000000200550003900000005068002100000000004640049000000000045004b0000000009000019000013b309002041000013b304400197000013b30a500197000000000b4a013f00000000004a004b0000000004000019000013b304004041000013b300b0009c000000000409c019000000000004004b00000d0b0000c13d0000000003370049000000a004200039000000000034043500000000038704360000001f0460018f000000000006004b000022ad0000613d000000000151034f00000000056300190000000007030019000000001801043c0000000007870436000000000057004b000022a90000c13d0000000e010000290000137305100197000000000004004b00000000012300490000000001610019000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000800d020000390000000203000039000013ba040000414dbc4db20000040f000000010020019000000d0b0000613d000000400100043d00000020021000390000000c030000290000000000320435000000030200002900001a9d0000013d0000000a02000029000013700020009c00001370020080410000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000d020000294dbc4db20000040f000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f00000020074001900000000a05700029000022e60000613d000000000801034f0000000a09000029000000008a08043c0000000009a90436000000000059004b000022e20000c13d000000000006004b000022f30000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000023370000613d0000001f01400039000000600110018f0000000a04100029000000000014004b000000000100003900000001010040390000000002040019000013ab0040009c000009d30000213d0000000100100190000009d30000c13d000000400020043f000000200030008c00000d0b0000413d0000000a010000290000000001010433000a00000001001d0000000001020019000900000001001d0000000d020000290000000e030000290000000b040000294dbc2c110000040f00000009020000290000000001210049000013700010009c00001370010080410000006001100210000013700020009c00001370020080410000004002200210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000121019f000013b9011001c70000800d020000390000000203000039000013d8040000410000000c050000294dbc4db20000040f000000010020019000000d0b0000613d000000400100043d00000040021000390000000a0300002900000000003204350000002002100039000000080300002900000000003204350000000702000029000010380000013d000000400100043d0000006402100039000013c80300004100000000003204350000004402100039000013c903000041000000000032043500000024021000390000003403000039000012820000013d0000001f0530018f0000137206300198000000400200043d000000000462001900001bc80000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000233e0000c13d00001bc80000013d000013df0020009c000023670000813d00000005052002100000003f04500039000013b406400197000000400400043d0000000006640019000000000046004b00000000070000390000000107004039000013ab0060009c000023670000213d0000000100700190000023670000c13d000000400060043f00000000002404350000000002150019000000000032004b000023650000213d000000000012004b000023630000a13d00000002030003670000000005040019000000000613034f000000000606043b000013730060009c000023650000213d000000200550003900000000006504350000002001100039000000000021004b0000235a0000413d0000000001040019000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013ac0010009c000024260000213d000000e30010008c000024260000a13d00000002080003670000000402800370000000000202043b000013ab0020009c000024260000213d0000002303200039000000000013004b000024260000813d0000000403200039000000000338034f000000000303043b000013df0030009c000024280000813d00000005043002100000003f05400039000013b405500197000000400900043d0000000005590019000000000095004b00000000060000390000000106004039000013ab0050009c000024280000213d0000000100600190000024280000c13d0000002402200039000000400050043f00000000003904350000000004240019000000000014004b000024260000213d000000000003004b0000239c0000613d0000000003090019000000000528034f000000000505043b000013730050009c000024260000213d000000200330003900000000005304350000002002200039000000000042004b000023930000413d0000002402800370000000000302043b000013ab0030009c000024260000213d0000002302300039000000000012004b0000000004000019000013b304008041000013b305100197000013b302200197000000000652013f000000000052004b0000000002000019000013b302004041000013b30060009c000000000204c019000000000002004b000024260000c13d0000000402300039000000000228034f000000000402043b000013ab0040009c000024280000213d00000005064002100000003f02600039000013b407200197000000400200043d0000000007720019000000000027004b000000000a000039000000010a004039000013ab0070009c000024280000213d0000000100a00190000024280000c13d0000002403300039000000400070043f00000000004204350000000006360019000000000016004b000024260000213d000000000004004b000023cf0000613d0000000004020019000000000738034f000000000707043b000000200440003900000000007404350000002003300039000000000063004b000023c80000413d0000004403800370000000000403043b000013ab0040009c000024260000213d0000002303400039000000000013004b0000000006000019000013b306008041000013b303300197000000000753013f000000000053004b0000000003000019000013b303004041000013b30070009c000000000306c019000000000003004b000024260000c13d0000000403400039000000000338034f000000000603043b000013ab0060009c000024280000213d00000005076002100000003f03700039000013b40a300197000000400300043d000000000aa3001900000000003a004b000000000b000039000000010b004039000013ab00a0009c000024280000213d0000000100b00190000024280000c13d00000024044000390000004000a0043f00000000006304350000000007470019000000000017004b000024260000213d000000000006004b000024010000613d0000000006030019000000000a48034f000000000a0a043b00000020066000390000000000a604350000002004400039000000000074004b000023fa0000413d0000006404800370000000000404043b0000008406800370000000000706043b000013ab0070009c000024260000213d0000002306700039000000000016004b000000000a000019000013b30a008041000013b306600197000000000b56013f000000000056004b0000000005000019000013b305004041000013b300b0009c00000000050ac019000000000005004b000024260000c13d0000000405700039000000000558034f000000000605043b000013ab0060009c000024260000213d000000240570003900000005076002100000000007570019000000000017004b000024260000213d000000a401800370000000000701043b000013730070009c000024260000213d000000c401800370000000000801043b0000000001090019000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000301001900000000040304330000000001420436000000000004004b0000243a0000613d00000000020000190000002003300039000000000503043300000000015104360000000102200039000000000042004b000024340000413d000000000001042d0000000004010019000013ac0040009c000024d90000213d000000a30040008c000024d90000a13d00000002050003670000000401500370000000000201043b000013ab0020009c000024d90000213d0000002301200039000000000041004b000024d90000813d0000000401200039000000000115034f000000000301043b000013df0030009c000024db0000813d00000005063002100000003f01600039000013b407100197000000400100043d0000000007710019000000000017004b00000000080000390000000108004039000013ab0070009c000024db0000213d0000000100800190000024db0000c13d0000002402200039000000400070043f00000000003104350000000006260019000000000046004b000024d90000213d000000000003004b0000246b0000613d0000000003010019000000000725034f000000000707043b000013730070009c000024d90000213d000000200330003900000000007304350000002002200039000000000062004b000024620000413d0000002402500370000000000602043b000013ab0060009c000024d90000213d0000002302600039000000000042004b0000000007000019000013b307008041000013b303400197000013b302200197000000000832013f000000000032004b0000000002000019000013b302004041000013b30080009c000000000207c019000000000002004b000024d90000c13d0000000402600039000000000225034f000000000702043b000013ab0070009c000024db0000213d00000005087002100000003f02800039000013b409200197000000400200043d0000000009920019000000000029004b000000000a000039000000010a004039000013ab0090009c000024db0000213d0000000100a00190000024db0000c13d0000002406600039000000400090043f00000000007204350000000008680019000000000048004b000024d90000213d000000000007004b0000249e0000613d0000000007020019000000000965034f000000000909043b000000200770003900000000009704350000002006600039000000000086004b000024970000413d0000004406500370000000000606043b000013ab0060009c000024d90000213d0000002307600039000000000047004b0000000008000019000013b308008041000013b307700197000000000937013f000000000037004b0000000003000019000013b303004041000013b30090009c000000000308c019000000000003004b000024d90000c13d0000000403600039000000000335034f000000000703043b000013ab0070009c000024db0000213d00000005087002100000003f03800039000013b409300197000000400300043d0000000009930019000000000039004b000000000a000039000000010a004039000013ab0090009c000024db0000213d0000000100a00190000024db0000c13d0000002406600039000000400090043f00000000007304350000000008680019000000000048004b000024d90000213d000000000007004b000024d00000613d0000000004030019000000000765034f000000000707043b000000200440003900000000007404350000002006600039000000000086004b000024c90000413d0000006404500370000000000404043b000013730040009c000024d90000213d0000008405500370000000000505043b000013730050009c000024d90000213d000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013ac0010009c000025030000213d000000a30010008c000025030000a13d00000002060003670000002402600370000000000202043b0000000403600370000000000703043b0000004403600370000000000303043b000013ab0030009c000025030000213d0000002304300039000000000014004b000025030000813d0000000404300039000000000446034f000000000404043b000013ab0040009c000025030000213d000000240330003900000005054002100000000005350019000000000015004b000025030000213d0000006401600370000000000501043b000013730050009c000025030000213d0000008401600370000000000601043b0000000001070019000000000001042d000000000100001900004dbe000104300000000003010019000013ac0030009c000025380000213d000000430030008c000025380000a13d00000002040003670000002401400370000000000501043b000013ab0050009c000025380000213d0000000401400370000000000101043b0000002302500039000000000032004b000025380000813d0000000402500039000000000224034f000000000602043b000013df0060009c0000253a0000813d00000005076002100000003f02700039000013b408200197000000400200043d0000000008820019000000000028004b00000000090000390000000109004039000013ab0080009c0000253a0000213d00000001009001900000253a0000c13d0000002405500039000000400080043f00000000006204350000000007570019000000000037004b000025380000213d000000000006004b000025370000613d0000000003020019000000000654034f000000000606043b000013730060009c000025380000213d000000200330003900000000006304350000002005500039000000000075004b0000252e0000413d000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe000104300000000004010019000013ac0040009c000025600000213d000000830040008c000025600000a13d00000002050003670000000401500370000000000101043b0000002402500370000000000202043b000013ab0020009c000025600000213d0000002303200039000000000043004b000025600000813d0000000403200039000000000335034f000000000303043b000013ab0030009c000025600000213d000000240220003900000005063002100000000006260019000000000046004b000025600000213d0000004404500370000000000404043b000013730040009c000025600000213d0000006405500370000000000505043b000000000001042d000000000100001900004dbe00010430000013ac0010009c000025720000213d000000830010008c000025720000a13d00000002030003670000006401300370000000000401043b000013730040009c000025720000213d0000000401300370000000000101043b0000002402300370000000000202043b0000004403300370000000000303043b000000000001042d000000000100001900004dbe000104300000000003010433000000000023004b0000257b0000a13d000000050220021000000000012100190000002001100039000000000001042d000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe0001043000000000430104340000000001320436000000000003004b0000258d0000613d000000000200001900000000052100190000000006240019000000000606043300000000006504350000002002200039000000000032004b000025860000413d000000000231001900000000000204350000001f02300039000013de022001970000000001210019000000000001042d0010000000000002000100000005001d000000000a010019000000400b00043d00000000510a0434000600000005001d000000000001004b000700000003001d000800000002001d000200000004001d000027000000613d000400200030003d000500200020003d00001373024001970000000001000411000313730010019b000000000c000019000e0000000a001d000d00000002001d000000050dc00210000000060ed0002900000000010e0433000013e00300004100000000003b043500001373011001970000000403b0003900000000001304350000000001000414000000040020008c00100000000c001d000025b50000c13d00000003010003670000000103000031000025ce0000013d000b0000000e001d000c0000000d001d0000137000b0009c000f0000000b001d000013700300004100000000030b40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013b2011001c74dbc4db70000040f00000000030100190000006003300270000113700030019d000013700330019700030000000103550000000100200190000027990000613d0000000e0a0000290000000f0b000029000000100c0000290000000c0d0000290000000b0e000029000013de0430019800000000024b0019000025d70000613d000000000501034f00000000060b0019000000005705043c0000000006760436000000000026004b000025d30000c13d0000001f05300190000025e40000613d000000000141034f0000000304500210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001204350000001f01300039000013de021001970000000001b20019000000000021004b00000000020000390000000102004039000013ab0010009c000027860000213d0000000100200190000027860000c13d000000400010043f000013ac0030009c000027840000213d0000001f0030008c000027840000a13d00000000020b0433000013ab0020009c000027840000213d0000000003b300190000000004b200190000000002430049000013ac0020009c000027840000213d000000800020008c000027840000413d000013cb0010009c000027860000213d0000008002100039000000400020043f0000000052040434000013730020009c000027840000213d00000000022104360000000005050433000000010050008c000027840000213d000000000052043500000040054000390000000005050433000000000005004b0000000006000039000000010600c039000000000065004b000027840000c13d0000004006100039000000000056043500000060054000390000000005050433000013ab0050009c000027840000213d00000000044500190000001f05400039000000000035004b0000000006000019000013b306008041000013b305500197000013b307300197000000000875013f000000000075004b0000000005000019000013b305004041000013b30080009c000000000506c019000000000005004b000027840000c13d0000000046040434000013ab0060009c000027860000213d00000005076002100000003f05700039000013b408500197000000400500043d0000000008850019000000000058004b00000000090000390000000109004039000013ab0080009c000027860000213d0000000100900190000027860000c13d000000400080043f00000000006504350000000006740019000000000036004b000027840000213d000000000064004b000026410000813d0000000003050019000000200330003900000000470404340000000000730435000000000064004b0000263c0000413d000000600110003900000000005104350000000002020433000000010020008c0000000803000029000027920000213d00000000010a0433000000000002004b0000000702000029000026b80000613d0000000000c1004b0000278c0000a13d00000000010304330000000000c1004b0000278c0000a13d00000000010204330000000000c1004b0000278c0000a13d000000400300043d000013b80030009c000027860000213d00000000010e043300001373021001970000000501d000290000000001010433000a00000001001d0000000401d000290000000001010433000900000001001d0000002001300039000c00000001001d000000400010043f000b00000003001d0000000000030435000013b5010000410000000000100443000f00000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000027980000613d000000000101043b000000000001004b0000000e0a000029000000100c000029000027840000613d000000400b00043d0000008401b00039000000a00200003900000000002104350000006401b00039000000090200002900000000002104350000004401b000390000000a0200002900000000002104350000002401b000390000000d020000290000000000210435000013e10100004100000000001b04350000000401b00039000000000200041100000000002104350000000b010000290000000001010433000000a402b000390000000000120435000000c402b00039000000000001004b0000000c06000029000026970000613d000000000300001900000000042300190000000005630019000000000505043300000000005404350000002003300039000000000013004b000026900000413d0000000002120019000000000002043500000000040004140000000f02000029000000040020008c000026f80000613d0000001f01100039000013de01100197000000c401100039000013700010009c000013700100804100000060011002100000137000b0009c000013700300004100000000030b40190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000131019f000f0000000b001d4dbc4db20000040f000000100c0000290000000f0b0000290000000e0a00002900000000030100190000006003300270000113700030019d00030000000103550000000100200190000026f80000c13d000027a50000013d0000000000c1004b0000278c0000a13d00000000010304330000000000c1004b0000278c0000a13d00000000010e043300001373021001970000000501d000290000000001010433000c00000001001d000013b5010000410000000000100443000f00000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000027980000613d000000000101043b000000000001004b0000000e0a000029000000100c000029000027840000613d000000400b00043d0000004401b000390000000c0200002900000000002104350000002401b000390000000d020000290000000000210435000013e20100004100000000001b04350000000401b000390000000302000029000000000021043500000000010004140000000f02000029000000040020008c000026f80000613d0000137000b0009c000013700300004100000000030b40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013b0011001c7000f0000000b001d4dbc4db20000040f000000100c0000290000000f0b0000290000000e0a00002900000000030100190000006003300270000113700030019d00030000000103550000000100200190000027b20000613d000013ab00b0009c000027860000213d0000004000b0043f000000010cc0003900000000010a043300000000001c004b0000000d02000029000025a60000413d0000002401b0003900000080020000390000000000210435000013e30100004100000000001b0435000000010100002900001373021001970000000401b00039000000000021043500000000030a04330000008402b000390000000000320435000000a402b00039000000000003004b0000271a0000613d000000000400001900000007060000290000000807000029000000200aa0003900000000050a0433000013730550019700000000025204360000000104400039000000000034004b000027120000413d0000271c0000013d0000000706000029000000080700002900000000031200490000004404b00039000000000034043500000000030704330000000002320436000000000003004b0000272a0000613d00000000040000190000002007700039000000000507043300000000025204360000000104400039000000000034004b000027240000413d00000000011200490000006403b00039000000000013043500000000030604330000000001320436000000000003004b0000273a0000613d000000000200001900000002050000290000002006600039000000000406043300000000014104360000000102200039000000000032004b000027330000413d0000273b0000013d000000020500002900000000030004140000137302500197000000040020008c000027440000c13d0000000103000031000000200030008c00000020040000390000000004034019000027750000013d0000000001b10049000013700010009c000013700100804100000060011002100000137000b0009c000013700400004100000000040b40190000004004400210000000000141019f000013700030009c0000137003008041000000c003300210000000000131019f000f0000000b001d4dbc4db20000040f0000000f0b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000027640000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000027600000c13d000000000006004b000027710000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000027d10000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000013ab0010009c000027860000213d0000000100200190000027860000c13d000000400010043f000000200030008c000027840000413d00000000010b0433000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000002101000039000000040010043f000013b20100004100004dbe00010430000000000001042f0000001f0530018f0000137206300198000000400200043d0000000004620019000027be0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027a00000c13d000027be0000013d00001370033001970000001f0530018f0000137206300198000000400200043d0000000004620019000027be0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027ad0000c13d000027be0000013d00001370033001970000001f0530018f0000137206300198000000400200043d0000000004620019000027be0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027ba0000c13d000000000005004b000027cb0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe000104300000001f0530018f0000137206300198000000400200043d0000000004620019000027be0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000027d80000c13d000027be0000013d000a000000000002000000000a020019000000000c010019000400000003001d0000000021030434000000000001004b000027fb0000613d00000000080000190000000003000019000000050780021000000000077200190000000007070433000000000037001a000027f50000413d00000000033700190000000108800039000000000018004b000027e60000413d000000000003004b000027fb0000613d000013cc023000d100000000013200d9000013cc0010009c000027fc0000613d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe000104300000000002000019000300000006001d0000137309400197000000400b00043d000013e40100004100000000001b0435000013730d5001970000000401b000390000000000d104350000000001000414000000040090008c000900000009001d00080000000a001d00070000000c001d00060000000d001d000500000002001d000028110000c13d0000000103000031000000200030008c00000020040000390000000004034019000028430000013d0000137000b0009c000013700200004100000000020b40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b2011001c70000000002090019000a0000000b001d4dbc4db70000040f0000000a0b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000282e0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000282a0000c13d000000000006004b0000283b0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000909000029000000080a000029000000070c000029000000060d00002900002b6b0000613d0000001f01400039000000600110018f000000000fb1001900000000001f004b00000000020000390000000102004039000013ab00f0009c00002b5e0000213d000000010020019000002b5e0000c13d0000004000f0043f0000001f0030008c00002b5c0000a13d000000000b0b0433000013e50200004100000000002f04350000000002000414000000040090008c0000288c0000613d000a0000000b001d0000137000f0009c000013700100004100000000010f40190000004001100210000013700020009c0000137002008041000000c002200210000000000112019f00001378011001c7000000000209001900020000000f001d4dbc4db70000040f000000020f000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057f0019000028740000613d000000000801034f00000000090f0019000000008a08043c0000000009a90436000000000059004b000028700000c13d000000000006004b000028810000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000909000029000000080a0000290000000a0b000029000000070c000029000000060d00002900002b770000613d0000001f01400039000000600110018f000000000ef10019000013ab00e0009c00002b5e0000213d0000004000e0043f000000200030008c00002b5c0000413d00000000020f043300000000002b004b00000000040000390000000104004039000000050020006b000000000200003900000001020060390000000000420170000000050b006029000000000200041000000000002d004b000a0000000b001d00002a550000c13d000013e60200004100000000002e04350000002402e000390000000000d204350000000402e000390000000000d204350000000002000414000000040090008c000028dd0000613d0000137000e0009c000013700100004100000000010e40190000004001100210000013700020009c0000137002008041000000c002200210000000000112019f000013c6011001c7000000000209001900050000000e001d4dbc4db70000040f000000050e000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057e0019000028c50000613d000000000801034f00000000090e0019000000008a08043c0000000009a90436000000000059004b000028c10000c13d000000000006004b000028d20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000909000029000000080a0000290000000a0b000029000000070c000029000000060d00002900002bbc0000613d0000001f01400039000000600110018f0000000001e10019000013ab0010009c00002b5e0000213d000000400010043f000000200030008c00002b5c0000413d00000000020e04330000000000b2004b00002a550000813d0000002002100039000013e704000041000000000042043500000024041000390000000000d404350000004404000039000000000041043500000044041000390000000000040435000013cb0010009c00002b5e0000213d000000800f1000390000004000f0043f000013e80010009c00002b5e0000213d000000c004100039000000400040043f000000200400003900000000004f0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c000000200e00008a000029030000c13d000200010000003d0000291f0000013d00010000000f001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010420018f00030000000103550000006001100270000113700010019d000013700310019800002b270000613d000200000004001d0000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000200e00008a000000010f0000290000001f013000390000000001e1016f0000003f011000390000000004e1016f000000400500043d0000000001540019000000000041004b00000000040000390000000104004039000013ab0010009c00002b5e0000213d000000010040019000002b5e0000c13d000000400010043f000000000205001900000000013504360000000004e301700000001f0330018f000500000001001d000000000141001900000003050003670000293b0000613d000000000605034f0000000507000029000000006806043c0000000007870436000000000017004b000029370000c13d000000000003004b000029480000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f00000000003104350000000003020433000000020000006b00002b330000613d000000000003004b000029670000c13d000200000002001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010020019000002bd90000613d000000000101043b000000000001004b000000020100002900002bda0000613d0000000003010433000000000003004b0000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000200e00008a000029740000613d000013ac0030009c00002b5c0000213d000000200030008c00002b5c0000413d00000005010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b00002b5c0000c13d000000000001004b00002bad0000613d000000400f00043d000013e60100004100000000001f04350000002401f000390000000000d104350000000401f000390000000000d104350000000001000414000000040090008c000029830000c13d0000000103000031000000200030008c00000020040000390000000004034019000029b70000013d0000137000f0009c000013700200004100000000020f40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c7000000000209001900050000000f001d4dbc4db70000040f000000050f000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057f0019000029a00000613d000000000801034f00000000090f0019000000008a08043c0000000009a90436000000000059004b0000299c0000c13d000000000006004b000029ad0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000200e00008a00002beb0000613d0000001f01400039000000600210018f0000000001f20019000000000021004b00000000020000390000000102004039000013ab0010009c00002b5e0000213d000000010020019000002b5e0000c13d000000400010043f000000200030008c00002b5c0000413d0000004404100039000000240510003900000000020f0433000000000002004b00002bc80000c13d0000002002100039000013e70600004100000000006204350000000000d50435000000010500008a000000000054043500000044040000390000000000410435000013cb0010009c00002b5e0000213d000000800f1000390000004000f0043f000013e80010009c00002b5e0000213d000000c004100039000000400040043f000000200400003900000000004f0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c000029e40000c13d000500010000003d00002a000000013d00020000000f001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010420018f00030000000103550000006001100270000113700010019d000013700310019800002b3b0000613d000500000004001d0000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000200e00008a000000020f0000290000001f013000390000000001e1016f0000003f011000390000000004e1016f000000400500043d0000000001540019000000000041004b00000000040000390000000104004039000013ab0010009c00002b5e0000213d000000010040019000002b5e0000c13d000000400010043f000000000205001900000000013504360000000004e30170000000000e0100190000001f0330018f00000000014e0019000000030500036700002a1c0000613d000000000605034f00000000070e0019000000006806043c0000000007870436000000000017004b00002a180000c13d000000000003004b00002a290000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f00000000003104350000000003020433000000050000006b00002b460000613d000000000003004b00002a490000c13d000500000002001d00020000000e001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010020019000002bd90000613d000000000101043b000000000001004b000000050100002900002bda0000613d0000000003010433000000000003004b0000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000020e00002900002a550000613d000013ac0030009c00002b5c0000213d000000200030008c00002b5c0000413d00000000010e0433000000000001004b0000000002000039000000010200c039000000000021004b00002b5c0000c13d000000000001004b00002bad0000613d000000400e00043d0000004401e000390000000000b10435000013af0100004100000000001e04350000000401e000390000000000d104350000002401e0003900000000009104350000000001000414000000040090008c00002a660000c13d0000000103000031000000200030008c0000002004000039000000000403401900002a980000013d0000137000e0009c000013700200004100000000020e40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013b0011001c7000000000209001900060000000e001d4dbc4db20000040f000000060e000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057e001900002a830000613d000000000801034f00000000090e0019000000008a08043c0000000009a90436000000000059004b00002a7f0000c13d000000000006004b00002a900000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000909000029000000080a0000290000000a0b000029000000070c00002900002b830000613d0000001f01400039000000600110018f000000000de1001900000000001d004b00000000020000390000000102004039000013ab00d0009c00002b5e0000213d000000010020019000002b5e0000c13d0000004000d0043f000000200030008c00002b5c0000413d00000000020e0433000000000002004b0000000004000039000000010400c039000000000042004b00002b5c0000c13d0000002402d0003900000080040000390000000000420435000013ee0200004100000000002d0435000000030200002900001373042001970000000402d00039000000000042043500000000050c04330000008404d000390000000000540435000000a404d00039000000000005004b00002ac20000613d0000000006000019000000200cc0003900000000070c0433000013730770019700000000047404360000000106600039000000000056004b00002abb0000413d00000000052400490000004406d00039000000000056043500000000050a04330000000004540436000000000005004b00002ad00000613d0000000006000019000000200aa0003900000000070a043300000000047404360000000106600039000000000056004b00002aca0000413d00000000022400490000006405d000390000000000250435000000040700002900000000050704330000000002540436000000000005004b00002adf0000613d00000000040000190000002007700039000000000607043300000000026204360000000104400039000000000054004b00002ad90000413d0000000004000414000000040090008c00002b170000613d0000000001d20049000013700010009c000013700100804100000060011002100000137000d0009c000013700200004100000000020d40190000004002200210000000000121019f000013700040009c0000137004008041000000c002400210000000000121019f000000000209001900090000000d001d4dbc4db20000040f000000090d000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057d001900002b030000613d000000000801034f00000000090d0019000000008a08043c0000000009a90436000000000059004b00002aff0000c13d000000000006004b00002b100000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000a0b00002900002b8f0000613d0000001f01400039000000600110018f0000000002d10019000000000012004b00000000010000390000000101004039000013ab0020009c00002b5e0000213d000000010010019000002b5e0000c13d000000400020043f000000200030008c00002b5c0000413d00000000010d043300000000001b004b00002b640000c13d00000000010b0019000000000001042d0000006002000039000500800000003d0000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000200e00008a000000010f0000290000000003020433000000000004004b0000294b0000c13d00000000010f0019000000000003004b00002b490000613d0000000501000029000013700010009c0000137001008041000000400210021000002c0c0000013d0000006002000039000000800e0000390000000909000029000000080a0000290000000a0b000029000000070c000029000000060d000029000000020f0000290000000003020433000000000004004b00002a2c0000c13d00000000010f0019000000000003004b00002c090000c13d000000400400043d000a00000004001d000013bf02000041000000000024043500000004034000390000002002000039000000000023043500000024024000394dbc25810000040f0000000a020000290000000001210049000013700010009c0000137001008041000013700020009c000013700200804100000060011002100000004002200210000000000121019f00004dbe00010430000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013ef010000410000000000120435000013700020009c0000137002008041000000400120021000001378011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900002b9a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b720000c13d00002b9a0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900002b9a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b7e0000c13d00002b9a0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900002bf60000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b8a0000c13d00002bf60000013d0000001f0530018f0000137206300198000000400200043d000000000462001900002b9a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002b960000c13d000000000005004b00002ba70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe00010430000000400100043d0000006402100039000013ec0300004100000000003204350000004402100039000013ed03000041000000000032043500000024021000390000002a030000390000000000320435000013bf0200004100000000002104350000000402100039000000200300003900002bd30000013d0000001f0530018f0000137206300198000000400200043d000000000462001900002bf60000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002bc30000c13d00002bf60000013d000013bf02000041000000000021043500000004021000390000002003000039000000000032043500000036020000390000000000250435000013ea0200004100000000002404350000006402100039000013eb030000410000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000000001042f000000400100043d0000004402100039000013f003000041000000000032043500000024021000390000001d030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900002bf60000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00002bf20000c13d000000000005004b00002c030000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe000104300000137000e0009c000013700e0080410000004002e00210000013700030009c00001370030080410000006001300210000000000121019f00004dbe000104300002000000000002000200000004001d000000200510003900000060060000390000000000650435000013730220019700000000002104350000000202000367000000000532034f000000000505043b000013f10050009c00002d640000813d0000006004100039000100000004001d0000000000540435000000000500003100000000063500490000001f0860008a000000200a3000390000000006a2034f000000000606043b000013b30b600197000013b309800197000000000c9b013f00000000009b004b000000000b000019000013b30b004041000000000086004b000000000d000019000013b30d008041000013b300c0009c000000000b0dc01900000000000b004b00002d640000c13d0000000006360019000000000b62034f000000000c0b043b000013ab00c0009c00002d640000213d000000200d6000390000000506c00210000000000665004900000000006d004b000000000b000019000013b30b002041000013b306600197000013b30ed00197000000000f6e013f00000000006e004b0000000006000019000013b306004041000013b300f0009c00000000060bc019000000000006004b00002d640000c13d000000e00b100039000000800e100039000000800400003900000000004e04350000000000cb0435000001000b10003900000000000c004b00002c5a0000613d000000000e000019000000000fd2034f000000000f0f043b0000137300f0009c00002d640000213d000000000bfb0436000000200dd00039000000010ee000390000000000ce004b00002c510000413d000000200aa00039000000000ca2034f000000000c0c043b000013b30dc00197000000000e9d013f00000000009d004b000000000d000019000013b30d00404100000000008c004b000000000f000019000013b30f008041000013b300e0009c000000000d0fc01900000000000d004b00002d640000c13d000000000c3c0019000000000dc2034f000000000d0d043b000013ab00d0009c00002d640000213d000000200cc00039000000050ed00210000000000fe500490000000000fc004b0000000006000019000013b306002041000013b30ff00197000013b307c001970000000004f7013f0000000000f7004b0000000007000019000013b307004041000013b30040009c000000000706c019000000000007004b00002d640000c13d0000000104b0006a000000a0061000390000000000460435000000000fdb04360000001f0de0018f000000000bef001900000000000e004b00002c8b0000613d000000000cc2034f00000000c40c043c000000000f4f04360000000000bf004b00002c870000c13d00000000000d004b0000002004a00039000000000442034f000000000a04043b000013b304a00197000000000694013f000000000094004b0000000004000019000013b30400404100000000008a004b0000000007000019000013b307008041000013b30060009c000000000407c019000000000004004b00002d640000c13d00000000083a0019000000000382034f000000000303043b000013ab0030009c00002d640000213d000000200880003900000005093002100000000004950049000000000048004b0000000006000019000013b306002041000013b304400197000013b307800197000000000a47013f000000000047004b0000000004000019000013b304004041000013b300a0009c000000000406c019000000000004004b00002d640000c13d0000000104b0006a000000c0061000390000000000460435000000000a3b04360000001f0790018f00000000039a0019000000000009004b00002cbd0000613d000000000882034f000000008408043c000000000a4a043600000000003a004b00002cb90000c13d000000000007004b0000000004130049000000400110003900000000004104350000000201200360000000000101043b000013730010009c00002d640000213d000000000b130436000000020400002900000000014500490000002008400039000000000482034f000000000904043b0000001f0110008a000013b307100197000013b304900197000000000674013f000000000074004b0000000004000019000013b304004041000000000019004b000000000a000019000013b30a008041000013b30060009c00000000040ac019000000000004004b00002d640000c13d000000020a9000290000000004a2034f000000000904043b000013ab0090009c00002d640000213d000000200aa000390000000504900210000000000445004900000000004a004b0000000006000019000013b306002041000013b304400197000013b30ca00197000000000d4c013f00000000004c004b0000000004000019000013b304004041000013b300d0009c000000000406c019000000000004004b00002d640000c13d0000008004300039000000800600003900000000006b04350000000000940435000000a006300039000000000009004b00002cff0000613d000000000b0000190000000004a2034f000000000c04043b0000137300c0009c00002d640000213d0000000006c60436000000200aa00039000000010bb0003900000000009b004b00002cf60000413d0000002008800039000000000482034f000000000904043b000013b304900197000000000a74013f000000000074004b0000000004000019000013b304004041000000000019004b000000000b000019000013b30b008041000013b300a0009c00000000040bc019000000000004004b00002d640000c13d0000000209900029000000000492034f000000000a04043b000013ab00a0009c00002d640000213d0000002009900039000000050ba002100000000004b50049000000000049004b000000000c000019000013b30c002041000013b304400197000013b30d900197000000000e4d013f00000000004d004b0000000004000019000013b304004041000013b300e0009c00000000040cc019000000000004004b00002d640000c13d0000000004360049000000400c30003900000000004c0435000000000ca604360000001f0ab0018f0000000006bc001900000000000b004b00002d300000613d000000000992034f000000009409043c000000000c4c043600000000006c004b00002d2c0000c13d00000000000a004b0000002004800039000000000442034f000000000804043b000013b304800197000000000974013f000000000074004b0000000004000019000013b304004041000000000018004b0000000001000019000013b301008041000013b30090009c000000000401c019000000000004004b00002d640000c13d0000000204800029000000000142034f000000000101043b000013ab0010009c00002d640000213d000000200440003900000005071002100000000005750049000000000054004b0000000008000019000013b308002041000013b305500197000013b309400197000000000a59013f000000000059004b0000000005000019000013b305004041000013b300a0009c000000000508c019000000000005004b00002d640000c13d00000000053600490000006003300039000000000053043500000000051604360000001f0370018f0000000001750019000000000007004b00002d620000613d000000000242034f000000002402043c0000000005450436000000000015004b00002d5e0000c13d000000000003004b000000000001042d000000000100001900004dbe000104300014000000000002001100000003001d000000000003004b00002d950000613d000000400300043d001300000003001d000013f20030009c000032f20000813d00000013050000290000006003500039000000400030043f0000000204000039000000000545043600000000040000310000000204400367001000000005001d000000004604043c0000000005650436000000000035004b00002d760000c13d000013730910019700000010010000290000000000910435000013730120019700000013020000290000004002200039000100000002001d0000000000120435000013e601000041000000400b00043d00000000001b0435000000000100041000001373021001970000002401b0003900000000002104350000000401b00039000700000002001d00000000002104350000000001000414000000040090008c001400000009001d00002d970000c13d0000000103000031000000200030008c0000002004000039000000000403401900002dc60000013d0000000001000019000000000001042d0000137000b0009c000013700200004100000000020b40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c7000000000209001900120000000b001d4dbc4db70000040f000000120b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002db40000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002db00000c13d000000000006004b00002dc10000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000014090000290000336f0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000013ab0010009c000032f20000213d0000000100200190000032f20000c13d000000400010043f0000001f0030008c000032f00000a13d00000000020b0433000000110020006c00002f290000813d0000002002100039000013e70400004100000000004204350000002404100039000000000500041000000000005404350000004404000039000000000041043500000044041000390000000000040435000013cb0010009c000032f20000213d000000800a1000390000004000a0043f000013e80010009c000032f20000213d000000c004100039000000400040043f000000200400003900000000004a0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c00002df30000c13d000000010200003900002e090000013d00120000000a001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137003100198000032cb0000613d0000001409000029000000120a0000290000001f01300039000013de011001970000003f01100039000013de04100197000000400c00043d0000000001c40019000000000041004b00000000040000390000000104004039000013ab0010009c000032f20000213d0000000100400190000032f20000c13d000000400010043f000000000b3c0436000013de043001980000001f0330018f00000000014b0019000000030500036700002e230000613d000000000605034f00000000070b0019000000006806043c0000000007870436000000000017004b00002e1f0000c13d000000000003004b00002e300000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f000000000031043500000000030c0433000000000002004b000032da0000613d000000000003004b00002e4c0000c13d00120000000c001d000f0000000b001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000033230000613d000000000101043b000000000001004b00000012010000290000338f0000613d0000000003010433000000000003004b00000014090000290000000f0b00002900002e580000613d000013ac0030009c000032f00000213d000000200030008c000032f00000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000032f00000c13d000000000001004b000033650000613d000000400b00043d000013e60100004100000000001b04350000002401b00039000000070200002900000000002104350000000401b0003900000000002104350000000001000414000000040090008c00002e680000c13d0000000103000031000000200030008c0000002004000039000000000403401900002e970000013d0000137000b0009c000013700200004100000000020b40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c7000000000209001900120000000b001d4dbc4db70000040f000000120b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b001900002e850000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b00002e810000c13d000000000006004b00002e920000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000001409000029000033960000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000013ab0010009c000032f20000213d0000000100200190000032f20000c13d000000400010043f000000200030008c000032f00000413d0000004404100039000000240510003900000000020b0433000000000002004b0000337b0000c13d0000002002100039000013e706000041000000000062043500000000060004100000000000650435000000010500008a000000000054043500000044040000390000000000410435000013cb0010009c000032f20000213d000000800a1000390000004000a0043f000013e80010009c000032f20000213d000000c004100039000000400040043f000000200400003900000000004a0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c00002ec50000c13d000000010200003900002edb0000013d00120000000a001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137003100198000032d30000613d0000001409000029000000120a0000290000001f01300039000013de011001970000003f01100039000013de04100197000000400c00043d0000000001c40019000000000041004b00000000040000390000000104004039000013ab0010009c000032f20000213d0000000100400190000032f20000c13d000000400010043f000000000b3c0436000013de043001980000001f0330018f00000000014b0019000000030500036700002ef50000613d000000000605034f00000000070b0019000000006806043c0000000007870436000000000017004b00002ef10000c13d000000000003004b00002f020000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f000000000031043500000000030c0433000000000002004b000032da0000613d000000000003004b00002f1d0000c13d00120000000c001d000f0000000b001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000033230000613d000000000101043b000000000001004b00000012010000290000338f0000613d0000000003010433000000000003004b0000000f0b00002900002f290000613d000013ac0030009c000032f00000213d000000200030008c000032f00000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000032f00000c13d000000000001004b000033650000613d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000033230000613d000000000101043b000600000001001d00000013010000290000000001010433000000010010008c000033590000a13d000013ab0010009c000032f20000213d00000005021002100000003f03200039000013b403300197000000400400043d0000000003340019001400000004001d000000000043004b00000000040000390000000104004039000013ab0030009c000032f20000213d0000000100400190000032f20000c13d000000400030043f00000014030000290000000001130436001200000001001d0000001f0120018f000000000002004b00002f5b0000613d0000001204000029000000000224001900000000030000310000000203300367000000003503043c0000000004540436000000000024004b00002f570000c13d000000000001004b00000014010000290000000001010433000000000001004b000032f80000613d00000012010000290000001102000029000000000021043500000013010000290000000001010433000000000001004b000032bd0000613d000300600000003d000200800000003d0000000602000029000f13730020019b0000000005000019000000010210008a000000000025004b000030a70000813d000000000051004b000032f80000a13d0000000103500039000000000031004b000032f80000a13d0000000501500210000b00000001001d0000001006100029000000000106043300001373071001970000000504300210000000100240002900000000010204330000137301100197000000000017004b000032fe0000613d000e00000005001d000800000004001d001100000003001d000000000401001900000000010400190000000001074019000000000001004b000033120000613d000900000002001d000a00000006001d0000006003100210000000400100043d00000020021000390000000000320435000000000047004b000d00000007001d000c00000004001d0000000003040019000000000307201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000032f20000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000f0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000032f20000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400a00043d000013fb0100004100000000051a043600000000010004140000137302200197000000040020008c00002fe20000c13d0000000103000031000000600030008c00000060040000390000000004034019000030100000013d000400000005001d0000137000a0009c000013700300004100000000030a40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f00001378011001c700050000000a001d4dbc4db70000040f000000050a000029000000000301001900000060033002700000137003300197000000600030008c00000060040000390000000004034019000000600640019000000000056a001900002ffe0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00002ffa0000c13d0000001f074001900000300b0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000033240000613d00000004050000290000001f01400039000000e00210018f0000000001a20019000000000021004b00000000020000390000000102004039000013ab0010009c000032f20000213d0000000100200190000032f20000c13d000000400010043f000000600030008c000032f00000413d00000000020a0433000013fc0020009c000032f00000213d0000000005050433000013fc0050009c000032f00000213d0000004003a000390000000003030433000013700030009c000032f00000213d0000000c040000290000000d0040006b00000000060500190000000006022019000000000502a019000000140200002900000000020204330000000e04000029000000000042004b0000001103000029000032f80000a13d00000013020000290000000002020433000000000042004b000032f80000a13d000000000032004b000032f80000a13d0000000a0200002900000000020204330000137302200197000000090300002900000000030304330000137304300197000000000042004b000032ff0000613d000d00000006001d00000000030400190000000003024019000000000003004b000033130000613d000e00000005001d0000000b0600002900000012056000290000000005050433000c00000005001d000000600530021000000020031000390000000000530435000000000042004b000000000204a01900000060022002100000003404100039000000000024043500000028020000390000000000210435000013f30010009c000032f20000213d0000006002100039000000400020043f000013700030009c000013700300804100000040023002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000f0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000032f20000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f00000001002001900000000e02000029000032f00000613d000000000101043b00001373041001970000000c010000290000000d0300002900000006050000294dbc47890000040f000000140200002900000000020204330000001103000029000000000032004b000032f80000a13d00000008040000290000001202400029000000000012043500000013010000290000000001010433000000000001004b000000000503001900002f6c0000c13d000032bd0000013d00000014020000290000000002020433000000000002004b000032bd0000613d000000050220021000000014022000290000000002020433000000000002004b0000335d0000613d000000010010008c000032f80000613d000000100100002900000000010104330000137305100197000000010100002900000000010104330000137303100197000000000035004b000032fe0000613d00000000010300190000000001054019000000000001004b000033120000613d0000006004100210000000400100043d00000020021000390000000000420435000000000035004b001100000005001d000000000305201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000032f20000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000f0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000032f20000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d00000014020000290000000002020433000000000002004b000032f80000613d000000000101043b00000012020000290000000003020433000000400200043d000000640420003900000000003404350000137301100197000000440320003900000000001304350000002001200039000013af03000041000000000031043500000024032000390000000704000029000000000043043500000064030000390000000000320435000013f70020009c000032f20000213d000000a003200039000000400030043f000000000302043300000000040004140000001102000029000000040020008c0000312b0000c13d00000001020000390000000101000031000000000001004b0000313e0000c13d000031680000013d000013700010009c00001370010080410000004001100210000013700030009c00001370030080410000006003300210000000000113019f000013700040009c0000137004008041000000c003400210000000000131019f4dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137001100197000000000001004b000031680000613d0000001f03100039000013de033001970000003f03300039000013de03300197000000400400043d0000000003340019000300000004001d000000000043004b00000000040000390000000104004039000013ab0030009c000032f20000213d0000000100400190000032f20000c13d000000400030043f00000003030000290000000005130436000013de031001980000001f0410018f000200000005001d000000000135001900000003050003670000315b0000613d000000000605034f0000000207000029000000006806043c0000000007870436000000000017004b000031570000c13d000000000004004b000031680000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000000000002004b0000334f0000613d00000003010000290000000001010433000000000001004b0000317b0000613d000013ac0010009c000032f00000213d000000200010008c000032f00000413d00000002010000290000000001010433000000000001004b0000000002000039000000010200c039000000000021004b000032f00000c13d000000000001004b0000334f0000613d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000033230000613d00000013020000290000000002020433000000000002004b000032bd0000613d000000000101043b000913730010019b0000000001000019000000010320008a000000000031004b000032c30000813d000000000012004b000032f80000a13d0000000107100039000000000072004b000032f80000a13d00000005031002100000001003300029000000000303043300001373043001970000000505700210000000100350002900000000030304330000137303300197000000000034004b000032fe0000613d00000000080300190000000008044019000000000008004b000033120000613d000000000034004b0000000009030019000000000904201900000014060000290000000006060433000000000076004b000032f80000a13d00000012055000290000000005050433000000000034004b00000000040500190000000004002019000f00000004001d000000000500a019001100000005001d000000020420008a000000000041004b0000000704000029000e00000007001d000032160000813d0000000201100039000000000012004b000032f80000a13d00000005011002100000001002100029000000400100043d00000000020204330000137304200197000000000043004b000032ff0000613d000c00000009001d000d00000008001d00000000020400190000000002034019000000000002004b000033130000613d000000600520021000000020021000390000000000520435000000000043004b000000000304a01900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000032f20000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000090300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000032f20000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000101043b00001373041001970000000d080000290000000c09000029000d00000004001d0000006003800210000000400100043d0000002002100039000000000032043500000060039002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000032f20000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000090300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000032f20000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000032f00000613d000000000101043b000000400300043d000013b80030009c000032f20000213d00001373021001970000002001300039000b00000001001d000000400010043f000a00000003001d0000000000030435000013b5010000410000000000100443000c00000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000033230000613d000000000101043b000000000001004b000032f00000613d000000400600043d00000064016000390000008002000039000000000021043500000044016000390000000d02000029000000000021043500000024016000390000000f020000290000000000210435000013f80100004100000000001604350000000401600039000000110200002900000000002104350000000a01000029000000000101043300000084026000390000000000120435000000a402600039000000000001004b0000000b07000029000032970000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b000032900000413d0000000002210019000000000002043500000000040004140000000c02000029000000040020008c000032b50000613d0000001f01100039000013de01100197000000a401100039000013700010009c00001370010080410000006001100210000013700060009c000013700300004100000000030640190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000113019f001100000006001d4dbc4db20000040f000000110600002900000000030100190000006003300270000113700030019d00030000000103550000000100200190000033300000613d000013ab0060009c000032f20000213d000000400060043f00000013010000290000000002010433000000000002004b0000000e01000029000031900000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe0001043000000014010000290000000001010433000000020010008c000032f80000413d000000140100002900000040011000390000000001010433000000000001042d000000600c000039000000800b0000390000001409000029000000120a00002900000000030c0433000000000002004b00002e330000c13d000032da0000013d000000600c000039000000800b0000390000001409000029000000120a00002900000000030c0433000000000002004b00002f050000c13d00000000010a0019000000000003004b000033870000c13d000000400400043d001400000004001d000013bf02000041000000000024043500000004034000390000002002000039000000000023043500000024024000394dbc25810000040f00000014020000290000000001210049000013700010009c0000137001008041000013700020009c000013700200804100000060011002100000004002200210000000000121019f00004dbe00010430000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000400100043d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe00010430000000000001042f0000001f0530018f0000137206300198000000400200043d00000000046200190000333c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000332b0000c13d0000333c0000013d00001370033001970000001f0530018f0000137206300198000000400200043d00000000046200190000333c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000033380000c13d000000000005004b000033490000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d0000006402100039000013f90300004100000000003204350000004402100039000013fa03000041000000000032043500000024021000390000003103000039000033070000013d000000400100043d0000004402100039000013fd03000041000033150000013d000000400100043d000013db020000410000000000210435000013700010009c0000137001008041000000400110021000001378011001c700004dbe00010430000000400100043d0000006402100039000013ec0300004100000000003204350000004402100039000013ed03000041000000000032043500000024021000390000002a03000039000033070000013d0000001f0530018f0000137206300198000000400200043d00000000046200190000333c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000033760000c13d0000333c0000013d000013bf02000041000000000021043500000004021000390000002003000039000000000032043500000036020000390000000000250435000013ea0200004100000000002404350000006402100039000013eb030000410000330c0000013d0000137000b0009c000013700b0080410000004002b00210000013700030009c00001370030080410000006001300210000000000121019f00004dbe00010430000000400100043d0000004402100039000013f003000041000000000032043500000024021000390000001d03000039000033180000013d0000001f0530018f0000137206300198000000400200043d00000000046200190000333c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000339d0000c13d0000333c0000013d0004000000000002000000400b00043d000013e60300004100000000003b0435000000000300041000001373033001970000002404b0003900000000003404350000000404b00039000000000034043500000000040004140000137309100197000000040090008c000400000009001d000300000003001d000033b70000c13d0000000103000031000000200030008c00000020040000390000000004034019000033e80000013d000100000002001d0000137000b0009c000013700100004100000000010b40190000004001100210000013700040009c0000137004008041000000c002400210000000000112019f000013c6011001c7000000000209001900020000000b001d4dbc4db70000040f000000020b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000033d50000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000033d10000c13d000000000006004b000033e20000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000000004090000290000358e0000613d00000001020000290000001f01400039000000600410018f0000000001b40019000000000041004b00000000040000390000000104004039000013ab0010009c000035770000213d0000000100400190000035770000c13d000000400010043f0000001f0030008c0000357d0000a13d00000000040b0433000000000024004b000035500000813d0000002002100039000013e70400004100000000004204350000002404100039000000000500041000000000005404350000004404000039000000000041043500000044041000390000000000040435000013cb0010009c000035770000213d000000800b1000390000004000b0043f000013e80010009c000035770000213d000000c004100039000000400040043f000000200400003900000000004b0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c000000200a00008a000034160000c13d00000001020000390000342d0000013d00020000000b001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137003100198000035510000613d0000000409000029000000200a00008a000000020b0000290000001f013000390000000001a1016f0000003f011000390000000001a1016f000000400d00043d00000000011d00190000000000d1004b00000000040000390000000104004039000013ab0010009c000035770000213d0000000100400190000035770000c13d000000400010043f000000000c3d04360000000004a301700000001f0330018f00000000014c00190000000305000367000034470000613d000000000605034f00000000070c0019000000006806043c0000000007870436000000000017004b000034430000c13d000000000003004b000034540000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f000000000031043500000000030d0433000000000002004b000035610000613d000000000003004b000034710000c13d00020000000d001d00010000000c001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000035b30000613d000000000101043b000000000001004b0000000201000029000035b40000613d0000000003010433000000000003004b0000000409000029000000200a00008a000000010c0000290000347d0000613d000013ac0030009c0000357d0000213d000000200030008c0000357d0000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b0000357d0000c13d000000000001004b0000357f0000613d000000400b00043d000013e60100004100000000001b04350000002401b00039000000030200002900000000002104350000000401b0003900000000002104350000000001000414000000040090008c0000348d0000c13d0000000103000031000000200030008c00000020040000390000000004034019000034bd0000013d0000137000b0009c000013700200004100000000020b40190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f000013c6011001c7000000000209001900030000000b001d4dbc4db70000040f000000030b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000034aa0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000034a60000c13d000000000006004b000034b70000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f000300000001035500000001002001900000000409000029000000200a00008a000035c50000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000013ab0010009c000035770000213d0000000100200190000035770000c13d000000400010043f000000200030008c0000357d0000413d0000004404100039000000240510003900000000020b0433000000000002004b0000359a0000c13d0000002002100039000013e706000041000000000062043500000000060004100000000000650435000000010500008a000000000054043500000044040000390000000000410435000013cb0010009c000035770000213d000000800b1000390000004000b0043f000013e80010009c000035770000213d000000c004100039000000400040043f000000200400003900000000004b0435000000a004100039000013e905000041000000000054043500000000040104330000000001000414000000040090008c000034eb0000c13d0000000102000039000035020000013d00030000000b001d000013700020009c00001370020080410000004002200210000013700040009c00001370040080410000006003400210000000000223019f000013700010009c0000137001008041000000c001100210000000000112019f00000000020900194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d00001370031001980000355a0000613d0000000409000029000000200a00008a000000030b0000290000001f013000390000000001a1016f0000003f011000390000000001a1016f000000400d00043d00000000011d00190000000000d1004b00000000040000390000000104004039000013ab0010009c000035770000213d0000000100400190000035770000c13d000000400010043f000000000c3d04360000000004a301700000001f0330018f00000000014c001900000003050003670000351c0000613d000000000605034f00000000070c0019000000006806043c0000000007870436000000000017004b000035180000c13d000000000003004b000035290000613d000000000445034f0000000303300210000000000501043300000000053501cf000000000535022f000000000404043b0000010003300089000000000434022f00000000033401cf000000000353019f000000000031043500000000030d0433000000000002004b000035610000613d000000000003004b000035440000c13d00030000000d001d00020000000c001d000013b501000041000000000010044300000004009004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000035b30000613d000000000101043b000000000001004b0000000301000029000035b40000613d0000000003010433000000000003004b000000020c000029000035500000613d000013ac0030009c0000357d0000213d000000200030008c0000357d0000413d00000000010c0433000000000001004b0000000002000039000000010200c039000000000021004b0000357d0000c13d000000000001004b0000357f0000613d000000000001042d000000600d000039000000800c0000390000000409000029000000200a00008a000000020b00002900000000030d0433000000000002004b000034570000c13d000035610000013d000000600d000039000000800c0000390000000409000029000000030b00002900000000030d0433000000000002004b0000352c0000c13d00000000010b0019000000000003004b000035ab0000c13d000000400400043d000400000004001d000013bf02000041000000000024043500000004034000390000002002000039000000000023043500000024024000394dbc25810000040f00000004020000290000000001210049000013700010009c0000137001008041000013700020009c000013700200804100000060011002100000004002200210000000000121019f00004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000100001900004dbe00010430000000400100043d0000006402100039000013ec0300004100000000003204350000004402100039000013ed03000041000000000032043500000024021000390000002a030000390000000000320435000013bf02000041000000000021043500000004021000390000002003000039000035a50000013d0000001f0530018f0000137206300198000000400200043d0000000004620019000035d00000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035950000c13d000035d00000013d000013bf02000041000000000021043500000004021000390000002003000039000000000032043500000036020000390000000000250435000013ea0200004100000000002404350000006402100039000013eb030000410000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe000104300000137000c0009c000013700c0080410000004002c00210000013700030009c00001370030080410000006001300210000000000121019f00004dbe00010430000000000001042f000000400100043d0000004402100039000013f003000041000000000032043500000024021000390000001d030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d0000000004620019000035d00000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000035cc0000c13d000000000005004b000035dd0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe000104300000000003010019000000400400043d000000440140003900000000002104350000002001400039000013c502000041000000000021043500000024024000390000dead05000039000000000052043500000044020000390000000000240435000013fe0040009c0000364b0000813d0000008002400039000000400020043f00000000040404330000000002000414000000040030008c000036230000c13d00000001020000390000000104000031000000000004004b000036370000613d0000001f01400039000013de011001970000003f01100039000013de03100197000000400100043d0000000003310019000000000013004b00000000060000390000000106004039000013ab0030009c0000364b0000213d00000001006001900000364b0000c13d000000400030043f0000000003410436000013de054001980000001f0640018f00000000045300190000000307000367000036150000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000036110000c13d000000000006004b000036390000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000036390000013d000013700010009c00001370010080410000004001100210000013700040009c00001370040080410000006004400210000000000114019f000013700020009c0000137002008041000000c002200210000000000121019f00000000020300194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b000035fb0000c13d00000060010000390000008003000039000000000002004b000036510000613d0000000001010433000000000001004b0000364a0000613d000013ac0010009c000036650000213d0000001f0010008c000036650000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000036650000c13d000000000001004b000036510000613d000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013ff03000041000000000032043500000044021000390000140003000041000000000032043500000024021000390000002d030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000000100001900004dbe000104300000000004010019000000400500043d000000440150003900000000003104350000002001500039000013c503000041000000000031043500001373022001970000002403500039000000000023043500000044020000390000000000250435000013fe0050009c000036cf0000813d0000008002500039000000400020043f00000000030504330000000002000414000000040040008c000036a70000c13d00000001020000390000000104000031000000000004004b000036bb0000613d0000001f01400039000013de011001970000003f01100039000013de03100197000000400100043d0000000003310019000000000013004b00000000060000390000000106004039000013ab0030009c000036cf0000213d0000000100600190000036cf0000c13d000000400030043f0000000003410436000013de054001980000001f0640018f00000000045300190000000307000367000036990000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000036950000c13d000000000006004b000036bd0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000036bd0000013d000013700010009c00001370010080410000004001100210000013700030009c00001370030080410000006003300210000000000113019f000013700020009c0000137002008041000000c002200210000000000121019f00000000020400194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b0000367f0000c13d00000060010000390000008003000039000000000002004b000036d50000613d0000000001010433000000000001004b000036ce0000613d000013ac0010009c000036e90000213d0000001f0010008c000036e90000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000036e90000c13d000000000001004b000036d50000613d000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013ff03000041000000000032043500000044021000390000140003000041000000000032043500000024021000390000002d030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000000100001900004dbe000104300000000005010019000000400600043d000000640160003900000000004104350000137301300197000000440360003900000000001304350000002001600039000013af03000041000000000031043500001373022001970000002403600039000000000023043500000064020000390000000000260435000014010060009c000037560000813d000000a002600039000000400020043f00000000030604330000000002000414000000040050008c0000372e0000c13d00000001020000390000000104000031000000000004004b000037420000613d0000001f01400039000013de011001970000003f01100039000013de03100197000000400100043d0000000003310019000000000013004b00000000060000390000000106004039000013ab0030009c000037560000213d0000000100600190000037560000c13d000000400030043f0000000003410436000013de054001980000001f0640018f00000000045300190000000307000367000037200000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b0000371c0000c13d000000000006004b000037440000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000037440000013d000013700010009c00001370010080410000004001100210000013700030009c00001370030080410000006003300210000000000113019f000013700020009c0000137002008041000000c002200210000000000121019f00000000020500194dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b000037060000c13d00000060010000390000008003000039000000000002004b0000375c0000613d0000000001010433000000000001004b000037550000613d000013ac0010009c000037700000213d0000001f0010008c000037700000a13d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000037700000c13d000000000001004b0000375c0000613d000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013f90300004100000000003204350000004402100039000013fa030000410000000000320435000000240210003900000031030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000000100001900004dbe0001043000000000030200190000000004010019000000400100043d000014020010009c000037bc0000813d0000002002100039000000400020043f00000000000104350000000001000414000000040040008c000037820000c13d00000001020000390000000101000031000000000001004b000037930000c13d000037b90000013d000013700010009c0000137001008041000000c001100210000000000003004b0000378b0000613d000013b9011001c7000080090200003900000000050000190000378c0000013d00000000020400194dbc4db20000040f00030000000103550000006001100270000113700010019d0000137001100197000000000001004b000037b90000613d0000001f04100039000013de044001970000003f04400039000013de05400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000013ab0050009c000037bc0000213d0000000100600190000037bc0000c13d000000400050043f0000000006140436000013de031001980000001f0410018f00000000013600190000000305000367000037ac0000613d000000000705034f000000007807043c0000000006860436000000000016004b000037a80000c13d000000000004004b000037b90000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000100200190000037c20000613d000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013c80300004100000000003204350000004402100039000013c9030000410000000000320435000000240210003900000034030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000a000000000002000300000006001d000200000005001d000800000004001d000900000003001d000700000002001d000a00000001001d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f00000001002001900000396c0000613d000000000201043b000000400c00043d000014030100004100000000001c0435000000070500002900001373065001970000002401c0003900000000006104350000000a0100002900001373071001970000000401c00039000000000071043500000000010004140000137302200197000000040020008c000600000002001d000038010000c13d0000000103000031000000200030008c00000020040000390000000004034019000038330000013d000400000007001d000500000006001d0000137000c0009c000013700300004100000000030c40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013c6011001c700010000000c001d4dbc4db70000040f000000010c000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057c00190000381f0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b0000381b0000c13d000000000006004b0000382c0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000039c20000613d0000000705000029000000050600002900000004070000290000001f01400039000000600110018f000000000bc1001900000000001b004b00000000020000390000000102004039000013ab00b0009c000039660000213d0000000100200190000039660000c13d0000004000b0043f0000001f0030008c000039640000a13d00000000020c0433000013730020009c000039640000213d000000000002004b000038470000613d00000000010b00190000388f0000013d0000002402b000390000000000620435000014040200004100000000002b04350000000402b00039000000000072043500000000020004140000000604000029000000040040008c000038860000613d000400000007001d000500000006001d0000137000b0009c000013700100004100000000010b40190000004001100210000013700020009c0000137002008041000000c002200210000000000112019f000013c6011001c7000000060200002900010000000b001d4dbc4db20000040f000000010b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000038700000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b0000386c0000c13d000000000006004b0000387d0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000039f90000613d0000001f01400039000000600110018f0000000705000029000000050600002900000004070000290000000001b10019000013ab0010009c000039660000213d000000400010043f000000200030008c000039640000413d00000000020b0433000013730020009c000039640000213d000000000067004b0000396d0000613d0000000a02000029000000000305001900000000030240190000137300300198000039800000613d000000000067004b0000000005028019000700000003001d00000060033002100000002002100039000000000032043500000060035002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000039660000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000039640000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000060300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000039660000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000039640000613d000000000201043b000000400b00043d000013fb0100004100000000051b043600000000010004140000137302200197000000040020008c000038ec0000c13d0000000103000031000000600030008c000000600400003900000000040340190000391b0000013d000500000005001d0000137000b0009c000013700300004100000000030b40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f00001378011001c700060000000b001d4dbc4db70000040f000000060b000029000000000301001900000060033002700000137003300197000000600030008c000000600400003900000000040340190000001f0640018f000000600740019000000000057b0019000039090000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000039050000c13d000000000006004b000039160000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000039e00000613d00000005050000290000001f01400039000000e00110018f0000000002b10019000000000012004b00000000010000390000000101004039000013ab0020009c000039660000213d0000000100100190000039660000c13d000000400020043f000000600030008c000039640000413d00000000010b0433000013fc0010009c000039640000213d0000000004050433000013fc0040009c000039640000213d0000004003b000390000000003030433000013700030009c000039640000213d00000007050000290000000a0350014f000013730030019800000000030100190000000003046019000000000104c01900000000003101a00000395c0000613d000000090000006b000039900000613d000000000001004b000039af0000613d000000000003004b000039af0000613d00000009043000b900000009054000fa000000000035004b000039990000c13d00000000053400d9000000090050006c0000399f0000c13d00000000041400d90000000805000029000000000054004b0000395f0000a13d000000000005004b000039900000613d00000008041000b900000008054000fa000000000015004b000039990000c13d00000000011400d9000000080010006c0000399f0000c13d00000000013400d9000000090010006c000039ec0000213d000000020010006c0000000804000029000039f20000413d0000000002040019000000000001042d00000009010000290000000802000029000000000001042d000000030040006c00000009010000290000395a0000813d000013bc01000041000039f30000013d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000001042f0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe000104300000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe0001043000000064012000390000140803000041000000000031043500000044012000390000140903000041000000000031043500000024012000390000002503000039000039b70000013d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000000440120003900001405030000410000000000310435000000240120003900000014030000390000000000310435000013bf010000410000000000120435000000040120003900000020030000390000000000310435000013700020009c00001370020080410000004001200210000013b0011001c700004dbe00010430000000640120003900001406030000410000000000310435000000440120003900001407030000410000000000310435000000240120003900000028030000390000000000310435000013bf010000410000000000120435000000040120003900000020030000390000000000310435000013700020009c00001370020080410000004001200210000013c2011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d0000000004620019000039cd0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000039c90000c13d000000000005004b000039da0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900003a040000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000039e70000c13d00003a040000013d000013d201000041000000000010043f0000000101000039000000040010043f000013b20100004100004dbe00010430000013bd010000410000000000120435000013700020009c0000137002008041000000400120021000001378011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900003a040000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003a000000c13d000000000005004b00003a110000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe000104300013000000000002001300000006001d000500000005001d000100000004001d001200000003001d000200000002001d001000000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f000000010020019000003dfc0000613d000000000101043b000000130010006c00003e320000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f000000010020019000003dfc0000613d000000000101043b000600000001001d00000012010000290000000021010434000f00000002001d000000010010008c00003e350000a13d000013df0010009c00003dcb0000813d00000005021002100000003f03200039000013b403300197000000400400043d0000000003340019001300000004001d000000000043004b00000000040000390000000104004039000013ab0030009c00003dcb0000213d000000010040019000003dcb0000c13d000000400030043f00000013030000290000000001130436001100000001001d0000001f0120018f000000000002004b00003a5f0000613d0000001104000029000000000224001900000000030000310000000203300367000000003503043c0000000004540436000000000024004b00003a5b0000c13d000000000001004b00000013010000290000000001010433000000000001004b00003dd10000613d00000011010000290000001002000029000000000021043500000012010000290000000001010433000000000001004b00003dc10000613d0000000602000029000e13730020019b0000000005000019000000010210008a000000000025004b00003ba90000813d000000000051004b00003dd10000a13d0000000103500039000000000031004b00003dd10000a13d0000000501500210000a00000001001d0000000f061000290000000001060433000013730710019700000005043002100000000f0240002900000000010204330000137301100197000000000017004b00003dd70000613d000d00000005001d000700000004001d001000000003001d000000000401001900000000010400190000000001074019000000000001004b00003deb0000613d000800000002001d000900000006001d0000006003100210000000400100043d00000020021000390000000000320435000000000047004b000c00000007001d000b00000004001d0000000003040019000000000307201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00003dcb0000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000e0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003dcb0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400a00043d000013fb0100004100000000051a043600000000010004140000137302200197000000040020008c00003ae40000c13d0000000103000031000000600030008c0000006004000039000000000403401900003b120000013d000300000005001d0000137000a0009c000013700300004100000000030a40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f00001378011001c700040000000a001d4dbc4db70000040f000000040a000029000000000301001900000060033002700000137003300197000000600030008c00000060040000390000000004034019000000600640019000000000056a001900003b000000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00003afc0000c13d0000001f0740019000003b0d0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000003dfd0000613d00000003050000290000001f01400039000000e00210018f0000000001a20019000000000021004b00000000020000390000000102004039000013ab0010009c00003dcb0000213d000000010020019000003dcb0000c13d000000400010043f000000600030008c00003dc90000413d00000000020a0433000013fc0020009c00003dc90000213d0000000005050433000013fc0050009c00003dc90000213d0000004003a000390000000003030433000013700030009c00003dc90000213d0000000b040000290000000c0040006b00000000060500190000000006022019000000000502a019000000130200002900000000020204330000000d04000029000000000042004b000000100300002900003dd10000a13d00000012020000290000000002020433000000000042004b00003dd10000a13d000000000032004b00003dd10000a13d000000090200002900000000020204330000137302200197000000080300002900000000030304330000137304300197000000000042004b00003dd80000613d000c00000006001d00000000030400190000000003024019000000000003004b00003dec0000613d000d00000005001d0000000a0600002900000011056000290000000005050433000b00000005001d000000600530021000000020031000390000000000530435000000000042004b000000000204a01900000060022002100000003404100039000000000024043500000028020000390000000000210435000013f30010009c00003dcb0000213d0000006002100039000000400020043f000013700030009c000013700300804100000040023002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000e0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003dcb0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f00000001002001900000000d0200002900003dc90000613d000000000101043b00001373041001970000000b010000290000000c0300002900000006050000294dbc47890000040f000000130200002900000000020204330000001003000029000000000032004b00003dd10000a13d00000007040000290000001102400029000000000012043500000012010000290000000001010433000000000001004b000000000503001900003a6e0000c13d00003dc10000013d00000013020000290000000002020433000000000002004b00003dc10000613d000000050220021000000013022000290000000002020433000000020020006c00003e390000413d000000010010008c00003dd10000613d0000000f01000029000000000101043300001373051001970000001201000029000000400110003900000000010104330000137303100197000000000035004b00003dd70000613d00000000010300190000000001054019000000000001004b00003deb0000613d0000006004100210000000400100043d00000020021000390000000000420435000000000035004b001000000005001d000000000305201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00003dcb0000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000e0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003dcb0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d00000013020000290000000002020433000000000002004b00003dd10000613d000000000101043b00000011020000290000000003020433000000400200043d000000640420003900000000003404350000137301100197000000440320003900000000001304350000002001200039000013af030000410000000000310435000000010300002900001373033001970000002404200039000000000034043500000064030000390000000000320435000013f70020009c00003dcb0000213d000000a003200039000000400030043f000000000302043300000000040004140000001002000029000000040020008c00003c570000c13d00000001020000390000000104000031000000000004004b000000200300008a00003c6b0000613d0000001f01400039000000000131016f0000003f01100039000000000331016f000000400100043d0000000003310019000000000013004b00000000050000390000000105004039000013ab0030009c00003dcb0000213d000000010050019000003dcb0000c13d000000400030043f0000000003410436000013de054001980000001f0640018f0000000004530019000000030700036700003c490000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b00003c450000c13d000000000006004b00003c6d0000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f000000000054043500003c6d0000013d000013700010009c00001370010080410000004001100210000013700030009c00001370030080410000006003300210000000000113019f000013700040009c0000137004008041000000c003400210000000000131019f4dbc4db20000040f000000010220018f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b000000200300008a00003c2f0000c13d00000060010000390000008003000039000000000002004b00003e280000613d0000000001010433000000000001004b00003c7e0000613d000013ac0010009c00003dc90000213d000000200010008c00003dc90000413d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b00003dc90000c13d000000000001004b00003e280000613d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f000000010020019000003dfc0000613d00000012020000290000000002020433000000000002004b00003dc10000613d000000000101043b000813730010019b0000000001000019000000010320008a000000000031004b00003dc70000813d000000000012004b00003dd10000a13d0000000107100039000000000072004b00003dd10000a13d00000005031002100000000f033000290000000003030433000013730430019700000005057002100000000f0350002900000000030304330000137303300197000000000034004b00003dd70000613d00000000080300190000000008044019000000000008004b00003deb0000613d000000000034004b0000000009030019000000000904201900000013060000290000000006060433000000000076004b00003dd10000a13d00000011055000290000000005050433000000000034004b00000000040500190000000004002019000e00000004001d000000000500a019001000000005001d000000020420008a000000000041004b0000000504000029000d00000007001d00003d190000813d0000000201100039000000000012004b00003dd10000a13d00000005011002100000000f02100029000000400100043d00000000020204330000137304200197000000000043004b00003dd80000613d000b00000009001d000c00000008001d00000000020400190000000002034019000000000002004b00003dec0000613d000000600520021000000020021000390000000000520435000000000043004b000000000304a01900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00003dcb0000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000080300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003dcb0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000101043b00001373041001970000000c080000290000000b09000029000c00000004001d0000006003800210000000400100043d0000002002100039000000000032043500000060039002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00003dcb0000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000080300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003dcb0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003dc90000613d000000000101043b000000400300043d000013b80030009c00003dcb0000213d00001373021001970000002001300039000a00000001001d000000400010043f000900000003001d0000000000030435000013b5010000410000000000100443000b00000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010020019000003dfc0000613d000000000101043b000000000001004b00003dc90000613d000000400600043d0000006401600039000000800200003900000000002104350000000c0100002900001373011001970000004402600039000000000012043500000024016000390000000e020000290000000000210435000013f80100004100000000001604350000000401600039000000100200002900000000002104350000000901000029000000000101043300000084026000390000000000120435000000a402600039000000000001004b0000000a0700002900003d9b0000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b00003d940000413d0000000002210019000000000002043500000000040004140000000b02000029000000040020008c00003db90000613d0000001f01100039000013de01100197000000a401100039000013700010009c00001370010080410000006001100210000013700060009c000013700300004100000000030640190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000113019f001000000006001d4dbc4db20000040f000000100600002900000000030100190000006003300270000113700030019d0003000000010355000000010020019000003e090000613d000013ab0060009c00003dcb0000213d000000400060043f00000012010000290000000002010433000000000002004b0000000d0100002900003c930000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe000104300000001301000029000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000400100043d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe00010430000000000001042f0000001f0530018f0000137206300198000000400200043d000000000462001900003e150000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003e040000c13d00003e150000013d00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900003e150000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003e110000c13d000000000005004b00003e220000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d0000006402100039000013f90300004100000000003204350000004402100039000013fa0300004100000000003204350000002402100039000000310300003900003de00000013d000000400100043d000013dc0200004100003e3b0000013d000000400100043d0000004402100039000013fd0300004100003dee0000013d000000400100043d000013db020000410000000000210435000013700010009c0000137001008041000000400110021000001378011001c700004dbe00010430000d000000000002000200000003001d000300000002001d000400000001001d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f000000010020019000003fc50000613d00000003020000290000000032020434000600000003001d000000000002004b00003f8b0000613d0000000403000029000100200030003d000000000101043b000513730010019b0000000001000019000000010320008a000000000031004b00003f910000813d000000000012004b00003f9a0000a13d0000000107100039000000000072004b00003f9a0000a13d00000005031002100000000603300029000000000303043300001373043001970000000505700210000000060350002900000000030304330000137303300197000000000034004b00003fa00000613d00000000080300190000000008044019000000000008004b00003fb40000613d000000000034004b0000000009030019000000000904201900000004060000290000000006060433000000000076004b00003f9a0000a13d00000001055000290000000005050433000000000034004b00000000040500190000000004002019000c00000004001d000000000500a019000d00000005001d000000020420008a000000000041004b0000000204000029000b00000007001d00003ee30000813d0000000201100039000000000012004b00003f9a0000a13d0000000501100210000000060110002900000000010104330000137304100197000000000043004b00003fa00000613d000a00000009001d00000000010400190000000001034019000000000001004b00003fb40000613d000900000008001d0000006005100210000000400100043d00000020021000390000000000520435000000000043004b000000000304a01900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00003f920000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003f980000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003f920000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003f980000613d000000000101043b000013730410019700000009080000290000000a09000029000a00000004001d0000006003800210000000400100043d0000002002100039000000000032043500000060039002100000003404100039000000000034043500000028030000390000000000310435000013f20010009c00003f920000813d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003f980000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00003f920000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000003f980000613d000000000101043b000000400300043d000013b80030009c00003f920000213d00001373021001970000002001300039000800000001001d000000400010043f000700000003001d0000000000030435000013b5010000410000000000100443000900000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f000000010020019000003fc50000613d000000000101043b000000000001004b00003f980000613d000000400600043d0000006401600039000000800200003900000000002104350000000a0100002900001373011001970000004402600039000000000012043500000024016000390000000c020000290000000000210435000013f801000041000000000016043500000004016000390000000d0200002900000000002104350000000701000029000000000101043300000084026000390000000000120435000000a402600039000000000001004b000000080700002900003f650000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b00003f5e0000413d0000000002120019000000000002043500000000040004140000000902000029000000040020008c00003f830000613d0000001f01100039000013de01100197000000a401100039000013700010009c00001370010080410000006001100210000013700060009c000013700300004100000000030640190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000131019f000d00000006001d4dbc4db20000040f0000000d0600002900000000030100190000006003300270000113700030019d0003000000010355000000010020019000003fc60000613d000013ab0060009c00003f920000213d000000400060043f00000003010000290000000002010433000000000002004b0000000b0100002900003e5d0000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000100001900004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000000400100043d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000400100043d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe00010430000000000001042f00001370033001970000001f0530018f0000137206300198000000400200043d000000000462001900003fd20000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00003fce0000c13d000000000005004b00003fdf0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe00010430000d000000000002000b00000007001d000100000006001d000800000005001d000d00000004001d000c00000003001d000900000002001d000a00000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f00000001002001900000428e0000613d000000000101043b0000000b0010006c000042dd0000213d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f00000001002001900000428e0000613d0000000002000031000000000101043b000b00000001001d0000000d01000029000013df0010009c0000000c06000029000042820000813d0000000d0100002900000005011002100000003f03100039000713b40030019b000000400300043d0000000704300029000000000034004b00000000050000390000000105004039000013ab0040009c000042820000213d0000000100500190000042820000c13d000000400040043f0000000d0400002900000000004304350000000007610019000000000027004b000042800000213d000000000067004b000040310000a13d000000020100036700000000020300190000000004060019000000000541034f000000000505043b000013730050009c000042800000213d000000200220003900000000005204350000002004400039000000000074004b000040280000413d0000000b010000290000000a02000029000a00000007001d4dbc4b210000040f0000000c03000029000200000001001d0000000021010434000300000002001d000000000001004b000042880000613d00000003010000290000000001010433000000090010006c000042e00000213d0000000d0000006b000042880000613d0000000201000367000000000231034f000000000502043b000013730050009c000042800000213d0000000d02000029000000010020008c000042880000613d0000002002300039000000000121034f000000000201043b000013730020009c000042800000213d000000400100043d000000000025004b000042900000613d00000000030200190000000003054019000000000003004b000042a40000613d000000600430021000000020031000390000000000430435000000000025004b000000000205201900000060022002100000003404100039000000000024043500000028020000390000000000210435000013f30010009c000042820000213d0000006002100039000000400020043f000013700030009c000013700300804100000040023002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000801002000039000900000005001d4dbc4db70000040f0000000100200190000042800000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000000b020000290000137302200197000000400310003900000000002304350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000042820000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f00000009050000290000000a0c0000290000000c0b0000290000000100200190000042800000613d00000002020000290000000002020433000000000002004b000042880000613d000000000101043b00000003020000290000000003020433000000400200043d000000640420003900000000003404350000137301100197000000440320003900000000001304350000002001200039000013af030000410000000000310435000000080300002900001373033001970000002404200039000000000034043500000064030000390000000000320435000013f70020009c000042820000213d000000a003200039000000400030043f00000000030204330000000002000414000000040050008c000040ed0000c13d00000001020000390000000104000031000000000004004b000000200300008a000041040000613d0000001f01400039000000000131016f0000003f01100039000000000331016f000000400100043d0000000003310019000000000013004b00000000050000390000000105004039000013ab0030009c000042820000213d0000000100500190000042820000c13d000000400030043f0000000003410436000013de054001980000001f0640018f00000000045300190000000307000367000040df0000613d000000000807034f0000000009030019000000008a08043c0000000009a90436000000000049004b000040db0000c13d000000000006004b000041060000613d000000000557034f0000000306600210000000000704043300000000076701cf000000000767022f000000000505043b0000010006600089000000000565022f00000000056501cf000000000575019f0000000000540435000041060000013d000013700010009c00001370010080410000004001100210000013700030009c00001370030080410000006003300210000000000113019f000013700020009c0000137002008041000000c002200210000000000121019f00000000020500194dbc4db20000040f0000000a0c0000290000000c0b000029000000010220018f00030000000103550000006001100270000113700010019d0000137004100197000000000004004b000000200300008a000040c50000c13d00000060010000390000008003000039000000000002004b000042d30000613d0000000001010433000000000001004b000041170000613d000013ac0010009c000042800000213d000000200010008c000042800000413d0000000001030433000000000001004b0000000002000039000000010200c039000000000021004b000042800000c13d000000000001004b000042d30000613d000000400200043d0000000701200029000400000002001d000000000021004b00000000020000390000000102004039000013ab0010009c000042820000213d0000000100200190000042820000c13d000000400010043f00000004010000290000000d030000290000000001310436000600000001001d0000000000c0007c000042800000213d0000000000bc004b000041350000a13d000000020100036700000004020000290000000003b1034f000000000303043b000013730030009c000042800000213d00000020022000390000000000320435000000200bb000390000000000cb004b0000412c0000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f00000001002001900000428e0000613d00000004020000290000000002020433000000000002004b000042780000613d000000000101043b000513730010019b0000000001000019000000010320008a000000000031004b0000427e0000813d000000000012004b000042880000a13d0000000107100039000000000072004b000042880000a13d00000005031002100000000603300029000000000303043300001373043001970000000505700210000000060350002900000000030304330000137303300197000000000034004b0000428f0000613d00000000080300190000000008044019000000000008004b000042a30000613d000000000034004b0000000009030019000000000904201900000002060000290000000006060433000000000076004b000042880000a13d00000003055000290000000005050433000000000034004b00000000040500190000000004002019000c00000004001d000000000500a019000d00000005001d000000020420008a000000000041004b0000000104000029000b00000007001d000041d00000813d0000000201100039000000000012004b000042880000a13d00000005011002100000000602100029000000400100043d00000000020204330000137304200197000000000043004b000042900000613d000900000009001d000a00000008001d00000000020400190000000002034019000000000002004b000042a40000613d000000600520021000000020021000390000000000520435000000000043004b000000000304a01900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000042820000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000042800000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000042820000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000042800000613d000000000101043b00001373041001970000000a080000290000000909000029000a00000004001d0000006003800210000000400100043d0000002002100039000000000032043500000060039002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000042820000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000042800000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000042820000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000042800000613d000000000101043b000000400300043d000013b80030009c000042820000213d00001373021001970000002001300039000800000001001d000000400010043f000700000003001d0000000000030435000013b5010000410000000000100443000900000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f00000001002001900000428e0000613d000000000101043b000000000001004b000042800000613d000000400600043d0000006401600039000000800200003900000000002104350000000a0100002900001373011001970000004402600039000000000012043500000024016000390000000c020000290000000000210435000013f801000041000000000016043500000004016000390000000d0200002900000000002104350000000701000029000000000101043300000084026000390000000000120435000000a402600039000000000001004b0000000807000029000042520000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b0000424b0000413d0000000002210019000000000002043500000000040004140000000902000029000000040020008c000042700000613d0000001f01100039000013de01100197000000a401100039000013700010009c00001370010080410000006001100210000013700060009c000013700300004100000000030640190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000113019f000d00000006001d4dbc4db20000040f0000000d0600002900000000030100190000006003300270000113700030019d00030000000103550000000100200190000042b40000613d000013ab0060009c000042820000213d000000400060043f00000004010000290000000002010433000000000002004b0000000b010000290000414a0000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe000104300000000201000029000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000000000001042f000000400100043d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000400100043d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe0001043000001370033001970000001f0530018f0000137206300198000000400200043d0000000004620019000042c00000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000042bc0000c13d000000000005004b000042cd0000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d0000006402100039000013f90300004100000000003204350000004402100039000013fa03000041000000000032043500000024021000390000003103000039000042980000013d000000400100043d000013dc02000041000042e20000013d000000400100043d000013d9020000410000000000210435000013700010009c0000137001008041000000400110021000001378011001c700004dbe00010430000d000000000002000b00000005001d000100000004001d000d00000003001d000c00000002001d000900000001001d000013ad0100004100000000001004430000000001000414000013700010009c0000137001008041000000c001100210000013ae011001c70000800b020000394dbc4db70000040f0000000100200190000046120000613d000000000101043b0000000b0010006c0000000c01000029000046570000213d0000000d0000006b0000460c0000613d0000000201100367000000000101043b000b00000001001d000013f10010009c000046040000813d0000137501000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000046120000613d000000000101043b00001373011001970000000b0010006b0000465a0000c13d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000046120000613d0000000002000031000000000101043b000a00000001001d0000000d01000029000013df0010009c0000000c06000029000046060000813d0000000d0100002900000005011002100000003f03100039000813b40030019b000000400300043d0000000804300029000000000034004b00000000050000390000000105004039000013ab0040009c000046060000213d0000000100500190000046060000c13d000000400040043f0000000d0400002900000000004304350000000007610019000000000027004b000046040000213d000000000067004b0000434d0000a13d000000020100036700000000020300190000000004060019000000000541034f000000000505043b000013730050009c000046040000213d000000200220003900000000005204350000002004400039000000000074004b000043440000413d0000000a010000290000000902000029000900000007001d4dbc4b210000040f000200000001001d0000000021010434000300000002001d000000000001004b0000460c0000613d000000030100002900000000020104330000000001000416000700000002001d000000000012004b0000465d0000213d000013b50100004100000000001004430000000b0100002900000004001004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000046120000613d000000000101043b000000000001004b0000000c05000029000046040000613d000000400600043d000013c301000041000000000716043600000000010004140000000b04000029000000040040008c000043910000613d000500000007001d000013700060009c000600000006001d000013700200004100000000020640190000004002200210000013700010009c0000137001008041000000c001100210000000000121019f0000000703000029000000000003004b000043850000613d000013c4011001c700008009020000390000000005000019000043870000013d00001378011001c700000000020400194dbc4db20000040f000300000001035500000000030100190000006003300270000113700030019d00000001002001900000000c05000029000000060600002900000005070000290000468e0000613d000013ab0060009c000046060000213d000000400060043f0000000202000367000000000152034f000000000101043b000013730010009c000046040000213d0000000d03000029000000020030008c0000460c0000413d0000002003500039000000000232034f000000000202043b000013730020009c000046040000213d000000000021004b000046650000613d00000000030200190000000003014019000000000003004b000046780000613d00000060033002100000000000370435000000000021004b000000000102a01900000060011002100000003402600039000000000012043500000028010000390000000000160435000013f30060009c000046060000213d0000006001600039000000400010043f000013700070009c000013700700804100000040017002100000000002060433000013700020009c00001370020080410000006002200210000000000112019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000046040000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000000a020000290000137302200197000000400310003900000000002304350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000046060000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f00000009060000290000000c050000290000000100200190000046040000613d00000002020000290000000002020433000000000002004b0000460c0000613d000000000101043b00000003020000290000000002020433000000400b00043d0000002403b000390000000000230435000013c50200004100000000002b043500001373011001970000000402b00039000000000012043500000000010004140000000b02000029000000040020008c000044090000c13d0000000103000031000000200030008c00000020040000390000000004034019000044380000013d0000137000b0009c000013700300004100000000030b40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013c6011001c7000b0000000b001d4dbc4db20000040f0000000b0b000029000000000301001900000060033002700000137003300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000044250000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000044210000c13d000000000006004b000044320000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000100200190000046ad0000613d0000000c0500002900000009060000290000001f01400039000000600110018f0000000002b10019000000000012004b00000000010000390000000101004039000400000002001d000013ab0020009c000046060000213d0000000100100190000046060000c13d0000000401000029000000400010043f000000200030008c000046040000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000046040000c13d000000000001004b000046880000613d00000008010000290000000401100029000000040010006c00000000020000390000000102004039000013ab0010009c000046060000213d0000000100200190000046060000c13d000000400010043f0000000d0100002900000004030000290000000001130436000600000001001d000000000060007c000046040000213d000000000056004b0000446c0000a13d00000002010003670000000402000029000000000351034f000000000303043b000013730030009c000046040000213d000000200220003900000000003204350000002005500039000000000065004b000044630000413d000013750100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000013700010009c0000137001008041000000c00110021000001376011001c700008005020000394dbc4db70000040f0000000100200190000046120000613d00000004020000290000000002020433000000000002004b000045af0000613d000000000101043b000513730010019b0000000001000019000000010320008a000000000031004b000045b50000813d000000000012004b0000460c0000a13d0000000107100039000000000072004b0000460c0000a13d00000005031002100000000603300029000000000303043300001373043001970000000505700210000000060350002900000000030304330000137303300197000000000034004b000046130000613d00000000080300190000000008044019000000000008004b000046270000613d000000000034004b0000000009030019000000000904201900000002060000290000000006060433000000000076004b0000460c0000a13d00000003055000290000000005050433000000000034004b00000000040500190000000004002019000c00000004001d000000000500a019000d00000005001d000000020420008a000000000041004b0000000104000029000b00000007001d000045070000813d0000000201100039000000000012004b0000460c0000a13d00000005011002100000000602100029000000400100043d00000000020204330000137304200197000000000043004b000046140000613d000900000009001d000a00000008001d00000000020400190000000002034019000000000002004b000046280000613d000000600520021000000020021000390000000000520435000000000043004b000000000304a01900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000046060000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000046040000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000046060000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000046040000613d000000000101043b00001373041001970000000a080000290000000909000029000a00000004001d0000006003800210000000400100043d0000002002100039000000000032043500000060039002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c000046060000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000046040000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f5040000410000000000430435000000600310003900000000002304350000004002100039000000050300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c000046060000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000046040000613d000000000101043b000000400300043d000013b80030009c000046060000213d00001373021001970000002001300039000800000001001d000000400010043f000700000003001d0000000000030435000013b5010000410000000000100443000900000002001d00000004002004430000000001000414000013700010009c0000137001008041000000c001100210000013b6011001c700008002020000394dbc4db70000040f0000000100200190000046120000613d000000000101043b000000000001004b000046040000613d000000400600043d0000006401600039000000800200003900000000002104350000000a0100002900001373011001970000004402600039000000000012043500000024016000390000000c020000290000000000210435000013f801000041000000000016043500000004016000390000000d0200002900000000002104350000000701000029000000000101043300000084026000390000000000120435000000a402600039000000000001004b0000000807000029000045890000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b000045820000413d0000000002210019000000000002043500000000040004140000000902000029000000040020008c000045a70000613d0000001f01100039000013de01100197000000a401100039000013700010009c00001370010080410000006001100210000013700060009c000013700300004100000000030640190000004003300210000000000131019f000013700040009c0000137004008041000000c003400210000000000113019f000d00000006001d4dbc4db20000040f0000000d0600002900000000030100190000006003300270000113700030019d00030000000103550000000100200190000046380000613d000013ab0060009c000046060000213d000000400060043f00000004010000290000000002010433000000000002004b0000000b01000029000044810000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe0001043000000002010000290000000001010433000000000001004b0000460c0000613d000000030100002900000000010104330000000002000416000000000312004b000046020000a13d000000400100043d000013b80010009c000046060000213d00000000040004110000002002100039000000400020043f00000000000104350000000001000414000000040040008c000045cd0000c13d00000001020000390000000101000031000000000001004b000045da0000c13d000046000000013d000013700010009c0000137001008041000000c001100210000013b9011001c7000080090200003900000000050000194dbc4db20000040f00030000000103550000006001100270000113700010019d0000137001100197000000000001004b000046000000613d0000001f03100039000013de033001970000003f03300039000013de04300197000000400300043d0000000004430019000000000034004b00000000050000390000000105004039000013ab0040009c000046060000213d0000000100500190000046060000c13d000000400040043f0000000006130436000013de031001980000001f0410018f00000000013600190000000305000367000045f30000613d000000000705034f000000007807043c0000000006860436000000000016004b000045ef0000c13d000000000004004b000046000000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000000100200190000046b90000613d0000000201000029000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000000000001042f000000400100043d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000000400100043d0000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe0001043000001370033001970000001f0530018f0000137206300198000000400200043d0000000004620019000046440000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000046400000c13d000000000005004b000046510000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d000013dc020000410000465f0000013d000000400100043d000013da020000410000465f0000013d000000400100043d000013d9020000410000000000210435000013700010009c0000137001008041000000400110021000001378011001c700004dbe000104300000006401600039000013c00200004100000000002104350000004401600039000013c1020000410000000000210435000000240160003900000025020000390000000000210435000013bf010000410000000000160435000000040160003900000020020000390000000000210435000013700060009c00001370060080410000004001600210000013c2011001c700004dbe000104300000004401600039000013be02000041000000000021043500000024016000390000001e020000390000000000210435000013bf010000410000000000160435000000040160003900000020020000390000000000210435000013700060009c00001370060080410000004001600210000013b0011001c700004dbe00010430000013d201000041000000000010043f0000000101000039000000040010043f000013b20100004100004dbe0001043000001370033001970000001f0530018f0000137206300198000000400200043d00000000046200190000469a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000046960000c13d000000000005004b000046a70000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000121019f00004dbe000104300000001f0530018f0000137206300198000000400200043d0000000004620019000046440000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000046b40000c13d000046440000013d000000400100043d0000006402100039000013c80300004100000000003204350000004402100039000013c9030000410000000000320435000000240210003900000034030000390000461c0000013d0001000000000002000000400700043d00001373042001970000137305300197000000000054004b000047220000613d000000000603001900000000060240190000137300600198000047350000613d000100000001001d000000000054004b000000000302801900000060046002100000002002700039000000000042043500000060033002100000003404700039000000000034043500000028030000390000000000370435000013f20070009c0000471a0000813d0000006003700039000000400030043f000013700020009c000013700200804100000040022002100000000001070433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000047200000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000001020000290000137302200197000000400310003900000000002304350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c0000471a0000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000100200190000047200000613d000000000101043b0000137301100197000000000001042d000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000100001900004dbe000104300000006402700039000013c00300004100000000003204350000004402700039000013c1030000410000000000320435000000240270003900000025030000390000000000320435000013bf020000410000000000270435000000040270003900000020030000390000000000320435000013700070009c00001370070080410000004001700210000013c2011001c700004dbe000104300000004402700039000013be03000041000000000032043500000024027000390000001e030000390000000000320435000013bf020000410000000000270435000000040270003900000020030000390000000000320435000013700070009c00001370070080410000004001700210000013b0011001c700004dbe00010430000000000001004b000047540000613d000000000002004b0000475e0000613d000000000003004b0000475e0000613d00000000041300a900000000051400d9000000000035004b000047720000c13d00000000033400d9000000000013004b000047780000c13d00000000012400d9000000000001042d000000400100043d00000064021000390000140803000041000000000032043500000044021000390000140903000041000000000032043500000024021000390000002503000039000047670000013d000000400100043d000000640210003900001406030000410000000000320435000000440210003900001407030000410000000000320435000000240210003900000028030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe00010430000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000000400100043d000000440210003900001405030000410000000000320435000000240210003900000014030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe0001043000060000000000020000000006020019000000400c00043d0000000407c00039000000000001004b0000482b0000613d000000000006004b000048380000613d000000000003004b000048380000613d0000140a0200004100000000002c04350000137302400197000000000027043500000000040004140000137302500197000000040020008c000047a00000c13d000000010b0000310000002000b0008c000000200400003900000000040b4019000047d30000013d000100000001001d000200000003001d000300000006001d0000137000c0009c000013700300004100000000030c40190000004003300210000013700040009c0000137004008041000000c001400210000000000131019f000013b2011001c700040000000c001d4dbc4db70000040f000000040c00002900000000030100190000006003300270000013700b3001970000002000b0008c000000200400003900000000040b40190000001f0640018f000000200740019000000000057c0019000047bf0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000047bb0000c13d000000000006004b000047cc0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f000000000065043500010000000b001f00030000000103550000000100200190000048580000613d0000000306000029000000020300002900000001010000290000001f02400039000000600220018f0000000008c20019000000000028004b00000000020000390000000102004039000013ab0080009c0000484a0000213d00000001002001900000484a0000c13d000000400080043f0000002000b0008c000048500000413d00000000050c0433000027100050008c000048250000213d0000000004000415000000050440008a0000000504400210000027100050008c00000000070000190000000002000019000047fe0000613d000027100550008900000000021500a900000000041200d9000000000054004b000048250000c13d00000000045200d9000000000014004b000048150000c13d0000000004000415000000060440008a0000000504400210000000000002004b000048100000613d0000000004000415000000060440008a000000050440021000000000073200a900000000052700d9000000000035004b000048250000c13d00000000053700d9000000000025004b000048150000c13d0000000504400270000000000407001f00002710046000c900000000056400d9000027100050008c000048250000c13d000027100540011a000000000065004b000048150000c13d000000000042001a000048250000413d000000000142001a000048520000613d00000000011700d9000000000001042d0000000007000019000000000200001900000000053700d9000000000025004b000048010000613d000000440280003900001405030000410000000000320435000000240280003900000014030000390000000000320435000013bf020000410000000000280435000000040280003900000020030000390000000000320435000013700080009c00001370080080410000004001800210000013b0011001c700004dbe00010430000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000013bf0200004100000000002c0435000000200200003900000000002704350000006401c000390000140b0200004100000000002104350000004401c000390000140c0200004100000000002104350000002401c000390000002b02000039000048440000013d000013bf0200004100000000002c0435000000200200003900000000002704350000006401c00039000014060200004100000000002104350000004401c00039000014070200004100000000002104350000002401c00039000000280200003900000000002104350000137000c0009c000013700c0080410000004001c00210000013c2011001c700004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000100001900004dbe00010430000013d201000041000000000010043f0000001201000039000000040010043f000013b20100004100004dbe000104300000001f05b0018f0000137206b00198000000400200043d0000000004620019000048630000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b0000485f0000c13d000000000005004b000048700000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001b00210000013700020009c00001370020080410000004002200210000000000121019f00004dbe0001043000040000000000020000000007020019000000400c00043d0000000406c00039000000000001004b000049140000613d000000000007004b000049210000613d000000000003004b000049210000613d0000140a0200004100000000002c04350000137302400197000000000026043500000000040004140000137302500197000000040020008c0000488d0000c13d000000010b0000310000002000b0008c000000200400003900000000040b4019000048c00000013d000100000007001d000200000001001d000300000003001d0000137000c0009c000013700300004100000000030c40190000004003300210000013700040009c0000137004008041000000c001400210000000000131019f000013b2011001c700040000000c001d4dbc4db70000040f000000040c00002900000000030100190000006003300270000013700b3001970000002000b0008c000000200400003900000000040b40190000001f0640018f000000200740019000000000057c0019000048ac0000613d000000000801034f00000000090c0019000000008a08043c0000000009a90436000000000059004b000048a80000c13d000000000006004b000048b90000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f000000000065043500010000000b001f000300000001035500000001002001900000493b0000613d0000000303000029000000020100002900000001070000290000001f02400039000000600220018f0000000008c20019000000000028004b00000000020000390000000102004039000013ab0080009c000049330000213d0000000100200190000049330000c13d000000400080043f0000002000b0008c000049390000413d00000000041700a900000000027400d9000000000012004b000048f80000c13d00000000021400d9000000000072004b000048fe0000c13d00000000060c0433000000000004004b000048df0000613d00002710024000c900000000054200d9000027100050008c000048f80000c13d000027100520011a000000000045004b000048e30000613d000048fe0000013d0000000002000019000027100520011a000000000045004b000048fe0000c13d000000000413004b000048f80000413d000027100060008c000048f80000213d0000490e0000613d000027100560008900000000074500a9000000000013004b000048ef0000613d00000000064700d9000000000056004b000048f80000c13d00000000055700d9000000000045004b000048fe0000c13d000000000007004b0000490e0000613d00000000017200d9000000010110003a000048f80000613d000000000001042d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe00010430000000440280003900001405030000410000000000320435000000240280003900000014030000390000000000320435000013bf020000410000000000280435000000040280003900000020030000390000000000320435000013700080009c00001370080080410000004001800210000013b0011001c700004dbe00010430000013d201000041000000000010043f0000001201000039000000040010043f000013b20100004100004dbe00010430000013bf0200004100000000002c0435000000200200003900000000002604350000006401c000390000140d0200004100000000002104350000004401c000390000140e0200004100000000002104350000002401c000390000002c020000390000492d0000013d000013bf0200004100000000002c0435000000200200003900000000002604350000006401c00039000014060200004100000000002104350000004401c00039000014070200004100000000002104350000002401c00039000000280200003900000000002104350000137000c0009c000013700c0080410000004001c00210000013c2011001c700004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000000000100001900004dbe000104300000001f05b0018f0000137206b00198000000400200043d0000000004620019000049460000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000049420000c13d000000000005004b000049530000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001b00210000013700020009c00001370020080410000004002200210000000000121019f00004dbe000104300010000000000002000400000001001d000d00000003001d0000000031030434000300000003001d000000010010008c00004b1d0000a13d000013df0010009c00004ad60000813d00000005031002100000003f04300039000013b404400197000000400500043d0000000004450019000f00000005001d000000000054004b00000000050000390000000105004039000013ab0040009c00004ad60000213d000000010050019000004ad60000c13d000000400040043f0000000f040000290000000001140436000e00000001001d0000001f0130018f000000000003004b0000497e0000613d0000000e05000029000000000335001900000000040000310000000204400367000000004604043c0000000005650436000000000035004b0000497a0000c13d000000000001004b0000000f010000290000000001010433000000000001004b00004ad00000613d0000000e0100002900000000002104350000000d010000290000000001010433000000000001004b00004ac60000613d0000000402000029000c13730020019b0000000005000019000000010210008a000000000025004b00004acc0000813d000000000051004b00004ad00000a13d0000000103500039000000000031004b00004ad00000a13d0000000501500210000800000001001d000000030610002900000000010604330000137308100197000000400100043d0000000504300210000000030740002900000000020704330000137302200197000000000028004b00004adc0000613d000b00000005001d000500000004001d001000000003001d000000000402001900000000020400190000000002084019000000000002004b00004aef0000613d000600000007001d000700000006001d000000600320021000000020021000390000000000320435000000000048004b000a00000008001d000900000004001d0000000003040019000000000308201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00004ad60000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000004ace0000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000c0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00004ad60000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000004ace0000613d000000000201043b000000400a00043d000013fb0100004100000000051a043600000000010004140000137302200197000000040020008c00004a020000c13d0000000103000031000000600030008c0000006004000039000000000403401900004a300000013d000100000005001d0000137000a0009c000013700300004100000000030a40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f00001378011001c700020000000a001d4dbc4db70000040f000000020a000029000000000301001900000060033002700000137003300197000000600030008c00000060040000390000000004034019000000600640019000000000056a001900004a1e0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00004a1a0000c13d0000001f0740019000004a2b0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000004aff0000613d00000001050000290000001f01400039000000e00210018f0000000001a20019000000000021004b00000000020000390000000102004039000013ab0010009c00004ad60000213d000000010020019000004ad60000c13d000000400010043f000000600030008c00004ace0000413d00000000020a0433000013fc0020009c00004ace0000213d0000000005050433000013fc0050009c00004ace0000213d0000004003a000390000000003030433000013700030009c00004ace0000213d00000009040000290000000a0040006b00000000060500190000000006022019000000000502a0190000000f0200002900000000020204330000000b04000029000000000042004b000000100300002900004ad00000a13d0000000d020000290000000002020433000000000042004b00004ad00000a13d000000000032004b00004ad00000a13d000000070200002900000000020204330000137302200197000000060300002900000000030304330000137304300197000000000042004b00004adc0000613d000a00000006001d00000000030400190000000003024019000000000003004b00004aef0000613d000b00000005001d00000008060000290000000e056000290000000005050433000900000005001d000000600530021000000020031000390000000000530435000000000042004b000000000204a01900000060022002100000003404100039000000000024043500000028020000390000000000210435000013f30010009c00004ad60000213d0000006002100039000000400020043f000013700030009c000013700300804100000040023002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f000000010020019000004ace0000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000c0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00004ad60000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f00000001002001900000000b0200002900004ace0000613d000000000101043b000013730410019700000009010000290000000a0300002900000004050000294dbc47890000040f0000000f0200002900000000020204330000001003000029000000000032004b00004ad00000a13d00000005040000290000000e0240002900000000001204350000000d010000290000000001010433000000000001004b00000000050300190000498c0000c13d000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe000104300000000f01000029000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe000104300000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe000104300000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900004b0a0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00004b060000c13d000000000005004b00004b170000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d0000004402100039000013fd0300004100004af10000013d000f000000000002000900000003001d0000000043030434000300000004001d000000010030008c00004d8f0000a13d000013df0030009c00004d050000813d00000005043002100000003f05400039000013b405500197000000400600043d0000000005560019000a00000006001d000000000065004b00000000060000390000000106004039000013ab0050009c00004d050000213d000000010060019000004d050000c13d000000400050043f0000000a050000290000000003350436000800000003001d0000001f0340018f000000000004004b00004b450000613d0000000806000029000000000446001900000000050000310000000205500367000000005705043c0000000006760436000000000046004b00004b410000c13d000000000003004b0000000a030000290000000003030433000000000003004b00004d110000613d00000005033002100000000a03300029000000000023043500000009020000290000000002020433000000000002004b00004d110000613d000000010320008c00004d010000613d000c13730010019b000f0002002000920000000f0030006b00004d110000213d000000090100002900000000010104330000000f0010006c00004d0b0000a13d000000000031004b00004d0b0000a13d0000000f010000290000000504100210000000030640002900000000010604330000137308100197000000400100043d0000000505300210000000030750002900000000020704330000137302200197000000000028004b00004d1d0000613d000500000005001d000e00000003001d000000000502001900000000020500190000000002084019000000000002004b00004d300000613d000600000007001d000700000006001d000400000004001d000000600320021000000020021000390000000000320435000000000058004b000b00000005001d0000000003050019000000000308201900000060033002100000003404100039000000000034043500000028030000390000000000310435000013f30010009c00004d050000213d0000006003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000801002000039000d00000008001d4dbc4db70000040f000000010020019000004d030000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000c0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00004d050000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000d05000029000000010020019000004d030000613d000000000201043b000000400a00043d000013fb0100004100000000061a043600000000010004140000137302200197000000040020008c00004bcc0000c13d0000000103000031000000600030008c0000006004000039000000000403401900004bfb0000013d000100000006001d0000137000a0009c000013700300004100000000030a40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f00001378011001c700020000000a001d4dbc4db70000040f000000020a000029000000000301001900000060033002700000137003300197000000600030008c00000060040000390000000004034019000000600640019000000000056a001900004be80000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00004be40000c13d0000001f0740019000004bf50000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000004d650000613d0000000d0500002900000001060000290000001f01400039000000e00210018f0000000001a20019000000000021004b00000000020000390000000102004039000013ab0010009c00004d050000213d000000010020019000004d050000c13d000000400010043f000000600030008c00004d030000413d00000000020a0433000013fc0020009c00004d030000213d0000000006060433000013fc0060009c00004d030000213d0000004003a000390000000003030433000013700030009c00004d030000213d0000000b0050006c00000000030600190000000003022019000d00000003001d000000000602a019000000090200002900000000020204330000000f0020006c0000000e0300002900004d0b0000a13d000000000032004b00004d0b0000a13d000000070200002900000000020204330000137302200197000000060300002900000000030304330000137304300197000000000042004b00004d1d0000613d00000000030400190000000003024019000000000003004b00004d300000613d000000600530021000000020031000390000000000530435000000000042004b000000000204a01900000060022002100000003404100039000000000024043500000028020000390000000000210435000013f30010009c00004d050000213d0000006002100039000000400020043f000013700030009c000013700300804100000040023002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c70000801002000039000b00000006001d4dbc4db70000040f000000010020019000004d030000613d000000000201043b000000400100043d000000a003100039000013f40400004100000000004304350000008003100039000013f50400004100000000004304350000006003100039000000000023043500000040021000390000000c0300002900000000003204350000002002100039000013f6030000410000000000320435000000a0030000390000000000310435000013e80010009c00004d050000213d000000c003100039000000400030043f000013700020009c000013700200804100000040022002100000000001010433000013700010009c00001370010080410000006001100210000000000121019f0000000002000414000013700020009c0000137002008041000000c002200210000000000112019f000013b9011001c700008010020000394dbc4db70000040f0000000b05000029000000010020019000004d030000613d000000000401043b0000000a0100002900000000010104330000000e0010006c00004d0b0000a13d00000005020000290000000803200029000000400a00043d0000000401a000390000000008030433000000000008004b00004d460000613d000000000005004b0000000c0200002900004d530000613d0000000d0000006b00004d530000613d00001373034001970000140a0400004100000000004a043500000000003104350000000001000414000000040020008c00004c910000c13d0000000103000031000000200030008c0000002004000039000000000403401900004cc00000013d000600000008001d0000137000a0009c000013700300004100000000030a40190000004003300210000013700010009c0000137001008041000000c001100210000000000131019f000013b2011001c700070000000a001d4dbc4db70000040f000000070a000029000000000301001900000060033002700000137003300197000000200030008c00000020040000390000000004034019000000200640019000000000056a001900004cad0000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b00004ca90000c13d0000001f0740019000004cba0000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f0003000000010355000000010020019000004d710000613d0000000b0500002900000006080000290000001f01400039000000600210018f0000000001a20019000000000021004b00000000020000390000000102004039000013ab0010009c00004d050000213d000000010020019000004d050000c13d000000400010043f000000200030008c00004d030000413d00000000045800a900000000025400d9000000000082004b0000000e0700002900004d110000c13d00000000028400d9000000000052004b00004d170000c13d00000000030a0433000000000004004b00004ce00000613d00002710024000c900000000054200d9000027100050008c00004d110000c13d000027100520011a000000000045004b00004ce40000613d00004d170000013d0000000002000019000027100520011a000000000045004b00004d170000c13d0000000d0480006b00004d110000413d000027100030008c00004d110000213d00004d400000613d000027100530008900000000034500a90000000d0080006b00004cf00000613d00000000064300d9000000000056004b00004d110000c13d00000000055300d9000000000045004b00004d170000c13d000000000003004b00004d400000613d0000000a0100002900000000010104330000000f0010006c00004d0b0000a13d0000000404000029000000080140002900000000023200d900000001022000390000000000210435000000010370008c000000000207001900004b540000c13d0000000a01000029000000000001042d000000000100001900004dbe00010430000013d201000041000000000010043f0000004101000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000003201000039000000040010043f000013b20100004100004dbe00010430000013d201000041000000000010043f0000001101000039000000040010043f000013b20100004100004dbe000104300000004402100039000014050300004100000000003204350000002402100039000000140300003900004d350000013d0000006402100039000013c00300004100000000003204350000004402100039000013c1030000410000000000320435000000240210003900000025030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013c2011001c700004dbe000104300000004402100039000013be03000041000000000032043500000024021000390000001e030000390000000000320435000013bf020000410000000000210435000000040210003900000020030000390000000000320435000013700010009c00001370010080410000004001100210000013b0011001c700004dbe00010430000013d201000041000000000010043f0000001201000039000000040010043f000013b20100004100004dbe00010430000013bf0200004100000000002a0435000000200200003900000000002104350000006401a000390000140d0200004100000000002104350000004401a000390000140e0200004100000000002104350000002401a000390000002c0200003900004d5f0000013d000013bf0200004100000000002a0435000000200200003900000000002104350000006401a00039000014060200004100000000002104350000004401a00039000014070200004100000000002104350000002401a00039000000280200003900000000002104350000137000a0009c000013700a0080410000004001a00210000013c2011001c700004dbe000104300000001f0530018f0000137206300198000000400200043d000000000462001900004d7c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00004d6c0000c13d00004d7c0000013d0000001f0530018f0000137206300198000000400200043d000000000462001900004d7c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b00004d780000c13d000000000005004b00004d890000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000013700020009c00001370020080410000004002200210000000000112019f00004dbe00010430000000400100043d0000004402100039000013fd0300004100004d320000013d000000000001042f00000000050100190000000000200443000000050030008c00004da20000413d000000040100003900000000020000190000000506200210000000000664001900000005066002700000000006060031000000000161043a0000000102200039000000000031004b00004d9a0000413d000013700030009c000013700300804100000060013002100000000002000414000013700020009c0000137002008041000000c002200210000000000112019f0000140f011001c700000000020500194dbc4db70000040f000000010020019000004db10000613d000000000101043b000000000001042d000000000001042f00004db5002104210000000102000039000000000001042d0000000002000019000000000001042d00004dba002104230000000102000039000000000001042d0000000002000019000000000001042d00004dbc0000043200004dbd0001042e00004dbe00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000c0000001000000000000000000310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000030b4eda00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000ad5c464700000000000000000000000000000000000000000000000000000000d06ca61e00000000000000000000000000000000000000000000000000000000ef94387300000000000000000000000000000000000000000000000000000000f369fff600000000000000000000000000000000000000000000000000000000f369fff700000000000000000000000000000000000000000000000000000000fb3bdb4100000000000000000000000000000000000000000000000000000000fccc281300000000000000000000000000000000000000000000000000000000ef94387400000000000000000000000000000000000000000000000000000000f305d71900000000000000000000000000000000000000000000000000000000e8e336ff00000000000000000000000000000000000000000000000000000000e8e3370000000000000000000000000000000000000000000000000000000000ea326d0a00000000000000000000000000000000000000000000000000000000d06ca61f00000000000000000000000000000000000000000000000000000000ded9382a00000000000000000000000000000000000000000000000000000000baa2abdd00000000000000000000000000000000000000000000000000000000c45a015400000000000000000000000000000000000000000000000000000000c45a015500000000000000000000000000000000000000000000000000000000caced41b00000000000000000000000000000000000000000000000000000000baa2abde00000000000000000000000000000000000000000000000000000000c2ee3a0800000000000000000000000000000000000000000000000000000000b317532f00000000000000000000000000000000000000000000000000000000b317533000000000000000000000000000000000000000000000000000000000b5306a5200000000000000000000000000000000000000000000000000000000ad5c464800000000000000000000000000000000000000000000000000000000ad615dec000000000000000000000000000000000000000000000000000000004a25d949000000000000000000000000000000000000000000000000000000007fce8fec000000000000000000000000000000000000000000000000000000008803dbed000000000000000000000000000000000000000000000000000000008803dbee000000000000000000000000000000000000000000000000000000009470dbea00000000000000000000000000000000000000000000000000000000ac72d40c000000000000000000000000000000000000000000000000000000007fce8fed000000000000000000000000000000000000000000000000000000007ff36ab50000000000000000000000000000000000000000000000000000000051257b3b0000000000000000000000000000000000000000000000000000000051257b3c000000000000000000000000000000000000000000000000000000007836d201000000000000000000000000000000000000000000000000000000004a25d94a0000000000000000000000000000000000000000000000000000000050838b34000000000000000000000000000000000000000000000000000000001f00ca73000000000000000000000000000000000000000000000000000000002a672bd5000000000000000000000000000000000000000000000000000000002a672bd60000000000000000000000000000000000000000000000000000000038ed1739000000000000000000000000000000000000000000000000000000001f00ca74000000000000000000000000000000000000000000000000000000002195995c00000000000000000000000000000000000000000000000000000000152dd62200000000000000000000000000000000000000000000000000000000152dd6230000000000000000000000000000000000000000000000000000000018cbafe50000000000000000000000000000000000000000000000000000000002751cec0000000000000000000000000000000000000000000000000000000011c14f640000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d95539132020000020000000000000000000000000000000400000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000089afcb4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000080000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b8302000002000000000000000000000000000000240000000000000000000000002e1a7d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffdf0200000000000000000000000000000000000000000000000000000000000000b8a6abab51386a3071fb438ebb04cc730ccf097f4b26db380a28d6ad585ab71300000000000000000000000000000000000000400000000000000000000000009f7a0a3f000000000000000000000000000000000000000000000000000000001010b17000000000000000000000000000000000000000000000000000000000556e697377617056324c6962726172793a205a45524f5f41444452455353000008c379a0000000000000000000000000000000000000000000000000000000004553534553000000000000000000000000000000000000000000000000000000556e697377617056324c6962726172793a204944454e544943414c5f414444520000000000000000000000000000000000000084000000000000000000000000d0e30db0000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000004000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440000000000000000000000006a6278420000000000000000000000000000000000000000000000000000000020455448207472616e73666572206661696c65640000000000000000000000005472616e7366657248656c7065723a3a736166655472616e736665724554483a0000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0000000000000000000000000000000000000000000000000de0b6b3a7640000d505accf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e40000000000000000000000000000000000000000000000000000000000000020000000000000000000000000bc34e2e900000000000000000000000000000000000000000000000000000000640b72aee190d6ac2e748df93827ab24ab42fdb52e42e3c89f1559f749ad183c4e487b7100000000000000000000000000000000000000000000000000000000b40d0368000000000000000000000000000000000000000000000000000000001cc03654c8d84a558bb1ef5e144119415c18d227f08f8ade6f3fd4e9aaaf9b06fff6cae900000000000000000000000000000000000000000000000000000000f1dd93140000000000000000000000000000000000000000000000000000000083020aff000000000000000000000000000000000000000000000000000000008eb0a36d3e3c933d02dc9675dd46e61769bf93ee7948c15314d12aaf2f997fa89a3ee1c80000000000000000000000000000000000000000000000000000000057415354000000000000000000000000000000000000000000000000000000007a7bb3c6000000000000000000000000000000000000000000000000000000009c9340e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000800000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000001000000000000000006d81bf400000000000000000000000000000000000000000000000000000000f242432a0000000000000000000000000000000000000000000000000000000042842e0e000000000000000000000000000000000000000000000000000000004c4c45de0000000000000000000000000000000000000000000000000000000070a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e86937eb400000000000000000000000000000000000000000000000000000000e9f48e9a00000000000000000000000000000000000000000000000000000000416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa0000000000000000000000000000000000000000000000000ffffffffffffff9fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470010004df694643e2d7e17535f16c21e9d1698b06c2ef330166830639b23b7f432020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494000000000000000000000000000000000000000000000000ffffffffffffff5f022c0d9f00000000000000000000000000000000000000000000000000000000616e7366657246726f6d206661696c65640000000000000000000000000000005472616e7366657248656c7065723a3a7472616e7366657246726f6d3a2074720902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffff556e697377617056324c6962726172793a20494e56414c49445f504154480000000000000000000000000000000000000000000000000000ffffffffffffff80616e73666572206661696c6564000000000000000000000000000000000000005472616e7366657248656c7065723a3a736166655472616e736665723a207472000000000000000000000000000000000000000000000000ffffffffffffff60000000000000000000000000000000000000000000000000ffffffffffffffe0e6a4390500000000000000000000000000000000000000000000000000000000c9c653960000000000000000000000000000000000000000000000000000000064732d6d6174682d6d756c2d6f766572666c6f770000000000000000000000004951554944495459000000000000000000000000000000000000000000000000556e697377617056324c6962726172793a20494e53554646494349454e545f4c4d4f554e54000000000000000000000000000000000000000000000000000000556e697377617056324c6962726172793a20494e53554646494349454e545f418c232838000000000000000000000000000000000000000000000000000000004e5055545f414d4f554e54000000000000000000000000000000000000000000556e697377617056324c6962726172793a20494e53554646494349454e545f4955545055545f414d4f554e540000000000000000000000000000000000000000556e697377617056324c6962726172793a20494e53554646494349454e545f4f02000002000000000000000000000000000000000000000000000000000000000c4c34200345805f7a1300d43dbbc0eb4070e3a8f417a8cb5af65b71fae0886a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008cc9c8f3890b16264a70cd7b35fa52fe6e11984a000000000000000000000000e642f7d1f07af75ed8198f0b4d68f14244baaab5
-----Decoded View---------------
Arg [0] : _factory (address): 0x8CC9c8f3890B16264A70Cd7b35FA52fe6E11984A
Arg [1] : _WETH (address): 0xE642F7D1F07aF75ed8198F0b4D68F14244bAAAB5
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008cc9c8f3890b16264a70cd7b35fa52fe6e11984a
Arg [1] : 000000000000000000000000e642f7d1f07af75ed8198f0b4d68f14244baaab5
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.