Source Code
Overview
ETH Balance
0.06 ETH
Token Holdings
More Info
ContractCreator
TokenTracker
Multichain Info
N/A
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0 ETH | ||||
5061433 | 16 days ago | 0.02 ETH | ||||
5061253 | 16 days ago | 0 ETH | ||||
5061253 | 16 days ago | 0 ETH | ||||
5061253 | 16 days ago | 0 ETH | ||||
5061253 | 16 days ago | 0 ETH | ||||
5061253 | 16 days ago | 0 ETH | ||||
5061253 | 16 days ago | 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 Source Code Verified (Exact Match)
Contract Name:
Placeholder
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.7
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.0; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/utils/Base64.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; contract Placeholder is ERC721, Pausable, ReentrancyGuard, Ownable { using Strings for uint256; uint256 public constant MAX_SUPPLY = 10000; uint256 public constant PRICE = 0.02 ether; uint256 private _currentTokenId = 0; struct TokenData { string composition; string palette; string pattern; uint256 complexity; uint256 timestamp; string primaryColor; string secondaryColor; bool animated; uint256 generation; } mapping(uint256 => TokenData) private tokenData; string[] private compositions = [ "GRID", "RADIAL", "ORBITAL", "SPIRAL", "TESSELLATION", "FRACTAL", "VORONOI", "FIBONACCI" ]; string[] private palettes = [ "MONDRIAN", "BAUHAUS", "SUPREMATISM", "CONSTRUCTIVIST", "MINIMALIST", "MODERNIST", "ABSTRACT", "GEOMETRIC" ]; string[] private patterns = [ "DOTS", "LINES", "CROSSES", "TRIANGLES", "SQUARES", "CIRCLES", "WAVES", "NOISE" ]; string[] private primaryColors = [ "#D92B2B", "#2B54D9", "#E01A4F", "#0C7C59", "#D40920", "#2176FF", "#E6B31E", "#161616" ]; string[] private secondaryColors = [ "#2B54D9", "#D92B2B", "#0C7C59", "#E01A4F", "#2176FF", "#D40920", "#161616", "#E6B31E" ]; constructor() ERC721("Placeholder", "PLACE") Pausable() ReentrancyGuard() { } function exists(uint256 tokenId) public view returns (bool) { return ownerOf(tokenId) != address(0); } function totalSupply() public view returns (uint256) { return _currentTokenId; } function mint(uint256 count) public payable whenNotPaused nonReentrant { require(count > 0 && count <= 2, "Count must be 1 or 2"); require(_currentTokenId + count <= MAX_SUPPLY, "Exceeds max supply"); require(msg.value >= PRICE * count, "Insufficient payment"); for(uint256 i = 0; i < count; i++) { _currentTokenId = _currentTokenId + 1; _generateTokenData(_currentTokenId); _safeMint(msg.sender, _currentTokenId); } } function generateSVG(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( _generateSVGHeader(data), _generateSVGBody(data), '</svg>' )); } function _generateSVGHeader(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">', '<defs>', _generateGradients(data), _generatePatterns(data), '</defs>' )); } function _generateSVGBody(TokenData memory data) private pure returns (string memory) { if (keccak256(bytes(data.composition)) == keccak256(bytes("GRID"))) { return _generateGridComposition(data); } else if (keccak256(bytes(data.composition)) == keccak256(bytes("RADIAL"))) { return _generateRadialComposition(data); } return _generateOrbitalComposition(data); } function _generateGradients(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">', '<stop offset="0%" style="stop-color:', data.primaryColor, '"/>', '<stop offset="100%" style="stop-color:', data.secondaryColor, '"/>', '</linearGradient>' )); } function _generatePatterns(TokenData memory data) private pure returns (string memory) { bytes32 patternHash = keccak256(bytes(data.pattern)); if (patternHash == keccak256(bytes("LINES"))) { return _generateLinesPattern(data); } else if (patternHash == keccak256(bytes("DOTS"))) { return _generateDotsPattern(data); } return _generateDefaultPattern(data); } function _generateLinesPattern(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '<pattern id="pattern1" patternUnits="userSpaceOnUse" width="20" height="20">', _generateLines(data.primaryColor), '</pattern>' )); } function _generateLines(string memory color) private pure returns (string memory) { return string(abi.encodePacked( '<line x1="0" y1="0" x2="0" y2="20" stroke="', color, '" stroke-width="0.5"/>', '<line x1="4" y1="0" x2="4" y2="20" stroke="', color, '" stroke-width="0.5"/>', '<line x1="8" y1="0" x2="8" y2="20" stroke="', color, '" stroke-width="0.5"/>', '<line x1="12" y1="0" x2="12" y2="20" stroke="', color, '" stroke-width="0.5"/>', '<line x1="16" y1="0" x2="16" y2="20" stroke="', color, '" stroke-width="0.5"/>' )); } function _generateDotsPattern(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '<pattern id="pattern1" patternUnits="userSpaceOnUse" width="20" height="20">', '<circle cx="10" cy="10" r="2" fill="', data.primaryColor, '"/>', '</pattern>' )); } function _generateDefaultPattern(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '<pattern id="pattern1" patternUnits="userSpaceOnUse" width="20" height="20">', '<rect width="10" height="10" fill="', data.primaryColor, '"/>', '<rect x="10" y="10" width="10" height="10" fill="', data.primaryColor, '"/>', '</pattern>' )); } function _generateGridComposition(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( _generateGridBackground(), _generateGridRects(data) )); } function _generateGridBackground() private pure returns (string memory) { return '<rect width="400" height="400" fill="#FFFFFF"/>'; } function _generateGridRects(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( _generateAnimatedRect(40, 40, 160, 160, "url(#grad1)", data.animated, "0s"), _generateAnimatedRect(220, 40, 100, 100, "url(#pattern1)", data.animated, "1s"), _generateAnimatedRect(40, 220, 100, 140, data.secondaryColor, data.animated, "2s"), '<rect x="160" y="160" width="200" height="200" fill="', data.primaryColor, '" opacity="0.8"/>' )); } function _generateAnimatedRect( uint x, uint y, uint width, uint height, string memory fill, bool animated, string memory delay ) private pure returns (string memory) { return string(abi.encodePacked( '<rect x="', x.toString(), '" y="', y.toString(), '" width="', width.toString(), '" height="', height.toString(), '" fill="', fill, '">', animated ? string(abi.encodePacked( '<animate attributeName="opacity" values="0.5;1;0.5" dur="3s" begin="', delay, '" repeatCount="indefinite"/>' )) : '', '</rect>' )); } function _generateRadialComposition(TokenData memory data) private pure returns (string memory) { string memory background = '<rect width="400" height="400" fill="#F7F7F7"/>'; string memory groupStart = '<g transform="translate(200,200)">'; string memory circles = _generateRadialCircles(data); string memory groupEnd = '</g>'; return string(abi.encodePacked(background, groupStart, circles, groupEnd)); } function _generateRadialCircles(TokenData memory data) private pure returns (string memory) { string memory circle1 = _generateRadialCircle(160, data.primaryColor, "2", "2;4;2", "0s", data.animated); string memory circle2 = _generateRadialCircle(120, data.secondaryColor, "3", "3;6;3", "1s", data.animated); string memory circle3 = _generateRadialCircle(80, "url(#grad1)", "4", "4;8;4", "2s", data.animated); string memory centerCircle = '<circle r="40" fill="url(#grad1)"/>'; return string(abi.encodePacked(circle1, circle2, circle3, centerCircle)); } function _generateRadialCircle( uint256 radius, string memory color, string memory strokeWidth, string memory animationValues, string memory delay, bool animated ) private pure returns (string memory) { string memory circleStart = _generateCircleStart(radius, color, strokeWidth); if (animated) { string memory animation = _generateRadialAnimation(animationValues, delay); return string(abi.encodePacked(circleStart, animation, '</circle>')); } return string(abi.encodePacked(circleStart, '</circle>')); } function _generateCircleStart( uint256 radius, string memory color, string memory strokeWidth ) private pure returns (string memory) { return string(abi.encodePacked( _generateCircleStartPart1(radius), _generateCircleStartPart2(color, strokeWidth) )); } function _generateCircleStartPart1(uint256 radius) private pure returns (string memory) { return string(abi.encodePacked('<circle r="', radius.toString())); } function _generateCircleStartPart2(string memory color, string memory strokeWidth) private pure returns (string memory) { return string(abi.encodePacked( '" fill="none" stroke="', color, '" stroke-width="', strokeWidth, '">' )); } function _generateRadialAnimation( string memory values, string memory delay ) private pure returns (string memory) { return string(abi.encodePacked( _generateAnimationPart1(values), _generateAnimationPart2(delay) )); } function _generateAnimationPart1(string memory values) private pure returns (string memory) { return string(abi.encodePacked( '<animate attributeName="stroke-width" values="', values )); } function _generateAnimationPart2(string memory delay) private pure returns (string memory) { return string(abi.encodePacked( '" dur="4s" begin="', delay, '" repeatCount="indefinite"/>' )); } function _generateOrbitalComposition(TokenData memory data) private pure returns (string memory) { string memory background = '<rect width="400" height="400" fill="#161616"/>'; string memory groupStart = '<g transform="translate(200,200)">'; string memory paths = _generateOrbitalPaths(data); string memory centerCircle = _generateOrbitalCenter(data); string memory groupEnd = '</g>'; return string(abi.encodePacked(background, groupStart, paths, centerCircle, groupEnd)); } function _generateOrbitalPaths(TokenData memory data) private pure returns (string memory) { string memory path1 = _generateOrbitalPath( 160, data.primaryColor, "45", "0,1000;1000,0;0,1000", "8s", data.animated ); string memory path2 = _generateOrbitalPath( 120, data.secondaryColor, "-45", "0,800;800,0;0,800", "6s", data.animated ); return string(abi.encodePacked(path1, path2)); } function _generateOrbitalPath( uint256 radius, string memory color, string memory rotation, string memory animationValues, string memory duration, bool animated ) private pure returns (string memory) { string memory pathDef = _generatePathDefinition(radius); string memory pathStart = _generatePathStart(pathDef, color, rotation); if (animated) { string memory animation = _generateOrbitalAnimation(animationValues, duration); return string(abi.encodePacked(pathStart, animation, '</path>')); } return string(abi.encodePacked(pathStart, '</path>')); } function _generatePathDefinition(uint256 radius) private pure returns (string memory) { return string(abi.encodePacked( _generatePathPart1(radius), _generatePathPart2(radius), _generatePathPart3(radius) )); } function _generatePathPart1(uint256 radius) private pure returns (string memory) { return string(abi.encodePacked('M 0,', radius.toString())); } function _generatePathPart2(uint256 radius) private pure returns (string memory) { string memory r = radius.toString(); return string(abi.encodePacked(' A ', r, ',', r, ' 0 0,1 0,-', r)); } function _generatePathPart3(uint256 radius) private pure returns (string memory) { string memory r = radius.toString(); return string(abi.encodePacked(' A ', r, ',', r, ' 0 0,1 0,', r)); } function _generatePathStart( string memory pathDef, string memory color, string memory rotation ) private pure returns (string memory) { return string(abi.encodePacked( _generatePathStartPart1(pathDef), _generatePathStartPart2(color, rotation) )); } function _generatePathStartPart1(string memory pathDef) private pure returns (string memory) { return string(abi.encodePacked('<path d="', pathDef)); } function _generatePathStartPart2(string memory color, string memory rotation) private pure returns (string memory) { return string(abi.encodePacked( '" fill="none" stroke="', color, '" stroke-width="2" transform="rotate(', rotation, ')">' )); } function _generateOrbitalAnimation( string memory values, string memory duration ) private pure returns (string memory) { return string(abi.encodePacked( _generateOrbitalAnimationPart1(values), _generateOrbitalAnimationPart2(duration) )); } function _generateOrbitalAnimationPart1(string memory values) private pure returns (string memory) { return string(abi.encodePacked( '<animate attributeName="stroke-dasharray" values="', values )); } function _generateOrbitalAnimationPart2(string memory duration) private pure returns (string memory) { return string(abi.encodePacked( '" dur="', duration, '" repeatCount="indefinite"/>' )); } function _generateOrbitalCenter(TokenData memory data) private pure returns (string memory) { if (data.animated) { return _generateAnimatedCenter(); } return '<circle r="60" fill="url(#grad1)"></circle>'; } function _generateAnimatedCenter() private pure returns (string memory) { return string(abi.encodePacked( '<circle r="60" fill="url(#grad1)">', '<animate attributeName="r" values="60;65;60" dur="4s" repeatCount="indefinite"/>', '</circle>' )); } function _generateTokenData(uint256 tokenId) private { bytes32 seed = keccak256(abi.encodePacked(block.timestamp, tokenId)); uint256 compositionIndex = uint256(keccak256(abi.encodePacked(seed, "composition"))) % compositions.length; uint256 paletteIndex = uint256(keccak256(abi.encodePacked(seed, "palette"))) % palettes.length; uint256 patternIndex = uint256(keccak256(abi.encodePacked(seed, "pattern"))) % patterns.length; uint256 complexity = (uint256(keccak256(abi.encodePacked(seed, "complexity"))) % 5) + 3; uint256 colorIndex1 = uint256(keccak256(abi.encodePacked(seed, "color1"))) % primaryColors.length; uint256 colorIndex2 = uint256(keccak256(abi.encodePacked(seed, "color2"))) % secondaryColors.length; bool animated = uint256(keccak256(abi.encodePacked(seed, "animated"))) % 2 == 0; tokenData[tokenId] = TokenData({ composition: compositions[compositionIndex], palette: palettes[paletteIndex], pattern: patterns[patternIndex], complexity: complexity, timestamp: block.timestamp, primaryColor: primaryColors[colorIndex1], secondaryColor: secondaryColors[colorIndex2], animated: animated, generation: tokenData[tokenId].generation }); } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function withdrawAll() public payable onlyOwner nonReentrant { require(address(this).balance > 0, "No balance to withdraw"); (bool success, ) = owner().call{value: address(this).balance}(""); require(success, "Transfer failed"); } function regenerate(uint256 tokenId) public payable whenNotPaused nonReentrant { require(exists(tokenId), "Token does not exist"); require(msg.sender == ownerOf(tokenId), "Must be owner"); require(msg.value >= PRICE, "Insufficient payment"); _generateTokenData(tokenId); tokenData[tokenId].generation += 1; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(exists(tokenId), "Token does not exist"); TokenData memory data = tokenData[tokenId]; string memory svg = generateSVG(data); string memory part1 = _generateJSONPart1(tokenId, svg); string memory part2 = _generateJSONPart2(data); string memory json = Base64.encode(bytes(string(abi.encodePacked(part1, part2)))); return string(abi.encodePacked('data:application/json;base64,', json)); } function _generateJSONPart1(uint256 tokenId, string memory svg) private pure returns (string memory) { return string(abi.encodePacked( '{"name": "Placeholder #', tokenId.toString(), '", "description": "A generative geometric art piece", ', '"image": "data:image/svg+xml;base64,', Base64.encode(bytes(svg)), '",' )); } function _generateJSONPart2(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '"attributes": [', _generateAttributes(data), ']}' )); } function _generateAttributes(TokenData memory data) private pure returns (string memory) { return string(abi.encodePacked( '{"trait_type": "Composition", "value": "', data.composition, '"},', '{"trait_type": "Palette", "value": "', data.palette, '"},', '{"trait_type": "Pattern", "value": "', data.pattern, '"},', '{"trait_type": "Complexity", "value": ', data.complexity.toString(), '},', '{"trait_type": "Animated", "value": ', data.animated ? 'true' : 'false', '}' )); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./extensions/IERC721Metadata.sol"; import "../../utils/Address.sol"; import "../../utils/Context.sol"; import "../../utils/Strings.sol"; import "../../utils/introspection/ERC165.sol"; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @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. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/Base64.sol) pragma solidity ^0.8.0; /** * @dev Provides a set of functions to operate with Base64 strings. * * _Available since v4.5._ */ library Base64 { /** * @dev Base64 Encoding/Decoding Table */ string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.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 functionCall(target, data, "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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(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) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(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) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason 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 { // 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.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 be 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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * 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.6.0) (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; import "../IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// 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); }
{ "evmVersion": "paris", "optimizer": { "enabled": true, "mode": "3" }, "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "detectMissingLibraries": false, "forceEVMLA": false, "enableEraVMExtensions": false, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"regenerate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
9c4d535b000000000000000000000000000000000000000000000000000000000000000001000bdb81ddbdcbc52d73f57558cc3a50c7bc39cbcff7ee46b961b0bf82ff0d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x0004000000000002001a000000000002000000600310027000000a94043001970003000000410355000200000001035500000a940030019d0000008003000039000c00000003001d000000400030043f0000000100200190000000270000c13d000000040040008c00001dff0000413d000000000201043b000000e00220027000000adc0020009c0000005b0000213d00000aee0020009c0000018e0000a13d00000aef0020009c000001c10000a13d00000af00020009c000002260000213d00000af30020009c000002620000613d00000af40020009c00001dff0000c13d0000000001000416000000000001004b00001dff0000c13d0000000601000039000000000101041a000000ff001001900000000001000039000000010100c039000000800010043f00000ba40100004100002a4b0001042e0000000001000416000000000001004b00001dff0000c13d0000000b01000039000000800010043f00000a9501000041000000a00010043f0000010001000039000000400010043f0000000501000039000000c00010043f00000a9601000041000000e00010043f000000000100041a000000010210019000000001011002700000007f0110618f0000001f0010008c00000000030000390000000103002039000000000032004b000000550000c13d000000200010008c000000480000413d00000a97020000410000001f01100039000000050110027000000a980110009a000000000000043f000000000002041b0000000102200039000000000012004b000000440000413d00000a9901000041000000000010041b0000000101000039000000000301041a000000010030019000000001023002700000007f0220618f0000001f0020008c00000000040000390000000104002039000000000343013f0000000100300190000000c10000613d00000b7c01000041000000000010043f0000002201000039000000040010043f00000b7d0100004100002a4c0001043000000add0020009c0000019f0000a13d00000ade0020009c000001da0000a13d00000adf0020009c000002410000213d00000ae20020009c0000026c0000613d00000ae30020009c00001dff0000c13d000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000101043b001800000001001d001400000001001d000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e00100198000004490000613d0000001401000029000000000010043f0000000a01000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b001300000001001d000000400100043d001400000001001d00000b050010009c000005ad0000213d00000014010000290000012006100039000000400060043f001700000001001d0000001301000029000000000101041a000000010210019000000001041002700000007f0440618f0000001f0040008c00000000030000390000000103002039000000000331013f0000000100300190000000550000c13d0000000000460435000000000002004b000005580000613d001100000004001d001200000006001d0000001301000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d0000001107000029000000000007004b000000000200001900000012060000290000055f0000613d00000014020000290000014003200039000000000101043b00000000020000190000000004230019000000000501041a000000000054043500000001011000390000002002200039000000000072004b000000b90000413d0000055f0000013d000000200020008c000000cc0000413d000000000010043f00000a9a030000410000001f02200039000000050220027000000a9b0220009a000000000003041b0000000103300039000000000023004b000000c80000413d00000a9c02000041000000000021041b0000000604000039000000000204041a00000bbe02200197000000000024041b0000000702000039000000000012041b0000000803000039000000000103041a000000000600041100000a9d02100197000000000262019f000000000023041b000000000200041400000a9e0510019700000a940020009c00000a9402008041000000c00120021000000a9f011001c70000800d02000039000000030300003900000aa0040000412a4a2a400000040f000000010020019000001dff0000613d0000000901000039000000000001041b000000400100043d001400000001001d00000aa10010009c000005ad0000813d00000014020000290000010001200039000000400010043f00000aa20020009c000005ad0000213d00000014030000290000014002300039000000400020043f000000040200003900000000002104350000000001130436000001200230003900000aa3030000410000000000320435000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000aa5040000410000000000430435000000060300003900000000003204350000000000210435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aa603000041000000000032043500000007020000390000000000210435000000140200002900000040022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aa703000041000000000032043500000006020000390000000000210435000000140200002900000060022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aa80300004100000000003204350000000c020000390000000000210435000000140200002900000080022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aa9030000410000000000320435000000070200003900000000002104350000001402000029000000a0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aaa030000410000000000320435000000070200003900000000002104350000001402000029000000c0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aab030000410000000000320435000000090200003900000000002104350000001402000029000000e00220003900000000001204350000000b03000039000000000103041a0000000802000039000000000023041b000000090010008c000006e30000413d00000aac0310009a00000aad0030009c000006e30000413d00000aae04000041001100000003001d000001660000013d0000001304000029000000000004041b0000001103000029000000000001041b0000000104400039000000000034004b000006e30000813d000000000104041a000000010010019000000001051002700000007f0550618f0000001f0050008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000000005004b000001630000613d0000001f0050008c0000000001040019000001620000a13d001200000005001d001300000004001d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b00000012020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b0000015f0000813d000000000003041b0000000103300039000000000023004b000001890000413d0000015f0000013d00000af80020009c000001ff0000213d00000afc0020009c000003040000613d00000afd0020009c000003be0000613d00000afe0020009c00001dff0000c13d000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000101043b2a4a204c0000040f000002bc0000013d00000ae70020009c000002170000213d00000aeb0020009c000003180000613d00000aec0020009c000003dc0000613d00000aed0020009c00001dff0000c13d0000000001000416000000000001004b00001dff0000c13d0000000801000039000000000101041a00000a9e021001970000000001000411000000000012004b0000039a0000c13d0000000602000039000000000302041a000000ff00300190000004010000c13d00000bbe0330019700000001033001bf000000000032041b000000800010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000ba8011001c70000800d02000039000000010300003900000ba904000041000004360000013d00000af50020009c000002de0000613d00000af60020009c000003830000613d00000af70020009c00001dff0000c13d0000000001000416000000000001004b00001dff0000c13d00000000010400192a4a201d0000040f001400000001001d001300000002001d001200000003001d000000400100043d001100000001001d2a4a202f0000040f000000110400002900000000000404350000001401000029000000130200002900000012030000292a4a20d30000040f000000000100001900002a4b0001042e00000ae40020009c000002e50000613d00000ae50020009c000003a30000613d00000ae60020009c00001dff0000c13d000000440040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000402100370000000000202043b001400000002001d00000a9e0020009c00001dff0000213d0000002401100370000000000201043b000000000002004b0000000001000039000000010100c039001300000002001d000000000012004b00001dff0000c13d0000000002000411000000140020006c0000046d0000c13d00000aff01000041000000800010043f0000002001000039000000840010043f0000001901000039000000a40010043f00000b9101000041000000c40010043f00000b920100004100002a4c0001043000000af90020009c0000032d0000613d00000afa0020009c000003f20000613d00000afb0020009c00001dff0000c13d0000000001000416000000000001004b00001dff0000c13d00000000010400192a4a201d0000040f001400000001001d001300000002001d0000000002030019001200000003001d00000000010004112a4a23010000040f2a4a20850000040f0000001401000029000000130200002900000012030000292a4a23960000040f000000000100001900002a4b0001042e00000ae80020009c000003560000613d00000ae90020009c000003fa0000613d00000aea0020009c00001dff0000c13d0000000001000416000000000001004b00001dff0000c13d0000000801000039000000000101041a00000a9e01100197000000800010043f00000ba40100004100002a4b0001042e00000af10020009c000002b40000613d00000af20020009c00001dff0000c13d000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000101043b00000a9e0010009c00001dff0000213d000000000001004b000004210000c13d00000aff01000041000000800010043f0000002001000039000000840010043f0000002a01000039000000a40010043f00000bae01000041000000c40010043f00000baf01000041000000e40010043f00000b020100004100002a4c0001043000000ae00020009c000002c30000613d00000ae10020009c00001dff0000c13d000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000601043b00000a9e0060009c00001dff0000213d0000000801000039000000000201041a00000a9e032001970000000005000411000000000053004b0000039a0000c13d000000000006004b0000045d0000c13d00000aff01000041000000800010043f0000002001000039000000840010043f0000002601000039000000a40010043f00000b0001000041000000c40010043f00000b0101000041000000e40010043f00000b020100004100002a4c00010430000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000101043b2a4a209c0000040f0000000101000039000002bc0000013d000000840040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000402100370000000000502043b00000a9e0050009c00001dff0000213d0000002402100370000000000202043b00000a9e0020009c00001dff0000213d0000006403100370000000000603043b00000ab10060009c00001dff0000213d0000002303600039000000000043004b00001dff0000813d0000000407600039000000000371034f000000000303043b00000ab10030009c000005ad0000213d0000001f0930003900000bbf099001970000003f0990003900000bbf0990019700000b8f0090009c000005ad0000213d0000008009900039000000400090043f000000800030043f00000000063600190000002406600039000000000046004b00001dff0000213d0000002004700039000000000641034f00000bbf073001980000001f0830018f000000a0047000390000029e0000613d000000a009000039000000000a06034f00000000ab0a043c0000000009b90436000000000049004b0000029a0000c13d000000000008004b000002ab0000613d000000000676034f0000000307800210000000000804043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000640435000000a00330003900000000000304350000004401100370000000000301043b000000800400003900000000010500192a4a20d30000040f000000000100001900002a4b0001042e000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000101043b2a4a209c0000040f000000400200043d000000000012043500000a940020009c00000a9402008041000000400120021000000b03011001c700002a4b0001042e000000440040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000402100370000000000202043b00000a9e0020009c00001dff0000213d0000002401100370000000000101043b001400000001001d00000a9e0010009c00001dff0000213d000000000020043f0000000501000039000000200010043f000000400200003900000000010000192a4a2a2b0000040f00000014020000292a4a20c30000040f000000000101041a000000ff001001900000000001000039000000010100c039000002bc0000013d0000000001000416000000000001004b00001dff0000c13d0000271001000039000000800010043f00000ba40100004100002a4b0001042e0000000001000416000000000001004b00001dff0000c13d0000000103000039000000000203041a000000010420019000000001012002700000007f0110618f0000001f0010008c00000000050000390000000105002039000000000552013f0000000100500190000000550000c13d000000800010043f000000000004004b0000040b0000613d000000000030043f000000000001004b0000000002000019000004100000613d00000a9a030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000002fc0000413d000004100000013d000000240040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000401100370000000000201043b00000b9e0020019800001dff0000c13d000000010100003900000b9f0220019700000bbb0020009c000004280000613d00000bbc0020009c000004280000613d00000bbd0020009c000000000100c019000000800010043f00000ba40100004100002a4b0001042e0000000001000416000000000001004b00001dff0000c13d0000000801000039000000000201041a00000a9e032001970000000005000411000000000053004b0000039a0000c13d00000a9d02200197000000000021041b000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000030300003900000aa0040000410000000006000019000004680000013d000000440040008c00001dff0000413d0000000002000416000000000002004b00001dff0000c13d0000000402100370000000000202043b001400000002001d00000a9e0020009c00001dff0000213d0000002401100370000000000101043b001300000001001d000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e01100198000004490000613d000000140010006b000004c50000c13d000000400100043d000000640210003900000bb7030000410000000000320435000000440210003900000bb803000041000000000032043500000024021000390000002103000039000004520000013d0000000801000039000000000101041a00000a9e011001970000000002000411000000000021004b0000039a0000c13d0000000701000039000000000201041a000000020020008c000003e80000613d0000000202000039000000000021041b00000ba501000041000000000010044300000000010004100000000400100443000000000100041400000a940010009c00000a9401008041000000c00110021000000b99011001c70000800a020000392a4a2a450000040f0000000100200190000006e20000613d000000000101043b000000000001004b0000049d0000c13d000000400100043d000000440210003900000ba703000041000000000032043500000024021000390000001603000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000b96011001c700002a4c000104300000000001000416000000000001004b00001dff0000c13d0000000801000039000000000101041a00000a9e021001970000000001000411000000000012004b0000039a0000c13d0000000602000039000000000302041a000000ff003001900000042b0000c13d00000aff01000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f00000bb201000041000000c40010043f00000b920100004100002a4c0001043000000aff01000041000000800010043f0000002001000039000000840010043f000000a40010043f00000bb001000041000000c40010043f00000b920100004100002a4c00010430000000240040008c00001dff0000413d0000000401100370000000000301043b0000000601000039000000000101041a000000ff00100190000004010000c13d0000000701000039000000000201041a000000020020008c000003e80000613d0000000202000039000000000021041b000000030130008a00000bc00010009c000004b20000213d00000aff01000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f00000ba301000041000000c40010043f00000b920100004100002a4c000104300000000001000416000000000001004b00001dff0000c13d000000000200041a000000010320019000000001012002700000007f0110618f0000001f0010008c00000000040000390000000104002039000000000442013f0000000100400190000000550000c13d000000800010043f000000000003004b0000040b0000613d000000000000043f000000000001004b0000000002000019000004100000613d00000a97030000410000000002000019000000000403041a000000a005200039000000000045043500000001033000390000002002200039000000000012004b000003d40000413d000004100000013d000000240040008c00001dff0000413d0000000401100370000000000301043b0000000601000039000000000101041a000000ff00100190000004010000c13d0000000702000039000000000102041a000000020010008c000004370000c13d00000aff01000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f00000bad01000041000000c40010043f00000b920100004100002a4c000104300000000001000416000000000001004b00001dff0000c13d0000000901000039000000000101041a000000800010043f00000ba40100004100002a4b0001042e0000000001000416000000000001004b00001dff0000c13d00000b9301000041000000800010043f00000ba40100004100002a4b0001042e00000aff01000041000000800010043f0000002001000039000000840010043f0000001001000039000000a40010043f00000baa01000041000000c40010043f00000b920100004100002a4c0001043000000bbe02200197000000a00020043f000000000001004b00000020020000390000000002006039000000200220003900000080010000392a4a203a0000040f000000400100043d001400000001001d00000080020000392a4a20080000040f0000001402000029000000000121004900000a940010009c00000a9401008041000000600110021000000a940020009c00000a94020080410000004002200210000000000121019f00002a4b0001042e000000000010043f0000000301000039000000200010043f000000400200003900000000010000192a4a2a2b0000040f000000000101041a000000800010043f00000ba40100004100002a4b0001042e00000bbe03300197000000000032041b000000800010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000ba8011001c70000800d02000039000000010300003900000bb104000041000004680000013d0000000201000039000000000012041b001400000003001d000000000030043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e001001980000050b0000c13d000000400100043d000000640210003900000bb9030000410000000000320435000000440210003900000bba03000041000000000032043500000024021000390000002903000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c0001043000000a9d02200197000000000262019f000000000021041b000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000030300003900000aa0040000412a4a2a400000040f000000010020019000001dff0000613d000000000100001900002a4b0001042e000000000020043f0000000501000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b0000001402000029000000000020043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000201041a00000bbe022001970000001303000029000000000232019f000000000021041b000000400100043d000000000031043500000a940010009c00000a94010080410000004001100210000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000aaf011001c70000800d02000039000000030300003900000b900400004100000000050004110000001406000029000004680000013d00000ba501000041000000000010044300000000010004100000000400100443000000000100041400000a940010009c00000a9401008041000000c00110021000000b99011001c70000800a020000392a4a2a450000040f0000000100200190000006e20000613d000000000301043b00000000010004140000000004000411000000040040008c000005290000c13d00000001020000390000000101000031000005a20000013d0000000901000039000000000101041a000d00000003001d000000000031001a0000077c0000413d0000000d030000290000000001310019000027110010008c000004f90000413d00000aff01000041000000800010043f0000002001000039000000840010043f0000001201000039000000a40010043f00000ba201000041000000c40010043f00000b920100004100002a4c000104300000000002000411000000000012004b000005300000c13d0000001301000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000201041a00000a9d0220019700000014022001af000000000021041b0000001301000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e05100198000004490000613d000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000bb604000041000000140600002900000013070000292a4a2a400000040f000000010020019000001dff0000613d0000046b0000013d00000b93013000d100000b940210019700000b930220012a000000000023004b0000077c0000c13d0000000002000416000000000012004b000005e10000813d00000aff01000041000000800010043f0000002001000039000000840010043f0000001401000039000000a40010043f00000ba101000041000000c40010043f00000b920100004100002a4c000104300000001401000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e01100198000004490000613d0000000002000411000000000012004b000007610000c13d000000000100041600000bac0010009c000007680000213d000000400100043d000000440210003900000ba103000041000000000032043500000024021000390000001403000039000003780000013d00000a940010009c00000a9401008041000000c001100210000000000003004b0000059a0000c13d00000000020400190000059d0000013d000000000010043f0000000501000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000200041100000a9e02200197000000000020043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a000000ff00100190000004c80000c13d000000400100043d000000640210003900000bb3030000410000000000320435000000440210003900000bb403000041000000000032043500000024021000390000003803000039000004520000013d00000bbe01100197000000140200002900000140022000390000000000120435000000000004004b000000200200003900000000020060390000003f0120003900000bbf021001970000000001620019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f00000014010000290000000001610436001100000001001d00000013010000290000000101100039000000000201041a000000010320019000000001042002700000007f0440618f001200000004001d0000001f0040008c00000000040000390000000104002039000000000442013f0000000100400190000000550000c13d000000400400043d001000000004001d00000012050000290000000004540436000f00000004001d000000000003004b000007820000613d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d0000001205000029000000000005004b00000000020000190000000f06000029000007880000613d000000000101043b00000000020000190000000003260019000000000401041a000000000043043500000001011000390000002002200039000000000052004b000005920000413d000007880000013d00000a9f011001c7000080090200003900000000050000192a4a2a400000040f0003000000010355000000600110027000010a940010019d00000a9401100197000000000001004b000005ab0000c13d0000000100200190000005b30000613d00000001010000390000000702000039000000000012041b000000000100001900002a4b0001042e00000ab10010009c000005ba0000a13d00000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c00010430000000400100043d000000440210003900000ba603000041000000000032043500000024021000390000000f03000039000003780000013d0000001f0410003900000bbf044001970000003f0440003900000bbf05400197000000400400043d0000000005540019000000000045004b0000000006000039000000010600403900000ab10050009c000005ad0000213d0000000100600190000005ad0000c13d000000400050043f000000000614043600000bbf031001980000001f0410018f00000000013600190000000305000367000005d30000613d000000000705034f000000007807043c0000000006860436000000000016004b000005cf0000c13d000000000004004b000005a40000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000005a40000013d000000000100041100140a9e0010019b0000000002000019000005ef0000013d00000000010004150000000f011000690000000001000002000000000100041500000010011000690000000001000002000000110200002900000001022000390000000d0020006c000005a60000813d001100000002001d0000000901000039000000000101041a000000010110003a0000077c0000613d0000000902000039000000000012041b2a4a24560000040f0000000001000415001000000001001d000000400200043d00000b640020009c000005ad0000213d0000000901000039000000000301041a0000002001200039001200000001001d000000400010043f000e00000002001d0000000000020435000000140000006b000008690000613d001300000003001d000000000030043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000101041a00000a9e00100198000008740000c13d0000001401000029000000000010043f0000000301000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000201041a000000010220003a0000077c0000613d000000000021041b0000001301000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b000000000201041a00000a9d022001970000001406000029000000000262019f000000000021041b000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000b9704000041000000000500001900000013070000292a4a2a400000040f000000010020019000001dff0000613d0000000001000415000f00000001001d00000b9801000041000000000010044300000000010004110000000400100443000000000100041400000a940010009c00000a9401008041000000c00110021000000b99011001c700008002020000392a4a2a450000040f0000000100200190000006e20000613d000000000101043b000000000001004b00000014060000290000001207000029000005e50000613d000000400a00043d0000006401a00039000000800200003900000000002104350000004401a000390000001302000029000000000021043500000b9a0100004100000000001a04350000000401a0003900000000006104350000002401a0003900000000000104350000000e0100002900000000010104330000008402a000390000000000120435000000a402a00039000000000001004b000006780000613d000000000300001900000000042300190000000005730019000000000505043300000000005404350000002003300039000000000013004b000006710000413d000000000221001900000000000204350000000002000414000000040060008c000006850000c13d00000000050004150000001a0550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000006ba0000013d0000001f0110003900000bbf01100197000000a40110003900000a940010009c00000a9401008041000000600110021000000a9400a0009c00000a940300004100000000030a40190000004003300210000000000131019f00000a940020009c00000a9402008041000000c002200210000000000112019f000000000206001900130000000a001d2a4a2a400000040f000000130a000029000000600310027000000a9403300197000000200030008c00000020040000390000000004034019000000200640019000000000056a0019000006a60000613d000000000701034f00000000080a0019000000007907043c0000000008980436000000000058004b000006a20000c13d0000001f07400190000006b30000613d000000000661034f0000000307700210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000190550008a00000005055002100000000100200190000008c80000613d0000001f01400039000000600210018f0000000001a20019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f000000200030008c00001dff0000413d00000000010a043300000b9e0010019800001dff0000c13d0000000502500270000000000201001f00000000020004150000000f02200069000000000200000200000b9f0110019700000b9a0010009c000005e80000613d000000400200043d001400000002001d00000aff01000041000000000012043500000004012000392a4a29940000040f0000001402000029000000000121004900000a940010009c00000a9401008041000000600110021000000a940020009c00000a94020080410000004002200210000000000121019f00002a4c00010430000000000001042f0000000b01000039000000000010043f00000ab0060000410000000004000019000006f00000013d000000010170021000000001011001bf0000001204000029000000000016041b000000070040008c00000001044000390000000106600039000007c30000813d00000014010000290000000013010434001400000001001d000000007503043400000ab10050009c000005ad0000213d000000000106041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000200080008c001300000006001d001200000004001d001100000005001d001000000003001d000007260000413d000e00000008001d000f00000007001d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d00000011050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b0000000e010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000000130600002900000012040000290000000f07000029000007260000813d000000000002041b0000000102200039000000000012004b000007220000413d0000001f0050008c000007470000a13d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000110700002900000bbf02700198000000000101043b000007530000613d000000010320008a00000005033002700000000003310019000000010430003900000020030000390000001306000029000000100800002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000073d0000c13d000000000072004b000006e80000813d000007580000013d000000000005004b0000074b0000613d00000000010704330000074c0000013d0000000001000019000000030250021000000bc10220027f00000bc102200167000000000121016f0000000102500210000000000121019f000006eb0000013d000000200300003900000013060000290000001008000029000000000072004b000006e80000813d0000000302700210000000f80220018f00000bc10220027f00000bc10220016700000000038300190000000003030433000000000223016f000000000021041b000006e80000013d000000400100043d000000440210003900000bab03000041000000000032043500000024021000390000000d03000039000003780000013d00000014010000292a4a24560000040f0000001401000029000000000010043f0000000a01000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b0000000801100039000000000201041a000000010220003a0000087b0000c13d00000b7c01000041000000000010043f0000001101000039000000040010043f00000b7d0100004100002a4c0001043000000bbe012001970000000f020000290000000000120435000000120000006b000000200200003900000000020060390000003f0120003900000bbf021001970000001001200029000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f00000011010000290000001002000029000000000021043500000013010000290000000201100039000000000201041a000000010320019000000001042002700000007f0440618f001200000004001d0000001f0040008c00000000040000390000000104002039000000000442013f0000000100400190000000550000c13d000000400400043d001100000004001d00000012050000290000000004540436001000000004001d000000000003004b0000087d0000613d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d0000001205000029000000000005004b00000000020000190000001006000029000008830000613d000000000101043b00000000020000190000000003260019000000000401041a000000000043043500000001011000390000002002200039000000000052004b000007bb0000413d000008830000013d000000400100043d001200000001001d00000ab20010009c000005ad0000213d00000012020000290000010001200039000000400010043f00000aa20020009c000005ad0000213d00000012030000290000014002300039000000400020043f000000080200003900000000002104350000000001130436000001200230003900000ab3030000410000000000320435000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000ab4040000410000000000430435000000070300003900000000003204350000000000210435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ab50300004100000000003204350000000b020000390000000000210435000000120200002900000040022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ab60300004100000000003204350000000e020000390000000000210435000000120200002900000060022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ab70300004100000000003204350000000a020000390000000000210435000000120200002900000080022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ab8030000410000000000320435000000090200003900000000002104350000001202000029000000a0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ab9030000410000000000320435000000080200003900000000002104350000001202000029000000c0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000aba030000410000000000320435000000090200003900000000002104350000001202000029000000e00220003900000000001204350000000c03000039000000000103041a0000000802000039000000000023041b000000080010008c00000a690000a13d00000abb0310009a00000abc0030009c00000a690000413d00000abd04000041001100000003001d000008410000013d0000001404000029000000000004041b0000001103000029000000000001041b0000000104400039000000000034004b00000a690000813d000000000104041a000000010010019000000001051002700000007f0550618f0000001f0050008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000000005004b0000083e0000613d0000001f0050008c00000000010400190000083d0000a13d001300000005001d001400000004001d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b00000013020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b0000083a0000813d000000000003041b0000000103300039000000000023004b000008640000413d0000083a0000013d000000400100043d000000440210003900000ba003000041000000000032043500000aff02000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000037d0000013d000000400100043d000000440210003900000b9503000041000000000032043500000024021000390000001c03000039000003780000013d000000000021041b000005a60000013d00000bbe0120019700000010020000290000000000120435000000120000006b000000200200003900000000020060390000003f0120003900000bbf021001970000001101200029000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f00000014030000290000004001300039001000000001001d0000001102000029000000000021043500000013040000290000000301400039000000000101041a0000006002300039000000000012043500000080013000390000000402400039000000000202041a00000000002104350000000501400039000000000201041a000000010320019000000001042002700000007f0440618f001200000004001d0000001f0040008c00000000040000390000000104002039000000000442013f0000000100400190000000550000c13d000000400400043d001100000004001d00000012050000290000000004540436000f00000004001d000000000003004b000008ff0000613d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d0000001205000029000000000005004b00000000020000190000000f06000029000009050000613d000000000101043b00000000020000190000000003260019000000000401041a000000000043043500000001011000390000002002200039000000000052004b000008c00000413d000009050000013d000000000003004b000008cc0000c13d0000006002000039000008f30000013d0000001f0230003900000b9b022001970000003f0220003900000b9c04200197000000400200043d0000000004420019000000000024004b0000000005000039000000010500403900000ab10040009c000005ad0000213d0000000100500190000005ad0000c13d000000400040043f0000001f0430018f000000000632043600000b9d05300198000c00000006001d0000000003560019000008e60000613d000000000601034f0000000c07000029000000006806043c0000000007870436000000000037004b000008e20000c13d000000000004004b000008f30000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000006d20000613d0000000c0200002900000a940020009c00000a9402008041000000400220021000000a940010009c00000a94010080410000006001100210000000000121019f00002a4c0001043000000bbe012001970000000f020000290000000000120435000000120000006b000000200200003900000000020060390000003f0120003900000bbf021001970000001101200029000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f0000001401000029000000a001100039000f00000001001d0000001102000029000000000021043500000013010000290000000601100039000000000201041a000000010320019000000001042002700000007f0440618f001200000004001d0000001f0040008c00000000040000390000000104002039000000000442013f0000000100400190000000550000c13d000000400400043d001100000004001d00000012050000290000000004540436000e00000004001d000000000003004b000009420000613d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d0000001205000029000000000005004b00000000020000190000000e06000029000009480000613d000000000101043b00000000020000190000000003260019000000000401041a000000000043043500000001011000390000002002200039000000000052004b0000093a0000413d000009480000013d00000bbe012001970000000e020000290000000000120435000000120000006b000000200200003900000000020060390000003f0120003900000bbf021001970000001101200029000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f0000001403000029000000c0043000390000001101000029000000000014043500000013050000290000000701500039000000000101041a000000ff001001900000000001000039000000010100c039000000e002300039001100000002001d000000000012043500000100013000390000000802500039000000000202041a00000000002104350000000001000415000e00000001001d0000000f01000029000000000201043300000b0603000041000d00000004001d0000000001040433000000400500043d0000004004500039000000000034043500000b07030000410000007f04500039000000000034043500000b08030000410000005f04500039000000000034043500000b09030000410000002004500039001200000004001d0000000000340435001300000005001d00000083035000390000000042020434000000000002004b000009850000613d000000000500001900000000063500190000000007540019000000000707043300000000007604350000002005500039000000000025004b0000097e0000413d000000000332001900000000000304350000001303200029000000830430003900000b0a020000410000000000240435000000a60430003900000b0b050000410000000000540435000000860430003900000b0c050000410000000000540435000000ac033000390000000041010434000000000001004b0000099d0000613d000000000500001900000000063500190000000007540019000000000707043300000000007604350000002005500039000000000015004b000009960000413d00000000013100190000000000210435000000030210003900000b0d030000410000000000320435000000130300002900000000013100490000000c0210008a0000000000230435000000330110003900000bbf021001970000000001320019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f00000010010000290000000001010433000000200210003900000a940020009c00000a94020080410000004002200210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000601043b000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac003000041000000000032043500000005020000390000000000210435000000400300043d00000b0e0060009c00000b8c0000c13d0000000f010000290000000002010433000000400130003900000b1a050000410000000000510435000000200430003900000b1b0100004100000000001404350000004b0730003900000020012000390000000006020433000000000006004b000009e90000613d00000000080000190000000009780019000000000a180019000000000a0a04330000000000a904350000002008800039000000000068004b000009e20000413d0000000007760019000000000007043500000000073600190000004b0870003900000b1c06000041000000000068043500000081087000390000000000580435000000610570003900000b1d0800004100000000008504350000008c057000390000000007020433000000000007004b00000a000000613d00000000080000190000000009580019000000000a180019000000000a0a04330000000000a904350000002008800039000000000078004b000009f90000413d0000000005570019000000360750003900000b1a0800004100000000008704350000000000650435000000160650003900000b1e07000041000000000076043500000041055000390000000006020433000000000006004b00000a140000613d000000000700001900000000085700190000000009170019000000000909043300000000009804350000002007700039000000000067004b00000a0d0000413d0000000007560019000000360670003900000b1f05000041000000000056043500000b1c060000410000000000670435000000160870003900000b2009000041000000000098043500000043077000390000000008020433000000000008004b00000a290000613d0000000009000019000000000a790019000000000b190019000000000b0b04330000000000ba04350000002009900039000000000089004b00000a220000413d0000000007780019000000360870003900000000005804350000000000670435000000160570003900000b2106000041000000000065043500000043057000390000000002020433000000000002004b00000a3c0000613d000000000600001900000000075600190000000008160019000000000808043300000000008704350000002006600039000000000026004b00000a350000413d000000000152001900000b1c02000041000000000021043500000000013100490000000a0210008a0000000000230435000000350110003900000bbf021001970000000001320019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f000000600210003900000b0f050000410000000000520435000000400210003900000b10050000410000000000520435000000200210003900000b110500004100000000005204350000006c051000390000000003030433000000000003004b00000a620000613d000000000600001900000000075600190000000008460019000000000808043300000000008704350000002006600039000000000036004b00000a5b0000413d000000000453001900000b1705000041000000000054043500000056043000390000000000410435000000950330003900000bf80000013d0000000c01000039000000000010043f00140abe00000045001100000000001d00000a760000013d000000010170021000000001011001bf000000000016041b0000001101000029000000070010008c001100010010003d001400010060003d00000ae30000813d00000012010000290000000012010434001200000001001d001000000002001d0000000021020434000f00000002001d001300000001001d00000ab10010009c000005ad0000213d0000001406000029000000000106041a000000010010019000000001031002700000007f0330618f0000001f0030008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000200030008c000000130400002900000aaa0000413d000e00000003001d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d00000013040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b0000000e010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000000140600002900000aaa0000813d000000000002041b0000000102200039000000000012004b00000aa60000413d0000001f0040008c00000ac90000a13d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000130700002900000bbf02700198000000000101043b000000100800002900000ad60000613d000000010320008a0000000503300270000000000331001900000001043000390000002003000039000000140600002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b00000ac10000c13d00000ad80000013d000000000004004b00000ace0000613d0000000f01000029000000000101043300000acf0000013d0000000001000019000000030240021000000bc10220027f00000bc102200167000000000121016f0000000102400210000000000121019f00000a700000013d00000020030000390000001406000029000000000072004b00000a6e0000813d0000000302700210000000f80220018f00000bc10220027f00000bc10220016700000000038300190000000003030433000000000223016f000000000021041b00000a6e0000013d000000400100043d001000000001001d00000ab20010009c000005ad0000213d00000010020000290000010001200039000000400010043f00000aa20020009c000005ad0000213d00000010030000290000014002300039000000400020043f000000040200003900000000002104350000000001130436000001200230003900000abf030000410000000000320435000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000ac0040000410000000000430435000000050300003900000000003204350000000000210435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac103000041000000000032043500000007020000390000000000210435000000100200002900000040022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac203000041000000000032043500000009020000390000000000210435000000100200002900000060022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac303000041000000000032043500000007020000390000000000210435000000100200002900000080022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac4030000410000000000320435000000070200003900000000002104350000001002000029000000a0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac5030000410000000000320435000000050200003900000000002104350000001002000029000000c0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ac6030000410000000000320435000000050200003900000000002104350000001002000029000000e00220003900000000001204350000000d03000039000000000103041a0000000802000039000000000023041b000000080010008c000010040000a13d00000ac70110009a001200000001001d00000ac80010009c000010040000413d00140ac90000004500000b620000013d0000001402000029000000000002041b000000000001041b00000014020000290000000102200039001400000002001d000000120020006c000010040000813d0000001401000029000000000101041a000000010010019000000001021002700000007f0220618f001300000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000130000006b00000b5d0000613d00000013010000290000001f0010008c000000140100002900000b5c0000a13d0000001401000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b00000013020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b00000b5a0000813d000000000003041b0000000103300039000000000023004b00000b870000413d00000b5a0000013d00000aa40030009c000005ad0000213d0000004001300039000000400010043f000000200130003900000abf020000410000000000210435000000040100003900000000001304350000000f010000290000000004010433000000400100043d000000600210003900000b0f030000410000000000320435000000400210003900000b10030000410000000000320435000000200210003900000b1103000041000000000032043500000020034000390000008c071000390000006c0510003900000b120060009c00000bc40000c13d00000b1806000041000000000065043500000b1906000041000000000067043500000090061000390000000004040433000000000004004b00000bb60000613d000000000700001900000000086700190000000009730019000000000909043300000000009804350000002007700039000000000047004b00000baf0000413d000000000364001900000000000304350000000003540019000000240430003900000b0a050000410000000000540435000000270430003900000b17050000410000000000540435000000000313004900000011043000390000000000410435000000500330003900000bf80000013d00000b1306000041000000000065043500000b140600004100000000006704350000008f071000390000000006040433000000000006004b00000bd40000613d00000000080000190000000009780019000000000a380019000000000a0a04330000000000a904350000002008800039000000000068004b00000bcd0000413d000000000776001900000000000704350000000005560019000000230750003900000b0a060000410000000000670435000000460750003900000b15080000410000000000870435000000260750003900000b1608000041000000000087043500000057075000390000000004040433000000000004004b00000bec0000613d00000000080000190000000009780019000000000a380019000000000a0a04330000000000a904350000002008800039000000000048004b00000be50000413d000000000374001900000000000304350000000003540019000000570430003900000000006404350000005a0430003900000b17050000410000000000540435000000000313004900000044043000390000000000410435000000830330003900000bbf033001970000000004130019000000000034004b00000000030000390000000103004039001000000004001d00000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d0000001005000029000000400050043f000000400350003900000b220400004100000000004304350000005e0350003900000b23040000410000000000430435000000200450003900000b2403000041000c00000004001d0000000000340435000000640350003900000013040000290000000004040433000000000004004b000000120800002900000c1c0000613d000000000500001900000000063500190000000007850019000000000707043300000000007604350000002005500039000000000045004b00000c150000413d000000000334001900000000000304350000000001010433000000000001004b00000c290000613d000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b00000c220000413d000000000131001900000b2502000041000000000021043500000010030000290000000001310049000000190210008a0000000000230435000000260110003900000bbf021001970000000001320019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f0000000001000415001300000001001d00000014010000290000000001010433000000200210003900000a940020009c00000a94020080410000004002200210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000400200043d00000aa40020009c000005ad0000213d000000000101043b0000004003200039000000400030043f000000200320003900000aa30400004100000000004304350000000403000039000000000032043500000b260010009c00000ceb0000c13d000000400200043d00000b280020009c000005ad0000213d0000006001200039000000400010043f000000400120003900000b600300004100000000003104350000002f01000039000000000112043600000b2a03000041001400000001001d0000000000310435000000400800043d00000aa40080009c000005ad0000213d000000110100002900000000090104330000004003800039000000400030043f0000000b03000039000000000738043600000b5a030000410000000000370435000000400500043d00000aa40050009c000005ad0000213d0000004003500039000000400030043f0000000201000039000000000a15043600000b510300004100000000003a0435000000400400043d00000aa40040009c000005ad0000213d0000004003400039000000400030043f000000000e14043600000000030000310000000203300367000000000103043b001200000001001d00000000001e04350000002103400039000000000603043300000b300660019700000b31066001c7000000000063043500000000030e043300000b300330019700000b5b033001c700000000003e0435000000400100043d000b00000001001d00000aa40010009c000005ad0000213d0000000b030000290000004006300039000000400060043f000000200d300039000000120100002900000000001d04350000002106300039000000000b06043300000b300bb0019700000b310bb001c70000000000b604350000000201000039000000000013043500000000060d043300000b300660019700000b5b066001c700000000006d0435000000400100043d000a00000001001d00000aa40010009c000005ad0000213d0000000a030000290000004006300039000000400060043f000000200b300039000000120100002900000000001b04350000002206300039000000000c06043300000b300cc0019700000b310cc001c70000000000c60435000000030100003900000000001304350000002106300039000000000c06043300000b300cc0019700000b320cc001c70000000000c6043500000000060b043300000b300660019700000b33066001c700000000006b0435000000400100043d000800000001001d00000aa40010009c000005ad0000213d00000008030000290000004006300039000000400060043f000000200c300039000000120100002900000000001c04350000002206300039000000000f06043300000b300ff0019700000b310ff001c70000000000f60435000000030100003900000000001304350000002106300039000000000f06043300000b300ff0019700000b320ff001c70000000000f6043500000000060c043300000b300660019700000b33066001c700000000006c0435000000400100043d000000000009004b000700000001001d00000020091000390000112a0000c13d000000070100002900000b640010009c000005ad0000213d000000400090043f00000007010000290000000000010435000000400100043d000600000001001d000011520000013d00000014010000290000000001010433000000200210003900000a940020009c00000a94020080410000004002200210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000400200043d00000aa40020009c000005ad0000213d000000000301043b0000004001200039000000400010043f000000200120003900000aa504000041000000000041043500000006010000390000000000120435000000400100043d00000b270030009c00000df80000c13d001600000001001d00000b280010009c000005ad0000213d0000006002100039000000400020043f000000400210003900000b4f030000410000000000320435000000200210003900000b2a0300004100000000003204350000002f020000390000000000210435000000400100043d00000b280010009c000005ad0000213d0000006002100039000000400020043f000000400210003900000b2b030000410000000000320435000000200210003900000b2c03000041000000000032043500000022020000390000000000210435001500000001001d000000400200043d00000aa40020009c000005ad0000213d00000011010000290000000001010433001400000001001d0000000f0100002900000000080104330000004001200039000000400010043f0000000101000039000000000112043600000b46030000410000000000310435000000400a00043d00000aa400a0009c000005ad0000213d0000004003a00039000000400030043f000000050300003900000000093a043600000b50030000410000000000390435000000400700043d00000aa40070009c000005ad0000213d0000004003700039000000400030043f0000000203000039000000000637043600000b51030000410000000000360435000000400c00043d00000aa400c0009c000005ad0000213d0000004003c00039000000400030043f000000030300003900000000053c043600000000030000310000000203300367000000000303043b000f00000003001d00000000003504350000002203c00039000000000403043300000b300440019700000b31044001c700000000004304350000002103c00039000000000403043300000b300440019700000b32044001c70000000000430435000000000305043300000b300330019700000b33033001c7000000000035043500000b5203000041000000400400043d000000200d40003900000000003d0435001200000004001d0000002b0f400039000000000c0c043300000000000c004b00000d740000613d00000000040000190000000003f40019000000000b540019000000000b0b04330000000000b3043500000020044000390000000000c4004b00000d6d0000413d0000000003fc001900000000000304350000000b03c00039000000120500002900000000003504350000004a03c0003900000bbf033001970000000005530019000000000035004b0000000003000039000000010300403900000ab10050009c000005ad0000213d0000000100300190000005ad0000c13d000000400050043f000000200f50003900000b3a0300004100000000003f0435000000360c5000390000000048080434000000000008004b00000d930000613d0000000003000019000000000bc30019000000000e340019000000000e0e04330000000000eb04350000002003300039000000000083004b00000d8c0000413d0000000003c8001900000000000304350000000008580019000000360380003900000b53040000410000000000430435000000460c8000390000000002020433000000000002004b00000da50000613d00000000030000190000000004c30019000000000b130019000000000b0b04330000000000b404350000002003300039000000000023004b00000d9e0000413d0000000001c2001900000000000104350000000001820019000000460210003900000b2b030000410000000000320435000000000151004900000028021000390000000000250435000000670110003900000bbf01100197000000000c51001900000000001c004b0000000001000039000000010100403900000ab100c0009c000005ad0000213d0000000100100190000005ad0000c13d0000004000c0043f0000002008c0003900000012010000290000000001010433000000000001004b00000dc60000613d000000000200001900000000038200190000000004d20019000000000404043300000000004304350000002002200039000000000012004b00000dbf0000413d000000000181001900000000000104350000000002050433000000000002004b00000dd30000613d000000000300001900000000041300190000000005f30019000000000505043300000000005404350000002003300039000000000023004b00000dcc0000413d000000000112001900000000000104350000000001c10049000000200210008a00000000002c04350000001f0110003900000bbf011001970000000002c10019000000000012004b0000000001000039000000010100403900000ab10020009c000005ad0000213d0000000100100190000005ad0000c13d000000400020043f0000002001200039000000140000006b000012460000c13d00000000050c0433000000000005004b00000df10000613d000000000300001900000000041300190000000006830019000000000606043300000000006404350000002003300039000000000053004b00000dea0000413d000000000315001900000b4b040000410000000000430435000000090350003900000000003204350000004803500039000012ce0000013d00000b280010009c000005ad0000213d0000006002100039000000400020043f000000400210003900000b290300004100000000003204350000002f02000039000000000321043600000b2a02000041001200000003001d0000000000230435000000400200043d001400000002001d00000b280020009c000005ad0000213d00000014030000290000006002300039000000400020043f000000400230003900000b2b0400004100000000004204350000002202000039000000000323043600000b2c02000041000a00000003001d0000000000230435000000400200043d000b00000002001d00000aa40020009c000005ad0000213d00000011020000290000000002020433000900000002001d0000000f020000290000000002020433000800000002001d0000000b030000290000004002300039000000400020043f0000000202000039000000000523043600000b2d020000410000000000250435000000400200043d000f00000002001d00000aa40020009c000005ad0000213d0000000f030000290000004002300039000000400020043f0000001402000039000000000b23043600000b2e0200004100000000002b0435000000400200043d000700000002001d00000aa40020009c000005ad0000213d00000007030000290000004002300039000000400020043f0000000202000039000000000923043600000b2f020000410000000000290435000000400700043d00000aa40070009c000005ad0000213d0000004002700039000000400020043f0000000302000039000000000227043600000000040000310000000204400367000000000304043b000500000003001d00000000003204350000002204700039000000000804043300000b300880019700000b31088001c700000000008404350000002104700039000000000804043300000b300880019700000b32088001c70000000000840435000000000402043300000b300440019700000b33044001c7000000000042043500000b3404000041000000400300043d000000200f30003900000000004f0435000600000003001d00000024083000390000000007070433000000000007004b00000e650000613d0000000004000019000000000a840019000000000c240019000000000c0c04330000000000ca04350000002004400039000000000074004b00000e5e0000413d00000000028700190000000000020435000000040270003900000006040000290000000000240435000000430270003900000bbf022001970000000006420019000000000026004b0000000002000039000000010200403900000ab10060009c000005ad0000213d0000000100200190000005ad0000c13d000000400060043f00000aa40060009c000005ad0000213d0000004002600039000000400020043f000000200d600039000000050200002900000000002d04350000002202600039000000000402043300000b300440019700000b31044001c700000000004204350000002102600039000000000402043300000b300440019700000b32044001c700000000004204350000000302000039000000000026043500000000020d043300000b300220019700000b33022001c700000000002d043500000b3502000041000000400300043d00000020083000390000000000280435000400000003001d0000002302300039000000000e06043300000000000e004b00000e9d0000613d0000000004000019000000000a240019000000000cd40019000000000c0c04330000000000ca043500000020044000390000000000e4004b00000e960000413d00000000022e001900000000000204350000000403e00029000000230230003900000b36040000410000000000420435000000240a3000390000000002060433000000000002004b00000eaf0000613d0000000004000019000000000ca400190000000007d40019000000000707043300000000007c04350000002004400039000000000024004b00000ea80000413d0000000004a2001900000000000404350000000004320019000000240740003900000b370a0000410000000000a704350000002e0a4000390000000007060433000000000007004b00000ec10000613d0000000004000019000000000ca400190000000003d40019000000000303043300000000003c04350000002004400039000000000074004b00000eba0000413d0000000003a7001900000000000304350000000002e2001900000000027200190000000e03200039000000040400002900000000003404350000004d0220003900000bbf022001970000000006420019000000000026004b0000000002000039000000010200403900000ab10060009c000005ad0000213d0000000100200190000005ad0000c13d000000400060043f00000aa40060009c000005ad0000213d0000004002600039000000400020043f0000002007600039000000050200002900000000002704350000002202600039000000000302043300000b300330019700000b31033001c700000000003204350000002102600039000000000302043300000b300330019700000b32033001c7000000000032043500000003020000390000000000260435000000000207043300000b300220019700000b33022001c7000000000027043500000b3502000041000000400300043d000000200d30003900000000002d0435000300000003001d0000002302300039000000000e06043300000000000e004b00000efb0000613d00000000040000190000000003240019000000000a740019000000000a0a04330000000000a3043500000020044000390000000000e4004b00000ef40000413d00000000022e001900000000000204350000000304e00029000000230240003900000b36030000410000000000320435000200000004001d000000240a4000390000000002060433000000000002004b00000f0e0000613d00000000040000190000000003a40019000000000c740019000000000c0c04330000000000c304350000002004400039000000000024004b00000f070000413d0000000003a2001900000000000304350000000203200029000000240430003900000b380a0000410000000000a404350000002d04300039000000000a06043300000000000a004b00000f200000613d000000000c00001900000000034c001900000000067c001900000000060604330000000000630435000000200cc000390000000000ac004b00000f190000413d00000000034a001900000000000304350000000002e200190000000002a200190000000d03200039000000030400002900000000003404350000004c0220003900000bbf02200197000000000e42001900000000002e004b0000000002000039000000010200403900000ab100e0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000e0043f0000002007e0003900000006020000290000000002020433000000000002004b00000f3f0000613d000000000400001900000000037400190000000006f40019000000000606043300000000006304350000002004400039000000000024004b00000f380000413d0000000002720019000000000002043500000004030000290000000004030433000000000004004b00000f4d0000613d000000000a00001900000000032a001900000000068a001900000000060604330000000000630435000000200aa0003900000000004a004b00000f460000413d0000000002240019000000000002043500000003030000290000000004030433000000000004004b00000f5b0000613d000000000800001900000000032800190000000006d80019000000000606043300000000006304350000002008800039000000000048004b00000f540000413d000000000224001900000000000204350000000002e20049000000200320008a00000000003e04350000001f0220003900000bbf02200197000000000ce2001900000000002c004b0000000002000039000000010200403900000ab100c0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000c0043f000000200dc0003900000b390200004100000000002d04350000002904c0003900000000020e0433000000000002004b00000f7a0000613d000000000800001900000000034800190000000006780019000000000606043300000000006304350000002008800039000000000028004b00000f730000413d00000000034200190000000000030435000000090320003900000000003c0435000000480220003900000bbf02200197000000000fc2001900000000002f004b0000000002000039000000010200403900000ab100f0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000f0043f0000002008f0003900000b3a0200004100000000002804350000003604f0003900000008020000290000000072020434000000000002004b00000f990000613d000000000a00001900000000034a00190000000006a7001900000000060604330000000000630435000000200aa0003900000000002a004b00000f920000413d000000000342001900000000000304350000000002f20019000000560320003900000b3b040000410000000000430435000000360320003900000b3c0400004100000000004304350000005b042000390000000b030000290000000006030433000000000006004b00000faf0000613d00000000070000190000000003470019000000000a570019000000000a0a04330000000000a304350000002007700039000000000067004b00000fa80000413d0000000003460019000000000003043500000000022600190000005b0320003900000b3d0400004100000000004304350000000002f200490000003e0320003900000000003f04350000007d0220003900000bbf022001970000000006f20019000000000026004b0000000002000039000000010200403900000ab10060009c000005ad0000213d0000000100200190000005ad0000c13d000000400060043f000000200760003900000000020c0433000000000002004b00000fcf0000613d000000000400001900000000037400190000000005d40019000000000505043300000000005304350000002004400039000000000024004b00000fc80000413d0000000002720019000000000002043500000000040f0433000000000004004b00000fdc0000613d00000000050000190000000003250019000000000a850019000000000a0a04330000000000a304350000002005500039000000000045004b00000fd50000413d000000000224001900000000000204350000000002620049000000200320008a00000000003604350000001f0220003900000bbf022001970000000003620019000000000023004b00000000020000390000000102004039000800000003001d00000ab10030009c000005ad0000213d0000000100200190000005ad0000c13d0000000802000029000000400020043f0000002005200039000000090000006b000013ab0000c13d0000000002060433000000000002004b00000ffc0000613d000000000400001900000000035400190000000006740019000000000606043300000000006304350000002004400039000000000024004b00000ff50000413d000000000352001900000b4204000041000000000043043500000007032000390000000804000029000000000034043500000046022000390000143b0000013d0000000d01000039000000000010043f00120aca00000045000f00000000001d000010130000013d0000001301000029000000010110021000000001011001bf0000001202000029000000000012041b0000000f01000029000000070010008c000f00010010003d001200010020003d000010810000813d00000010010000290000000012010434001000000001001d001400000002001d0000000021020434000e00000002001d001300000001001d00000ab10010009c000005ad0000213d0000001201000029000000000101041a000000010010019000000001021002700000007f0220618f001100000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d0000001101000029000000200010008c000010470000413d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d00000013030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000011010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000010470000813d000000000002041b0000000102200039000000000012004b000010430000413d00000013010000290000001f0010008c000010660000a13d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000200200008a0000001302200180000000000101043b000010740000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900000014053000290000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000105e0000c13d000010750000013d000000130000006b0000106b0000613d0000000e0100002900000000010104330000106c0000013d00000000010000190000001304000029000000030240021000000bc10220027f00000bc102200167000000000121016f0000000102400210000000000121019f0000100c0000013d0000002003000039000000130020006c000010090000813d00000013020000290000000302200210000000f80220018f00000bc10220027f00000bc10220016700000014033000290000000003030433000000000223016f000000000021041b000010090000013d000000400100043d001000000001001d00000ab20010009c000005ad0000213d00000010020000290000010001200039000000400010043f00000aa20020009c000005ad0000213d00000010030000290000014002300039000000400020043f000000070200003900000000002104350000000001130436000001200230003900000acb030000410000000000320435000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000acc040000410000000000430435000000070300003900000000003204350000000000210435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000acd03000041000000000032043500000007020000390000000000210435000000100200002900000040022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ace03000041000000000032043500000007020000390000000000210435000000100200002900000060022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000acf03000041000000000032043500000007020000390000000000210435000000100200002900000080022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad0030000410000000000320435000000070200003900000000002104350000001002000029000000a0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad1030000410000000000320435000000070200003900000000002104350000001002000029000000c0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad2030000410000000000320435000000070200003900000000002104350000001002000029000000e00220003900000000001204350000000e03000039000000000103041a0000000802000039000000000023041b000000080010008c000016300000a13d00000ad30110009a001200000001001d00000ad40010009c000016300000413d00140ad500000045000011000000013d0000001402000029000000000002041b000000000001041b00000014020000290000000102200039001400000002001d000000120020006c000016300000813d0000001401000029000000000101041a000000010010019000000001021002700000007f0220618f001300000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000130000006b000010fb0000613d00000013010000290000001f0010008c0000001401000029000010fa0000a13d0000001401000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b00000013020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b000010f80000813d000000000003041b0000000103300039000000000023004b000011250000413d000010f80000013d0000000701000029000000600610003900000b610f0000410000000000f60435000000400610003900000b620f0000410000000000f6043500000b6306000041000000000069043500000064061000390000000005050433000000000005004b0000113f0000613d000000000f00001900000000016f00190000000003af001900000000030304330000000000310435000000200ff0003900000000005f004b000011380000413d000000000165001900000b410300004100000000003104350000006001500039000000070600002900000000001604350000009f0150003900000bbf011001970000000003610019000000000013004b00000000050000390000000105004039000600000003001d00000ab10030009c000005ad0000213d0000000100500190000005ad0000c13d0000000601000029000000400010043f0000000601000029000000200310003900000b6505000041000900000003001d000000000053043500000029051000390000000004040433000000000004004b000011630000613d0000000006000019000000000a560019000000000fe60019000000000f0f04330000000000fa04350000002006600039000000000046004b0000115c0000413d000000000454001900000b6605000041000000000054043500000005044000390000000b010000290000000003010433000000000003004b000011730000613d00000000050000190000000006450019000000000ad50019000000000a0a04330000000000a604350000002005500039000000000035004b0000116c0000413d000000000343001900000b6704000041000000000043043500000009033000390000000a010000290000000004010433000000000004004b000011830000613d00000000050000190000000006350019000000000ab50019000000000a0a04330000000000a604350000002005500039000000000045004b0000117c0000413d000000000334001900000b680400004100000000004304350000000a0330003900000008010000290000000004010433000000000004004b000011930000613d00000000050000190000000006350019000000000ac50019000000000a0a04330000000000a604350000002005500039000000000045004b0000118c0000413d000000000334001900000b6904000041000000000043043500000008033000390000000004080433000000000004004b000011a20000613d000000000500001900000000063500190000000008750019000000000808043300000000008604350000002005500039000000000045004b0000119b0000413d000000000334001900000b2b040000410000000000430435000000020330003900000007010000290000000004010433000000000004004b000011b20000613d000000000500001900000000063500190000000007590019000000000707043300000000007604350000002005500039000000000045004b000011ab0000413d000000000334001900000b6a04000041000000000043043500000006050000290000000003530049000000190430008a0000000000450435000000260330003900000bbf033001970000000009530019000000000039004b0000000003000039000000010300403900000ab10090009c000005ad0000213d0000000100300190000005ad0000c13d000000400090043f00000aa40090009c000005ad0000213d000000110100002900000000050104330000004001900039000000400010043f0000000e01000039000000000a19043600000b6b0100004100000000001a0435000000400800043d00000aa40080009c000005ad0000213d0000004001800039000000400010043f0000000201000039000000000418043600000b59010000410000000000140435000000400300043d00000aa40030009c000005ad0000213d0000004001300039000000400010043f000000200f300039000000120100002900000000001f04350000002201300039000000000601043300000b300660019700000b31066001c70000000000610435000000030100003900000000001304350000002101300039000000000601043300000b300660019700000b46066001c7000000000061043500000000010f043300000b300110019700000b46011001c700000000001f0435000000400100043d000b00000001001d00000aa40010009c000005ad0000213d0000000b060000290000004001600039000000400010043f0000002007600039000000120100002900000000001704350000002101600039000000000b01043300000b300bb0019700000b310bb001c70000000000b1043500000002010000390000000000160435000000000107043300000b300110019700000b5b011001c70000000000170435000000400100043d000a00000001001d00000aa40010009c000005ad0000213d0000000a060000290000004001600039000000400010043f000000200d600039000000120100002900000000001d04350000002201600039000000000b01043300000b300bb0019700000b310bb001c70000000000b10435000000030100003900000000001604350000002101600039000000000b01043300000b300bb0019700000b310bb001c70000000000b1043500000000010d043300000b300110019700000b33011001c700000000001d0435000000400100043d000500000001001d00000aa40010009c000005ad0000213d00000005060000290000004001600039000000400010043f000000200e600039000000120100002900000000001e04350000002201600039000000000b01043300000b300bb0019700000b310bb001c70000000000b10435000000030100003900000000001604350000002101600039000000000b01043300000b300bb0019700000b310bb001c70000000000b1043500000000010e043300000b300110019700000b33011001c700000000001e0435000000400100043d000000000005004b000700000001001d000000200b100039000016ad0000c13d000000070100002900000b640010009c000005ad0000213d0000004000b0043f00000007010000290000000000010435000000400100043d000800000001001d000016d50000013d00000b54030000410000000000310435000000400320003900000b550400004100000000004304350000004e0b20003900000000050a0433000000000005004b000012570000613d00000000030000190000000004b30019000000000a930019000000000a0a04330000000000a404350000002003300039000000000053004b000012500000413d0000000003b5001900000000000304350000002e0350003900000000003204350000006d0350003900000bbf03300197000000000a23001900000000003a004b0000000003000039000000010300403900000ab100a0009c000005ad0000213d0000000100300190000005ad0000c13d0000004000a0043f0000002009a0003900000b56030000410000000000390435000000320ba000390000000005070433000000000005004b000012750000613d00000000030000190000000004b300190000000007630019000000000707043300000000007404350000002003300039000000000053004b0000126e0000413d0000000003b5001900000b410400004100000000004304350000002e0350003900000000003a04350000006d0350003900000bbf033001970000000006a30019000000000036004b0000000003000039000000010300403900000ab10060009c000005ad0000213d0000000100300190000005ad0000c13d000000400060043f00000020056000390000000002020433000000000002004b000012910000613d000000000300001900000000045300190000000007130019000000000707043300000000007404350000002003300039000000000023004b0000128a0000413d0000000001520019000000000001043500000000020a0433000000000002004b0000129e0000613d000000000300001900000000041300190000000007930019000000000707043300000000007404350000002003300039000000000023004b000012970000413d000000000112001900000000000104350000000001610049000000200210008a00000000002604350000001f0110003900000bbf011001970000000002610019000000000012004b0000000001000039000000010100403900000ab10020009c000005ad0000213d0000000100100190000005ad0000c13d000000400020043f000000200120003900000000070c0433000000000007004b000012ba0000613d000000000300001900000000041300190000000009830019000000000909043300000000009404350000002003300039000000000073004b000012b30000413d000000000717001900000000000704350000000006060433000000000006004b000012c70000613d000000000300001900000000047300190000000008530019000000000808043300000000008404350000002003300039000000000063004b000012c00000413d000000000376001900000b4b0400004100000000004304350000000003230049000000170430008a0000000000420435000000280330003900000bbf033001970000000006230019000000000036004b0000000003000039000000010300403900000ab10060009c000005ad0000213d0000000100300190000005ad0000c13d000000400060043f00000aa40060009c000005ad0000213d00000011030000290000000003030433000b00000003001d0000000d03000029000000000b0304330000004003600039000000400030043f0000000103000039000000000936043600000b57030000410000000000390435000000400300043d000d00000003001d00000aa40030009c000005ad0000213d0000000d040000290000004003400039000000400030043f0000000503000039000000000a34043600000b580300004100000000003a0435000000400300043d001200000003001d00000aa40030009c000005ad0000213d00000012040000290000004003400039000000400030043f0000000203000039000000000734043600000b59030000410000000000370435000000400f00043d00000aa400f0009c000005ad0000213d0000004003f00039000000400030043f000000200cf000390000000f0300002900000000003c04350000002203f00039000000000403043300000b300440019700000b31044001c700000000004304350000002103f00039000000000403043300000b300440019700000b46044001c70000000000430435000000030300003900000000003f043500000000030c043300000b300330019700000b33033001c700000000003c043500000b5203000041000000400400043d00000020054000390000000000350435001400000004001d0000002b0d400039000000000f0f043300000000000f004b000013240000613d00000000030000190000000004d300190000000008c300190000000008080433000000000084043500000020033000390000000000f3004b0000131d0000413d0000000003df001900000000000304350000000b03f00039000000140800002900000000003804350000004a03f0003900000bbf03300197000000000c83001900000000003c004b0000000003000039000000010300403900000ab100c0009c000005ad0000213d0000000100300190000005ad0000c13d0000004000c0043f000000200fc0003900000b3a0300004100000000003f04350000003608c00039000000004d0b043400000000000d004b000013430000613d0000000003000019000000000b830019000000000e340019000000000e0e04330000000000eb043500000020033000390000000000d3004b0000133c0000413d00000000038d00190000000000030435000000000dcd00190000003603d0003900000b530400004100000000004304350000004608d000390000000006060433000000000006004b000013550000613d00000000030000190000000004830019000000000b930019000000000b0b04330000000000b404350000002003300039000000000063004b0000134e0000413d000000000386001900000000000304350000000003d60019000000460430003900000b2b0600004100000000006404350000000003c30049000000280430003900000000004c0435000000670330003900000bbf03300197000000000dc3001900000000003d004b0000000003000039000000010300403900000ab100d0009c000005ad0000213d0000000100300190000005ad0000c13d0000004000d0043f0000002009d0003900000014030000290000000006030433000000000006004b000013760000613d000000000300001900000000049300190000000008530019000000000808043300000000008404350000002003300039000000000063004b0000136f0000413d0000000005960019000000000005043500000000060c0433000000000006004b000013830000613d000000000300001900000000045300190000000008f30019000000000808043300000000008404350000002003300039000000000063004b0000137c0000413d000000000356001900000000000304350000000003d30049000000200430008a00000000004d04350000001f0330003900000bbf033001970000000004d30019000000000034004b00000000030000390000000103004039001400000004001d00000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d0000001403000029000000400030043f00000020053000390000000b0000006b000017be0000c13d00000000070d0433000000000007004b000013a30000613d000000000300001900000000045300190000000006930019000000000606043300000000006404350000002003300039000000000073004b0000139c0000413d000000000357001900000b4b04000041000000000043043500000009037000390000001406000029000000000036043500000048037000390000184e0000013d00000b3e0200004100000000002504350000000804000029000000400240003900000b3f03000041000000000032043500000052044000390000000f020000290000000002020433000000000002004b000013be0000613d00000000080000190000000003480019000000000ab80019000000000a0a04330000000000a304350000002008800039000000000028004b000013b70000413d00000000034200190000000000030435000000320320003900000008040000290000000000340435000000710220003900000bbf02200197000000000c42001900000000002c004b0000000002000039000000010200403900000ab100c0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000c0043f000000200bc0003900000b400200004100000000002b04350000002704c0003900000007020000290000000002020433000000000002004b000013de0000613d00000000080000190000000003480019000000000a980019000000000a0a04330000000000a304350000002008800039000000000028004b000013d70000413d000000000342001900000b41040000410000000000430435000000230320003900000000003c0435000000620220003900000bbf022001970000000009c20019000000000029004b0000000002000039000000010200403900000ab10090009c000005ad0000213d0000000100200190000005ad0000c13d000000400090043f000000200890003900000008020000290000000002020433000000000002004b000013fb0000613d00000000040000190000000003840019000000000a540019000000000a0a04330000000000a304350000002004400039000000000024004b000013f40000413d0000000002820019000000000002043500000000040c0433000000000004004b000014080000613d00000000050000190000000003250019000000000ab50019000000000a0a04330000000000a304350000002005500039000000000045004b000014010000413d000000000224001900000000000204350000000002920049000000200320008a00000000003904350000001f0220003900000bbf022001970000000003920019000000000023004b00000000020000390000000102004039000800000003001d00000ab10030009c000005ad0000213d0000000100200190000005ad0000c13d0000000802000029000000400020043f00000020052000390000000002060433000000000002004b000014260000613d000000000400001900000000035400190000000006740019000000000606043300000000006304350000002004400039000000000024004b0000141f0000413d000000000252001900000000000204350000000004090433000000000004004b000014330000613d000000000600001900000000032600190000000007860019000000000707043300000000007304350000002006600039000000000046004b0000142c0000413d000000000224001900000b4203000041000000000032043500000008040000290000000002420049000000190320008a0000000000340435000000260220003900000bbf022001970000000003420019000000000023004b00000000020000390000000102004039000900000003001d00000ab10030009c000005ad0000213d0000000100200190000005ad0000c13d0000000902000029000000400020043f00000aa40020009c000005ad0000213d00000011020000290000000002020433000200000002001d0000000d020000290000000002020433000100000002001d00000009030000290000004002300039000000400020043f0000000302000039000000000323043600000b4302000041000b00000003001d0000000000230435000000400200043d000400000002001d00000aa40020009c000005ad0000213d00000004030000290000004002300039000000400020043f0000001102000039000000000323043600000b4402000041000d00000003001d0000000000230435000000400200043d000600000002001d00000aa40020009c000005ad0000213d00000006030000290000004002300039000000400020043f0000000202000039000000000323043600000b4502000041000f00000003001d0000000000230435000000400600043d00000aa40060009c000005ad0000213d0000004002600039000000400020043f0000002002600039000000050300002900000000003204350000002203600039000000000403043300000b300440019700000b31044001c700000000004304350000002103600039000000000403043300000b300440019700000b46044001c7000000000043043500000003030000390000000000360435000000000302043300000b300330019700000b33033001c7000000000032043500000b3403000041000000400400043d000000200d40003900000000003d0435000300000004001d00000024044000390000000006060433000000000006004b000014980000613d000000000700001900000000034700190000000008270019000000000808043300000000008304350000002007700039000000000067004b000014910000413d00000000024600190000000000020435000000040260003900000003040000290000000000240435000000430260003900000bbf022001970000000006420019000000000026004b0000000002000039000000010200403900000ab10060009c000005ad0000213d0000000100200190000005ad0000c13d000000400060043f00000aa40060009c000005ad0000213d0000004002600039000000400020043f000000200a600039000000050200002900000000002a04350000002202600039000000000302043300000b300330019700000b31033001c700000000003204350000002102600039000000000302043300000b300330019700000b46033001c700000000003204350000000302000039000000000026043500000000020a043300000b300220019700000b33022001c700000000002a043500000b3502000041000000400300043d00000020083000390000000000280435000700000003001d0000002302300039000000000c06043300000000000c004b000014d00000613d000000000400001900000000032400190000000007a400190000000007070433000000000073043500000020044000390000000000c4004b000014c90000413d00000000022c001900000000000204350000000707c00029000000230270003900000b3603000041000000000032043500000024047000390000000002060433000000000002004b000014e20000613d00000000090000190000000003490019000000000ba90019000000000b0b04330000000000b304350000002009900039000000000029004b000014db0000413d000000000342001900000000000304350000000003720019000000240430003900000b370700004100000000007404350000002e043000390000000006060433000000000006004b000014f40000613d000000000700001900000000034700190000000009a70019000000000909043300000000009304350000002007700039000000000067004b000014ed0000413d000000000346001900000000000304350000000002c2001900000000026200190000000e03200039000000070400002900000000003404350000004d0220003900000bbf02200197000000000a42001900000000002a004b0000000002000039000000010200403900000ab100a0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000a0043f00000aa400a0009c000005ad0000213d0000004002a00039000000400020043f000000200ea00039000000050200002900000000002e04350000002202a00039000000000302043300000b300330019700000b31033001c700000000003204350000002102a00039000000000302043300000b300330019700000b46033001c70000000000320435000000030200003900000000002a043500000000020e043300000b300220019700000b33022001c700000000002e043500000b3502000041000000400600043d000000200c60003900000000002c0435000000230260003900000000070a0433000000000007004b0000152d0000613d000000000400001900000000032400190000000009e40019000000000909043300000000009304350000002004400039000000000074004b000015260000413d000000000227001900000000000204350000000009670019000000230290003900000b36030000410000000000320435000000240490003900000000020a0433000000000002004b0000153f0000613d000000000b00001900000000034b0019000000000feb0019000000000f0f04330000000000f30435000000200bb0003900000000002b004b000015380000413d000000000342001900000000000304350000000003920019000000240430003900000b380900004100000000009404350000002d0430003900000000090a0433000000000009004b000015510000613d000000000a00001900000000034a0019000000000bea0019000000000b0b04330000000000b30435000000200aa0003900000000009a004b0000154a0000413d00000000034900190000000000030435000000000272001900000000029200190000000d0320003900000000003604350000004c0220003900000bbf02200197000000000a62001900000000002a004b0000000002000039000000010200403900000ab100a0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000a0043f000000200ea0003900000003020000290000000002020433000000000002004b0000156f0000613d00000000040000190000000003e400190000000007d40019000000000707043300000000007304350000002004400039000000000024004b000015680000413d0000000002e20019000000000002043500000007030000290000000004030433000000000004004b0000157d0000613d000000000700001900000000032700190000000009870019000000000909043300000000009304350000002007700039000000000047004b000015760000413d000000000224001900000000000204350000000004060433000000000004004b0000158a0000613d000000000600001900000000032600190000000007c60019000000000707043300000000007304350000002006600039000000000046004b000015830000413d000000000224001900000000000204350000000002a20049000000200320008a00000000003a04350000001f0220003900000bbf022001970000000007a20019000000000027004b0000000002000039000000010200403900000ab10070009c000005ad0000213d0000000100200190000005ad0000c13d000000400070043f000000200670003900000b39020000410000000000260435000000290470003900000000020a0433000000000002004b000015a90000613d000000000800001900000000034800190000000009e80019000000000909043300000000009304350000002008800039000000000028004b000015a20000413d0000000003420019000000000003043500000009032000390000000000370435000000480220003900000bbf02200197000000000d72001900000000002d004b0000000002000039000000010200403900000ab100d0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000d0043f000000200cd0003900000b3a0200004100000000002c04350000003604d0003900000001020000290000000082020434000000000002004b000015c80000613d00000000090000190000000003490019000000000a980019000000000a0a04330000000000a304350000002009900039000000000029004b000015c10000413d000000000342001900000000000304350000000002d20019000000560320003900000b3b040000410000000000430435000000360320003900000b3c0400004100000000004304350000005b0420003900000009030000290000000008030433000000000008004b000015de0000613d000000000900001900000000034900190000000b0a900029000000000a0a04330000000000a304350000002009900039000000000089004b000015d70000413d0000000003480019000000000003043500000000022800190000005b0320003900000b3d0400004100000000004304350000000002d200490000003e0320003900000000003d04350000007d0220003900000bbf02200197000000000ad2001900000000002a004b0000000002000039000000010200403900000ab100a0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000a0043f0000002008a000390000000002070433000000000002004b000015fe0000613d000000000400001900000000038400190000000007640019000000000707043300000000007304350000002004400039000000000024004b000015f70000413d0000000002820019000000000002043500000000040d0433000000000004004b0000160b0000613d000000000600001900000000032600190000000007c60019000000000707043300000000007304350000002006600039000000000046004b000016040000413d000000000224001900000000000204350000000002a20049000000200320008a00000000003a04350000001f0220003900000bbf02200197000000000da2001900000000002d004b0000000002000039000000010200403900000ab100d0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000d0043f0000002007d00039000000020000006b0000192d0000c13d00000000020a0433000000000002004b000016290000613d000000000400001900000000037400190000000006840019000000000606043300000000006304350000002004400039000000000024004b000016220000413d000000000372001900000b42040000410000000000430435000000070320003900000000003d04350000004602200039000019b70000013d0000000e01000039000000000010043f00120ad600000045000f00000000001d0000163f0000013d0000001301000029000000010110021000000001011001bf0000001202000029000000000012041b0000000f01000029000000070010008c000f00010010003d001200010020003d000019fd0000813d00000010010000290000000012010434001000000001001d001400000002001d0000000021020434000e00000002001d001300000001001d00000ab10010009c000005ad0000213d0000001201000029000000000101041a000000010010019000000001021002700000007f0220618f001100000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d0000001101000029000000200010008c000016730000413d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d00000013030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000011010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b000016730000813d000000000002041b0000000102200039000000000012004b0000166f0000413d00000013010000290000001f0010008c000016920000a13d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000200200008a0000001302200180000000000101043b000016970000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900000014053000290000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000168a0000c13d000016980000013d000000130000006b000016a40000613d0000000e010000290000000001010433000016a50000013d0000002003000039000000130020006c000016350000813d00000013020000290000000302200210000000f80220018f00000bc10220027f00000bc10220016700000014033000290000000003030433000000000223016f000000000021041b000016350000013d00000000010000190000001304000029000000030240021000000bc10220027f00000bc102200167000000000121016f0000000102400210000000000121019f000016380000013d0000000706000029000000600160003900000b61050000410000000000510435000000400160003900000b6205000041000000000051043500000b630100004100000000001b0435000000640c6000390000000005080433000000000005004b000016c20000613d00000000080000190000000001c800190000000006480019000000000606043300000000006104350000002008800039000000000058004b000016bb0000413d0000000001c5001900000b410400004100000000004104350000006001500039000000070600002900000000001604350000009f0150003900000bbf011001970000000005610019000000000015004b00000000040000390000000104004039000800000005001d00000ab10050009c000005ad0000213d0000000100400190000005ad0000c13d0000000801000029000000400010043f0000000804000029000000200840003900000b6501000041000000000018043500000029044000390000000003030433000000000003004b000016e50000613d00000000050000190000000001450019000000000cf50019000000000c0c04330000000000c104350000002005500039000000000035004b000016de0000413d000000000143001900000b6603000041000000000031043500000005031000390000000b010000290000000004010433000000000004004b000016f50000613d000000000500001900000000013500190000000006750019000000000606043300000000006104350000002005500039000000000045004b000016ee0000413d000000000134001900000b6703000041000000000031043500000009031000390000000a010000290000000004010433000000000004004b000017050000613d000000000500001900000000013500190000000006d50019000000000606043300000000006104350000002005500039000000000045004b000016fe0000413d000000000134001900000b680300004100000000003104350000000a0310003900000005010000290000000004010433000000000004004b000017150000613d000000000500001900000000013500190000000006e50019000000000606043300000000006104350000002005500039000000000045004b0000170e0000413d000000000134001900000b6903000041000000000031043500000008031000390000000004090433000000000004004b000017240000613d000000000500001900000000013500190000000006a50019000000000606043300000000006104350000002005500039000000000045004b0000171d0000413d000000000134001900000b2b030000410000000000310435000000020310003900000007010000290000000004010433000000000004004b000017340000613d0000000005000019000000000135001900000000065b0019000000000606043300000000006104350000002005500039000000000045004b0000172d0000413d000000000134001900000b6a03000041000000000031043500000008040000290000000001410049000000190310008a0000000000340435000000260110003900000bbf011001970000000004410019000000000014004b0000000003000039000000010300403900000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d000000400040043f00000aa40040009c000005ad0000213d000000110100002900000000050104330000000d010000290000000001010433000a00000001001d0000004001400039000000400010043f0000000201000039000000000614043600000b5d010000410000000000160435000000400300043d00000aa40030009c000005ad0000213d0000004001300039000000400010043f000000200f300039000000120100002900000000001f04350000002101300039000000000701043300000b300770019700000b31077001c700000000007104350000000201000039000000000013043500000000010f043300000b300110019700000b5b011001c700000000001f0435000000400100043d001100000001001d00000aa40010009c000005ad0000213d00000011090000290000004001900039000000400010043f000000200c900039000000120100002900000000001c04350000002201900039000000000701043300000b300770019700000b31077001c70000000000710435000000030100003900000000001904350000002101900039000000000701043300000b300770019700000b46077001c7000000000071043500000000010c043300000b300110019700000b46011001c700000000001c0435000000400100043d000d00000001001d00000aa40010009c000005ad0000213d0000000d090000290000004001900039000000400010043f000000200d900039000000120100002900000000001d04350000002201900039000000000701043300000b300770019700000b31077001c70000000000710435000000030100003900000000001904350000002101900039000000000701043300000b300770019700000b31077001c7000000000071043500000000010d043300000b300110019700000b33011001c700000000001d0435000000400100043d000b00000001001d00000aa40010009c000005ad0000213d0000000b070000290000004001700039000000400010043f000000200e700039000000120100002900000000001e04350000002201700039000000000901043300000b300990019700000b31099001c70000000000910435000000030100003900000000001704350000002101700039000000000901043300000b300990019700000b5b099001c7000000000091043500000000010e043300000b300110019700000b33011001c700000000001e0435000000400b00043d000000000005004b000000200ab0003900001aa60000c13d00000b6400b0009c000005ad0000213d0000004000a0043f00000000000b0435000000400500043d00001aca0000013d00000b540300004100000000003504350000001406000029000000400360003900000b550400004100000000004304350000004e086000390000000d03000029000000000b03043300000000000b004b000017d10000613d000000000300001900000000048300190000000006a300190000000006060433000000000064043500000020033000390000000000b3004b000017ca0000413d00000000038b001900000000000304350000002e03b00039000000140600002900000000003604350000006d03b0003900000bbf03300197000000000b63001900000000003b004b0000000003000039000000010300403900000ab100b0009c000005ad0000213d0000000100300190000005ad0000c13d0000004000b0043f000000200ab0003900000b560300004100000000003a0435000000320cb0003900000012030000290000000008030433000000000008004b000017f10000613d00000000030000190000000004c300190000000006730019000000000606043300000000006404350000002003300039000000000083004b000017ea0000413d0000000003c8001900000b410400004100000000004304350000002e0380003900000000003b04350000006d0380003900000bbf033001970000000008b30019000000000038004b0000000003000039000000010300403900000ab10080009c000005ad0000213d0000000100300190000005ad0000c13d000000400080043f000000200780003900000014030000290000000006030433000000000006004b0000180e0000613d00000000030000190000000004730019000000000c530019000000000c0c04330000000000c404350000002003300039000000000063004b000018070000413d0000000005760019000000000005043500000000060b0433000000000006004b0000181b0000613d00000000030000190000000004530019000000000ba30019000000000b0b04330000000000b404350000002003300039000000000063004b000018140000413d000000000356001900000000000304350000000003830049000000200430008a00000000004804350000001f0330003900000bbf033001970000000004830019000000000034004b00000000030000390000000103004039001400000004001d00000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d0000001403000029000000400030043f0000002005300039000000000a0d043300000000000a004b000018390000613d0000000003000019000000000453001900000000069300190000000006060433000000000064043500000020033000390000000000a3004b000018320000413d00000000095a001900000000000904350000000008080433000000000008004b000018460000613d000000000300001900000000049300190000000006730019000000000606043300000000006404350000002003300039000000000083004b0000183f0000413d000000000398001900000b4b04000041000000000043043500000014060000290000000003630049000000170430008a0000000000460435000000280330003900000bbf033001970000000009630019000000000039004b0000000003000039000000010300403900000ab10090009c000005ad0000213d0000000100300190000005ad0000c13d000000400090043f00000aa40090009c000005ad0000213d00000011030000290000000003030433000b00000003001d0000004003900039000000400030043f0000000b03000039000000000e39043600000b5a0300004100000000003e0435000000400300043d000d00000003001d00000aa40030009c000005ad0000213d0000000d040000290000004003400039000000400030043f0000000103000039000000000334043600000b5b040000410000000000430435000000400400043d001100000004001d00000aa40040009c000005ad0000213d00000011060000290000004004600039000000400040043f0000000504000039000000000a46043600000b5c0400004100000000004a0435000000400400043d001200000004001d00000aa40040009c000005ad0000213d00000012060000290000004004600039000000400040043f0000000204000039000000000746043600000b5d040000410000000000470435000000400b00043d00000aa400b0009c000005ad0000213d0000004004b00039000000400040043f0000002008b000390000000f0400002900000000004804350000002104b00039000000000604043300000b300660019700000b31066001c70000000000640435000000020400003900000000004b0435000000000408043300000b300440019700000b5e044001c7000000000048043500000b5206000041000000400c00043d0000002004c000390000000000640435000f0000000c001d0000002b0dc00039000000000b0b043300000000000b004b000018a80000613d0000000006000019000000000cd60019000000000f860019000000000f0f04330000000000fc043500000020066000390000000000b6004b000018a10000413d0000000006db001900000000000604350000000b06b000390000000f0c00002900000000006c04350000004a06b0003900000bbf066001970000000008c60019000000000068004b0000000006000039000000010600403900000ab10080009c000005ad0000213d0000000100600190000005ad0000c13d000000400080043f000000200b80003900000b3a0600004100000000006b0435000000360d8000390000000009090433000000000009004b000018c70000613d0000000006000019000000000cd60019000000000fe60019000000000f0f04330000000000fc04350000002006600039000000000096004b000018c00000413d0000000006d9001900000000000604350000000009890019000000360690003900000b530c0000410000000000c60435000000460d9000390000000d06000029000000000c06043300000000000c004b000018da0000613d0000000006000019000000000ed60019000000000f360019000000000f0f04330000000000fe043500000020066000390000000000c6004b000018d30000413d0000000003dc0019000000000003043500000000039c0019000000460630003900000b2b090000410000000000960435000000000383004900000028063000390000000000680435000000670330003900000bbf03300197000000000c83001900000000003c004b0000000003000039000000010300403900000ab100c0009c000005ad0000213d0000000100300190000005ad0000c13d0000004000c0043f0000002009c000390000000f030000290000000003030433000000000003004b000018fb0000613d0000000006000019000000000d960019000000000e460019000000000e0e04330000000000ed04350000002006600039000000000036004b000018f40000413d000000000393001900000000000304350000000004080433000000000004004b000019080000613d00000000060000190000000008360019000000000db60019000000000d0d04330000000000d804350000002006600039000000000046004b000019010000413d000000000334001900000000000304350000000003c30049000000200430008a00000000004c04350000001f0330003900000bbf033001970000000004c30019000000000034004b0000000003000039000000010300403900000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d000000400040043f00000020034000390000000b0000006b00001ba10000c13d00000000070c0433000000000007004b000019260000613d00000000060000190000000008360019000000000a960019000000000a0a04330000000000a804350000002006600039000000000076004b0000191f0000413d000000000637001900000b4b08000041000000000086043500000009067000390000000000640435000000480670003900001c2b0000013d00000b3e0200004100000000002704350000004002d0003900000b3f0300004100000000003204350000005204d0003900000004020000290000000002020433000000000002004b0000193f0000613d000000000600001900000000034600190000000d09600029000000000909043300000000009304350000002006600039000000000026004b000019380000413d00000000034200190000000000030435000000320320003900000000003d0435000000710220003900000bbf02200197000000000cd2001900000000002c004b0000000002000039000000010200403900000ab100c0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000c0043f000000200bc0003900000b400200004100000000002b04350000002704c0003900000006020000290000000002020433000000000002004b0000195e0000613d000000000600001900000000034600190000000f09600029000000000909043300000000009304350000002006600039000000000026004b000019570000413d000000000342001900000b41040000410000000000430435000000230320003900000000003c0435000000620220003900000bbf022001970000000009c20019000000000029004b0000000002000039000000010200403900000ab10090009c000005ad0000213d0000000100200190000005ad0000c13d000000400090043f000000200690003900000000020d0433000000000002004b0000197a0000613d00000000040000190000000003640019000000000d740019000000000d0d04330000000000d304350000002004400039000000000024004b000019730000413d0000000002620019000000000002043500000000040c0433000000000004004b000019870000613d00000000070000190000000003270019000000000cb70019000000000c0c04330000000000c304350000002007700039000000000047004b000019800000413d000000000224001900000000000204350000000002920049000000200320008a00000000003904350000001f0220003900000bbf02200197000000000d92001900000000002d004b0000000002000039000000010200403900000ab100d0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000d0043f0000002007d0003900000000020a0433000000000002004b000019a30000613d00000000040000190000000003740019000000000a840019000000000a0a04330000000000a304350000002004400039000000000024004b0000199c0000413d000000000272001900000000000204350000000004090433000000000004004b000019b00000613d000000000800001900000000032800190000000009680019000000000909043300000000009304350000002008800039000000000048004b000019a90000413d000000000224001900000b420300004100000000003204350000000002d20049000000190320008a00000000003d0435000000260220003900000bbf022001970000000008d20019000000000028004b0000000002000039000000010200403900000ab10080009c000005ad0000213d0000000100200190000005ad0000c13d000000400080043f000000200980003900000008020000290000000002020433000000000002004b000019ce0000613d000000000400001900000000039400190000000006450019000000000606043300000000006304350000002004400039000000000024004b000019c70000413d0000000002920019000000000002043500000000040d0433000000000004004b000019db0000613d000000000500001900000000032500190000000006570019000000000606043300000000006304350000002005500039000000000045004b000019d40000413d000000000224001900000000000204350000000002820049000000200320008a00000000003804350000001f0220003900000bbf02200197000000000a82001900000000002a004b0000000002000039000000010200403900000ab100a0009c000005ad0000213d0000000100200190000005ad0000c13d0000004000a0043f00000011020000290000000002020433000000000002004b0000002007a000390000004002a0003900001cd30000c13d00000b2800a0009c000005ad0000213d0000006003a00039000000400030043f00000b4d03000041000000000032043500000b480200004100000000002704350000002b0200003900000000002a0435000000400c00043d00001ce90000013d000000400100043d001000000001001d00000ab20010009c000005ad0000213d00000010020000290000010001200039000000400010043f00000aa20020009c000005ad0000213d00000010030000290000014002300039000000400020043f000000070200003900000000002104350000000001130436000001200230003900000acc030000410000000000320435000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000acb040000410000000000430435000000070300003900000000003204350000000000210435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ace03000041000000000032043500000007020000390000000000210435000000100200002900000040022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000acd03000041000000000032043500000007020000390000000000210435000000100200002900000060022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad003000041000000000032043500000007020000390000000000210435000000100200002900000080022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000acf030000410000000000320435000000070200003900000000002104350000001002000029000000a0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad2030000410000000000320435000000070200003900000000002104350000001002000029000000c0022000390000000000120435000000400100043d00000aa40010009c000005ad0000213d0000004002100039000000400020043f000000200210003900000ad1030000410000000000320435000000070200003900000000002104350000001002000029000000e00220003900000000001204350000000f03000039000000000103041a0000000802000039000000000023041b000000080010008c00001d820000a13d00000ad70110009a001200000001001d00000ad80010009c00001d820000413d00140ad90000004500001a7c0000013d0000001402000029000000000002041b000000000001041b00000014020000290000000102200039001400000002001d000000120020006c00001d820000813d0000001401000029000000000101041a000000010010019000000001021002700000007f0220618f001300000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d000000130000006b00001a770000613d00000013010000290000001f0010008c000000140100002900001a760000a13d0000001401000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000000101043b00000013020000290000001f02200039000000050220027000000000022100190000000103100039000000000023004b00001a740000813d000000000003041b0000000103300039000000000023004b00001aa10000413d00001a740000013d0000006001b0003900000b610500004100000000005104350000004001b0003900000b6205000041000000000051043500000b630100004100000000001a04350000006405b000390000000004040433000000000004004b00001aba0000613d000000000900001900000000015900190000000007690019000000000707043300000000007104350000002009900039000000000049004b00001ab30000413d000000000154001900000b41050000410000000000510435000000600140003900000000001b04350000009f0140003900000bbf011001970000000005b10019000000000015004b0000000004000039000000010400403900000ab10050009c000005ad0000213d0000000100400190000005ad0000c13d000000400050043f000000200650003900000b6501000041000000000016043500000029045000390000000003030433000000000003004b00001ad90000613d000000000900001900000000014900190000000007f90019000000000707043300000000007104350000002009900039000000000039004b00001ad20000413d000000000143001900000b66030000410000000000310435000000050310003900000011010000290000000004010433000000000004004b00001ae90000613d000000000900001900000000013900190000000007c90019000000000707043300000000007104350000002009900039000000000049004b00001ae20000413d000000000134001900000b6703000041000000000031043500000009031000390000000d010000290000000004010433000000000004004b00001af90000613d000000000900001900000000013900190000000007d90019000000000707043300000000007104350000002009900039000000000049004b00001af20000413d000000000134001900000b680300004100000000003104350000000a031000390000000b010000290000000004010433000000000004004b00001b090000613d000000000700001900000000013700190000000009e70019000000000909043300000000009104350000002007700039000000000047004b00001b020000413d000000000134001900000b6903000041000000000031043500000008031000390000000a010000290000000074010434000000000004004b00001b190000613d00000000090000190000000001390019000000000c970019000000000c0c04330000000000c104350000002009900039000000000049004b00001b120000413d000000000134001900000b2b030000410000000000310435000000020310003900000000040b0433000000000004004b00001b280000613d0000000007000019000000000137001900000000097a0019000000000909043300000000009104350000002007700039000000000047004b00001b210000413d000000000134001900000b6a0300004100000000003104350000000001510049000000190310008a0000000000350435000000260110003900000bbf011001970000000004510019000000000014004b0000000003000039000000010300403900000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d000000400040043f00000020034000390000000f01000029000000000701043300000006010000290000000009010433000000000009004b00001b480000613d000000000a00001900000000013a0019000000090ba00029000000000b0b04330000000000b10435000000200aa0003900000000009a004b00001b410000413d000000000939001900000000000904350000000801000029000000000a01043300000000000a004b00001b560000613d000000000b00001900000000019b0019000000000c8b0019000000000c0c04330000000000c10435000000200bb000390000000000ab004b00001b4f0000413d00000000089a001900000000000804350000000005050433000000000005004b00001b630000613d00000000090000190000000001890019000000000a690019000000000a0a04330000000000a104350000002009900039000000000059004b00001b5c0000413d0000000001850019000000200510003900000b6c06000041000000000065043500000b6d05000041000000000051043500000035051000390000000076070434000000000006004b00001b750000613d000000000800001900000000015800190000000009870019000000000909043300000000009104350000002008800039000000000068004b00001b6e0000413d000000000156001900000b6e05000041000000000051043500000000014100490000000f0510008a0000000000540435000000300110003900000bbf011001970000000006410019000000000016004b0000000005000039000000010500403900000ab10060009c000005ad0000213d0000000100500190000005ad0000c13d000000400060043f00000020056000390000000002020433000000000002004b00001b920000613d000000000700001900000000015700190000001408700029000000000808043300000000008104350000002007700039000000000027004b00001b8b0000413d000000000152001900000000000104350000000002040433000000000002004b00001b9f0000613d000000000400001900000000071400190000000008340019000000000808043300000000008704350000002004400039000000000024004b00001b980000413d000000000112001900001cc40000013d00000b54060000410000000000630435000000400640003900000b550800004100000000008604350000004e0b40003900000011060000290000000008060433000000000008004b00001bb30000613d0000000006000019000000000db60019000000000ea60019000000000e0e04330000000000ed04350000002006600039000000000086004b00001bac0000413d0000000006b8001900000000000604350000002e0680003900000000006404350000006d0680003900000bbf06600197000000000b46001900000000006b004b0000000006000039000000010600403900000ab100b0009c000005ad0000213d0000000100600190000005ad0000c13d0000004000b0043f000000200ab0003900000b560600004100000000006a0435000000320db0003900000012060000290000000008060433000000000008004b00001bd20000613d0000000006000019000000000ed60019000000000f760019000000000f0f04330000000000fe04350000002006600039000000000086004b00001bcb0000413d0000000006d8001900000b410700004100000000007604350000002e0680003900000000006b04350000006d0680003900000bbf066001970000000008b60019000000000068004b0000000006000039000000010600403900000ab10080009c000005ad0000213d0000000100600190000005ad0000c13d000000400080043f00000020078000390000000004040433000000000004004b00001bee0000613d0000000006000019000000000d760019000000000e360019000000000e0e04330000000000ed04350000002006600039000000000046004b00001be70000413d0000000003740019000000000003043500000000040b0433000000000004004b00001bfb0000613d0000000006000019000000000b360019000000000da60019000000000d0d04330000000000db04350000002006600039000000000046004b00001bf40000413d000000000334001900000000000304350000000003830049000000200430008a00000000004804350000001f0330003900000bbf033001970000000004830019000000000034004b0000000003000039000000010300403900000ab10040009c000005ad0000213d0000000100300190000005ad0000c13d000000400040043f0000002003400039000000000a0c043300000000000a004b00001c170000613d0000000006000019000000000b360019000000000c960019000000000c0c04330000000000cb043500000020066000390000000000a6004b00001c100000413d00000000093a001900000000000904350000000008080433000000000008004b00001c240000613d0000000006000019000000000a960019000000000b760019000000000b0b04330000000000ba04350000002006600039000000000086004b00001c1d0000413d000000000698001900000b4b0700004100000000007604350000000006460049000000170760008a0000000000740435000000280660003900000bbf066001970000000009460019000000000069004b0000000006000039000000010600403900000ab10090009c000005ad0000213d0000000100600190000005ad0000c13d000000400090043f00000b280090009c000005ad0000213d0000006006900039000000400060043f000000400690003900000b0a0700004100000000007604350000002306000039000000000a69043600000b5f0600004100000000006a0435000000400800043d00000020078000390000000002020433000000000002004b00001c4d0000613d0000000006000019000000000b760019000000000c610019000000000c0c04330000000000cb04350000002006600039000000000026004b00001c460000413d0000000001720019000000000001043500000014020000290000000002020433000000000002004b00001c5b0000613d0000000006000019000000000b160019000000000c650019000000000c0c04330000000000cb04350000002006600039000000000026004b00001c540000413d000000000112001900000000000104350000000002040433000000000002004b00001c680000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b00001c610000413d000000000112001900000000000104350000000002090433000000000002004b00001c750000613d000000000300001900000000041300190000000005a30019000000000505043300000000005404350000002003300039000000000023004b00001c6e0000413d000000000112001900000000000104350000000001810049000000200210008a00000000002804350000001f0110003900000bbf021001970000000001820019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f00000aa40010009c000005ad0000213d0000004002100039000000400020043f0000000402000039000000000221043600000b4e0300004100000000003204350000001603000029000000400600043d00000020056000390000000043030434000000000003004b00001c9b0000613d0000000009000019000000000a590019000000000b940019000000000b0b04330000000000ba04350000002009900039000000000039004b00001c940000413d0000000003530019000000000003043500000015040000290000000094040434000000000004004b00001ca90000613d000000000a000019000000000b3a0019000000000ca90019000000000c0c04330000000000cb0435000000200aa0003900000000004a004b00001ca20000413d000000000334001900000000000304350000000004080433000000000004004b00001cb60000613d00000000080000190000000009380019000000000a780019000000000a0a04330000000000a904350000002008800039000000000048004b00001caf0000413d000000000334001900000000000304350000000001010433000000000001004b00001cc30000613d000000000400001900000000073400190000000008240019000000000808043300000000008704350000002004400039000000000014004b00001cbc0000413d000000000131001900000000000104350000000001610049000000200210008a00000000002604350000001f0110003900000bbf021001970000000001620019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d000000010020019000001d420000613d000005ad0000013d00000b2b0300004100000000003204350000008202a0003900000b4703000041000000000032043500000b480200004100000000002704350000006202a0003900000b490300004100000000003204350000004202a0003900000b4a0300004100000000003204350000009202a0003900000b4b0300004100000000003204350000007b0200003900000000002a043500000b4c00a0009c000005ad0000213d000000a00ca000390000004000c0043f00000aa400c0009c000005ad0000213d0000004002c00039000000400020043f0000000402000039000000000b2c043600000b4e0200004100000000002b0435000000400600043d00000020056000390000000001010433000000000001004b00001cfe0000613d000000000200001900000000035200190000001204200029000000000404043300000000004304350000002002200039000000000012004b00001cf70000413d0000000001510019000000000001043500000014020000290000000002020433000000000002004b00001d0c0000613d000000000300001900000000041300190000000a0d300029000000000d0d04330000000000d404350000002003300039000000000023004b00001d050000413d000000000112001900000000000104350000000002080433000000000002004b00001d190000613d000000000300001900000000041300190000000008930019000000000808043300000000008404350000002003300039000000000023004b00001d120000413d0000000001120019000000000001043500000000020a0433000000000002004b00001d260000613d000000000300001900000000041300190000000008370019000000000808043300000000008404350000002003300039000000000023004b00001d1f0000413d0000000001120019000000000001043500000000020c0433000000000002004b00001d330000613d000000000300001900000000041300190000000007b30019000000000707043300000000007404350000002003300039000000000023004b00001d2c0000413d000000000112001900000000000104350000000001610049000000200210008a00000000002604350000001f0110003900000bbf021001970000000001620019000000000021004b0000000002000039000000010200403900000ab10010009c000005ad0000213d0000000100200190000005ad0000c13d000000400010043f000000000100041500000013011000690000000001000002000000400100043d000000200210003900000010030000290000000003030433000000000003004b00001d540000613d000000000400001900000000072400190000000c08400029000000000808043300000000008704350000002004400039000000000034004b00001d4d0000413d000000000223001900000000000204350000000003060433000000000003004b00001d610000613d000000000400001900000000062400190000000007450019000000000707043300000000007604350000002004400039000000000034004b00001d5a0000413d000000000223001900000b6f03000041000000000032043500000000021200490000001a0320008a0000000000310435000000250220003900000bbf032001970000000002130019000000000032004b0000000003000039000000010300403900000ab10020009c000005ad0000213d0000000100300190000005ad0000c13d000000400020043f00000000020004150000000e022000690000000002000002000000180300002a00001e010000c13d000000400200043d00000aa40020009c000005ad0000213d0000004003200039000000400030043f000000200320003900000b310400004100000000004304350000000103000039000000000032043500001e360000013d0000000f01000039000000000010043f00120ada00000045000f00000000001d00001d910000013d0000001301000029000000010110021000000001011001bf0000001202000029000000000012041b0000000f01000029000000070010008c000f00010010003d001200010020003d00001e400000813d00000010010000290000000012010434001000000001001d001400000002001d0000000021020434000e00000002001d001300000001001d00000ab10010009c000005ad0000213d0000001201000029000000000101041a000000010010019000000001021002700000007f0220618f001100000002001d0000001f0020008c00000000020000390000000102002039000000000121013f0000000100100190000000550000c13d0000001101000029000000200010008c00001dc50000413d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d00000013030000290000001f023000390000000502200270000000200030008c0000000002004019000000000301043b00000011010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b00001dc50000813d000000000002041b0000000102200039000000000012004b00001dc10000413d00000013010000290000001f0010008c00001de40000a13d0000001201000029000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f000000010020019000001dff0000613d000000200200008a0000001302200180000000000101043b00001de90000613d000000010320008a000000050330027000000000033100190000000104300039000000200300003900000014053000290000000005050433000000000051041b00000020033000390000000101100039000000000041004b00001ddc0000c13d00001dea0000013d000000130000006b00001df60000613d0000000e01000029000000000101043300001df70000013d0000002003000039000000130020006c00001d870000813d00000013020000290000000302200210000000f80220018f00000bc10220027f00000bc10220016700000014033000290000000003030433000000000223016f000000000021041b00001d870000013d00000000010000190000001304000029000000030240021000000bc10220027f00000bc102200167000000000121016f0000000102400210000000000121019f00001d8a0000013d000000000100001900002a4c00010430000000000503001900000000040000190000000002040019000000010440003a0000077c0000613d000000090050008c0000000a0550011a00001e030000213d00000b700020009c000005ad0000213d00000bbf062001970000005f0260003900000bbf05200197000000400200043d0000000005520019000000000025004b0000000007000039000000010700403900000ab10050009c000005ad0000213d0000000100700190000005ad0000c13d000000400050043f0000000005420436000000200660003900000bbf076001980000001f0660018f00001e250000613d0000000007750019000000000800003100000002088003670000000009050019000000008a08043c0000000009a90436000000000079004b00001e210000c13d000000000006004b000000000004004b0000077c0000613d000000010440008a0000000006020433000000000046004b000020020000a13d0000000006540019000000090030008c0000000a7330011a000000f807700210000000000806043300000b3008800197000000000787019f00000b31077001c7000000000076043500001e260000213d000000400400043d0000000003010433000000000003004b000000200340003900001e450000c13d00000b640040009c000005ad0000213d000000400030043f000000000004043500001eb70000013d00000020010000390000010000100443000001200000044300000adb0100004100002a4b0001042e00000b280040009c000005ad0000213d0000006005400039000000400050043f000000400540003900000b7106000041000000000065043500000b7205000041000000000053043500000040030000390000000000340435000000000301043300000b730030009c0000077c0000213d00000b740030009c000005ad0000213d0000000203300039000000030330011a00000002033002100000001f0530003900000bbf065001970000003f0560003900000bbf07500197000000400500043d0000000007750019000000000057004b0000000008000039000000010800403900000ab10070009c000005ad0000213d0000000100800190000005ad0000c13d000000400070043f0000000003350436000000000006004b00001e710000613d0000000006630019000000000700003100000002077003670000000008030019000000007907043c0000000008980436000000000068004b00001e6d0000c13d00000000080104330000000007180019000000000017004b000000000603001900001ea50000a13d00000001044000390000000008010019000000000603001900000003088000390000000009080433000000120a9002700000003f0aa0018f000000000a4a0019000000000a0a0433000000f80aa00210000000000b06043300000b300bb00197000000000aab019f0000000000a604350000000c0a9002700000003f0aa0018f000000000a4a0019000000000a0a0433000000f80aa00210000000010b600039000000000c0b043300000b300cc00197000000000aac019f0000000000ab0435000000060a9002700000003f0aa0018f000000000a4a0019000000000a0a0433000000f80aa00210000000020b600039000000000c0b043300000b300cc00197000000000aac019f0000000000ab04350000003f0990018f00000000094900190000000009090433000000f809900210000000030a600039000000000b0a043300000b300bb0019700000000099b019f00000000009a04350000000406600039000000000078004b00001e790000413d0000000008010433000000031080011a000000020010008c00001eb10000613d000000010010008c00001eb60000c13d000000010160008a000000000401043300000b300440019700000b75044001c70000000000410435000000020160008a00001eb20000013d000000010160008a000000000401043300000b300440019700000b75044001c700000000004104350000000004050019000000400100043d000000200510003900000b7606000041000000000065043500000037051000390000000062020434000000000002004b00001ec70000613d000000000700001900000000085700190000000009760019000000000909043300000000009804350000002007700039000000000027004b00001ec00000413d000000000552001900000000000504350000000002120019000000570520003900000b77060000410000000000650435000000370520003900000b780600004100000000006504350000008d0520003900000b790600004100000000006504350000006d0520003900000b7a06000041000000000065043500000091052000390000000004040433000000000004004b00001ee20000613d000000000600001900000000075600190000000008630019000000000808043300000000008704350000002006600039000000000046004b00001edb0000413d000000000354001900000000000304350000000002240019000000910320003900000b7b040000410000000000430435000000000212004900000073032000390000000000310435000000b20220003900000bbf032001970000000002130019000000000032004b0000000003000039000000010300403900000ab10020009c000005ad0000213d0000000100300190000005ad0000c13d000000400020043f0000001705000029000000003905043400000040045000390000000004040433001400000004001d000000000603043300000060035000390000000007030433000000000007004b000000200320003900001f0a0000c13d00000aa40020009c000005ad0000213d0000004007200039000000400070043f00000b310700004100000000007304350000000107000039000000000072043500001f3e0000013d000000000b0700190000000008000019000000000a080019000000010880003a0000077c0000613d0000000900b0008c0000000a0bb0011a00001f0c0000213d00000b7000a0009c000005ad0000213d00000bbf0aa001970000005f0ba0003900000bbf0cb00197000000000b2c00190000000000cb004b000000000c000039000000010c00403900000ab100b0009c000005ad0000213d0000000100c00190000005ad0000c13d0000004000b0043f0000000000820435000000200aa0003900000bbf0ba001980000001f0aa0018f00001f2d0000613d000000000bb30019000000000c000031000000020cc00367000000000d03001900000000ce0c043c000000000ded04360000000000bd004b00001f290000c13d00000000000a004b000000000008004b0000077c0000613d000000010880008a000000000a02043300000000008a004b000020020000a13d000000000a380019000000090070008c0000000ab770011a000000f80bb00210000000000c0a043300000b300cc00197000000000bcb019f00000b310bb001c70000000000ba043500001f2e0000213d000000400a00043d00000aa400a0009c000005ad0000213d000000e00550003900000000050504330000004007a00039000000400070043f000000000005004b0000000405000039000000050500603900000000085a043600000b7f0500004100000b7e050060410000000000580435000000400700043d000000400570003900000b800b0000410000000000b50435000000200570003900000b810b0000410000000000b50435000000480b70003900000000c9090434000000000009004b00001f5f0000613d000000000d000019000000000ebd0019000000000fdc0019000000000f0f04330000000000fe0435000000200dd0003900000000009d004b00001f580000413d000000000cb90019000000230bc0003900000b820900004100000000009b043500000b830b0000410000000000bc0435000000030dc0003900000b840e0000410000000000ed0435000000270cc0003900000000d6060434000000000006004b00001f740000613d000000000e000019000000000fce00190000000004ed0019000000000404043300000000004f0435000000200ee0003900000000006e004b00001f6d0000413d0000000004c60019000000230640003900000000009604350000000000b40435000000030640003900000b85090000410000000000960435000000270640003900000014040000290000000094040434000000000004004b00001f880000613d000000000b000019000000000c6b0019000000000db90019000000000d0d04330000000000dc0435000000200bb0003900000000004b004b00001f810000413d0000000004640019000000230640003900000b8609000041000000000096043500000b83060000410000000000640435000000030640003900000b8709000041000000000096043500000029044000390000000002020433000000000002004b00001f9d0000613d00000000060000190000000009460019000000000b630019000000000b0b04330000000000b904350000002006600039000000000026004b00001f960000413d0000000002420019000000220320003900000b8804000041000000000043043500000b89030000410000000000320435000000020320003900000b8a040000410000000000430435000000260220003900000000030a0433000000000003004b00001fb20000613d000000000400001900000000062400190000000009840019000000000909043300000000009604350000002004400039000000000034004b00001fab0000413d000000000223001900000b8b03000041000000000032043500000000027200490000001f0320008a000000000037043500000bbf022001970000000002520019001400000002001d00000ab10020009c000005ad0000213d000000140070006b000005ad0000413d0000001404000029000000400040043f000000200240003900000b8c0300004100000000003204350000002f034000390000000002070433000000000002004b00001fd00000613d000000000400001900000000063400190000000007540019000000000707043300000000007604350000002004400039000000000024004b00001fc90000413d000000000332001900000b8d040000410000000000430435000000110320003900000014040000290000000000340435000000500220003900000bbf022001970000000004420019000000000024004b0000000002000039000000010200403900000ab10040009c000005ad0000213d0000000100200190000005ad0000c13d001300000004001d000000400040043f00000020024000392a4a22f30000040f000000000201001900000014010000292a4a22f30000040f00000013030000290000000002310049000000200120008a000000000013043500000000010300192a4a203a0000040f00000013010000292a4a29a10000040f00000b8e02000041000000400400043d001400000004001d000000200340003900000000002304350000003d024000392a4a22f30000040f00000014030000290000000002310049000000200120008a000000000013043500000000010300192a4a203a0000040f000000400100043d001300000001001d00000014020000292a4a20080000040f0000001302000029000004180000013d00000b7c01000041000000000010043f0000003201000039000000040010043f00000b7d0100004100002a4c0001043000000020030000390000000004310436000000003202043400000000002404350000004001100039000000000002004b000020170000613d000000000400001900000000051400190000000006430019000000000606043300000000006504350000002004400039000000000024004b000020100000413d000000000312001900000000000304350000001f0220003900000bbf022001970000000001120019000000000001042d00000bc20010009c0000202d0000213d000000630010008c0000202d0000a13d00000002030003670000000401300370000000000101043b00000a9e0010009c0000202d0000213d0000002402300370000000000202043b00000a9e0020009c0000202d0000213d0000004403300370000000000303043b000000000001042d000000000100001900002a4c0001043000000bc30010009c000020340000813d0000002001100039000000400010043f000000000001042d00000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c000104300000001f0220003900000bbf022001970000000001120019000000000021004b0000000002000039000000010200403900000ab10010009c000020460000213d0000000100200190000020460000c13d000000400010043f000000000001042d00000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c000104300001000000000002000100000001001d000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000206f0000613d000000000101043b000000000101041a00000a9e00100198000020710000613d0000000101000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000206f0000613d000000000101043b000000000101041a00000a9e01100197000000000001042d000000000100001900002a4c00010430000000400100043d000000640210003900000bc4030000410000000000320435000000440210003900000bc503000041000000000032043500000024021000390000002c03000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c00010430000000000001004b000020880000613d000000000001042d000000400100043d000000640210003900000bc6030000410000000000320435000000440210003900000bc703000041000000000032043500000024021000390000003103000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c00010430000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000020ad0000613d000000000101043b000000000101041a00000a9e01100198000020af0000613d000000000001042d000000000100001900002a4c00010430000000400100043d000000640210003900000bb9030000410000000000320435000000440210003900000bba03000041000000000032043500000024021000390000002903000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c0001043000000a9e02200197000000000020043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000020d10000613d000000000101043b000000000001042d000000000100001900002a4c000104300009000000000002000100000004001d000400000002001d000500000001001d000700000003001d000000000030043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00000a9e001001980000226c0000613d0000000701000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00000a9e011001980000225c0000613d000000000200041100030a9e0020019b000000030010006b0000213d0000613d000000000010043f0000000501000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b0000000302000029000000000020043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a000000ff001001900000213d0000c13d0000000701000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00000a9e00100198000022990000613d0000000701000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00000a9e01100197000000030010006c000022a00000c13d0000000701000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00060a9e0010019c0000225c0000613d000000050100002900000a9e01100197000000060010006b000022760000c13d000000040100002900050a9e0010019c000022800000613d0000000701000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000201041a00000a9d02200197000000000021041b0000000701000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000101041a00000a9e051001980000225c0000613d000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000bb604000041000000000600001900000007070000292a4a2a400000040f00000001002001900000225a0000613d0000000601000029000000000010043f0000000301000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000201041a000000000002004b000022660000613d000000010220008a000000000021041b0000000501000029000000000010043f0000000301000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000201041a000000010220003a000022660000613d000000000021041b0000000701000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000225a0000613d000000000101043b000000000201041a00000a9d022001970000000506000029000000000262019f000000000021041b000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000b9704000041000000060500002900000007070000292a4a2a400000040f00000001002001900000225a0000613d0000000001000415000200000001001d00000b9801000041000000000010044300000004010000290000000400100443000000000100041400000a940010009c00000a9401008041000000c00110021000000b99011001c700008002020000392a4a2a450000040f0000000100200190000022940000613d000000000101043b000000000001004b000022070000613d000000400b00043d0000006401b00039000000800700003900000000007104350000004401b00039000000070200002900000000002104350000002401b000390000000602000029000000000021043500000b9a0100004100000000001b04350000000401b00039000000030200002900000000002104350000008403b00039000000010100002900000000210104340000000000130435000000a403b00039000000000001004b000021f90000613d000000000400001900000000053400190000000006420019000000000606043300000000006504350000002004400039000000000014004b000021f20000413d0000000002310019000000000002043500000000040004140000000502000029000000040020008c0000220b0000c13d0000000005000415000000090550008a00000005055002100000000103000031000000200030008c00000020040000390000000004034019000022410000013d000000000100041500000002011000690000000001000002000000000001042d000600000007001d0000001f0110003900000bbf01100197000000a40110003900000a940010009c00000a9401008041000000600110021000000a9400b0009c00000a940300004100000000030b40190000004003300210000000000131019f00000a940040009c00000a9404008041000000c003400210000000000113019f00070000000b001d2a4a2a400000040f000000070b000029000000600310027000000a9403300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000222d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000022290000c13d000000000006004b0000223a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f0000000000650435000100000003001f00030000000103550000000005000415000000080550008a00000005055002100000000100200190000022950000613d0000001f01400039000000600210018f0000000001b20019000000000021004b0000000002000039000000010200403900000ab10010009c000022e40000213d0000000100200190000022e40000c13d000000400010043f000000200030008c0000225a0000413d00000000010b043300000b9e001001980000225a0000c13d0000000502500270000000000201001f00000000020004150000000202200069000000000200000200000b9f0110019700000b9a0010009c000022d40000c13d000000000001042d000000000100001900002a4c00010430000000400100043d000000640210003900000bb9030000410000000000320435000000440210003900000bba03000041000000000032043500000024021000390000002903000039000022890000013d00000b7c01000041000000000010043f0000001101000039000000040010043f00000b7d0100004100002a4c00010430000000400100043d000000640210003900000bc4030000410000000000320435000000440210003900000bcc03000041000000000032043500000024021000390000002c03000039000022890000013d000000400100043d000000640210003900000bc8030000410000000000320435000000440210003900000bc903000041000000000032043500000024021000390000002503000039000022890000013d000000400100043d000000640210003900000bca030000410000000000320435000000440210003900000bcb03000041000000000032043500000024021000390000002403000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c00010430000000000001042f000000000003004b000022aa0000c13d0000006002000039000022d10000013d000000400100043d000000640210003900000bc4030000410000000000320435000000440210003900000bc503000041000022720000013d000000400100043d000000640210003900000bc6030000410000000000320435000000440210003900000bc703000041000000000032043500000024021000390000003103000039000022890000013d0000001f0230003900000b9b022001970000003f0220003900000b9c04200197000000400200043d0000000004420019000000000024004b0000000005000039000000010500403900000ab10040009c000022e40000213d0000000100500190000022e40000c13d000000400040043f0000001f0430018f000000000632043600000b9d05300198000600000006001d0000000003560019000022c40000613d000000000601034f0000000607000029000000006806043c0000000007870436000000000037004b000022c00000c13d000000000004004b000022d10000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f00000000001304350000000001020433000000000001004b000022ea0000c13d000000400200043d000700000002001d00000aff01000041000000000012043500000004012000392a4a29940000040f0000000702000029000000000121004900000a940010009c00000a9401008041000000600110021000000a940020009c00000a94020080410000004002200210000000000121019f00002a4c0001043000000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c00010430000000060200002900000a940020009c00000a9402008041000000400220021000000a940010009c00000a94010080410000006001100210000000000121019f00002a4c000104300000000031010434000000000001004b000022fe0000613d000000000400001900000000052400190000000006430019000000000606043300000000006504350000002004400039000000000014004b000022f70000413d00000000012100190000000000010435000000000001042d0002000000000002000100000001001d000200000002001d000000000020043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b000000000101041a00000a9e00100198000023710000613d0000000201000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b000000000101041a00000a9e011001980000237b0000613d000000010200002900000a9e02200197000000000012004b0000232b0000c13d0000000101000039000000000001042d000100000002001d000000000010043f0000000501000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b0000000102000029000000000020043f000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b000000000101041a000000ff011001900000234a0000613d000000000001042d0000000201000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b000000000101041a00000a9e001001980000238f0000613d0000000201000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000236f0000613d000000000101043b000000000101041a00000a9e01100197000000010010006c00000000010000390000000101006039000000000001042d000000000100001900002a4c00010430000000400100043d000000640210003900000bc4030000410000000000320435000000440210003900000bcc03000041000000000032043500000024021000390000002c03000039000023840000013d000000400100043d000000640210003900000bb9030000410000000000320435000000440210003900000bba03000041000000000032043500000024021000390000002903000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c00010430000000400100043d000000640210003900000bc4030000410000000000320435000000440210003900000bc503000041000023770000013d0004000000000002000100000002001d000200000001001d000400000003001d000000000030043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000101041a00030a9e0010019c000024280000613d000000020100002900000a9e01100197000000030010006b000024380000c13d000000010100002900020a9e0010019c000024420000613d0000000401000029000000000010043f0000000401000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000201041a00000a9d02200197000000000021041b0000000401000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000101041a00000a9e05100198000024280000613d000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000bb604000041000000000600001900000004070000292a4a2a400000040f0000000100200190000024260000613d0000000301000029000000000010043f0000000301000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000201041a000000000002004b000024320000613d000000010220008a000000000021041b0000000201000029000000000010043f0000000301000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000201041a000000010220003a000024320000613d000000000021041b0000000401000029000000000010043f0000000201000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f0000000100200190000024260000613d000000000101043b000000000201041a00000a9d022001970000000206000029000000000262019f000000000021041b000000000100041400000a940010009c00000a9401008041000000c00110021000000a9f011001c70000800d02000039000000040300003900000b9704000041000000030500002900000004070000292a4a2a400000040f0000000100200190000024260000613d000000000001042d000000000100001900002a4c00010430000000400100043d000000640210003900000bb9030000410000000000320435000000440210003900000bba030000410000000000320435000000240210003900000029030000390000244b0000013d00000b7c01000041000000000010043f0000001101000039000000040010043f00000b7d0100004100002a4c00010430000000400100043d000000640210003900000bc8030000410000000000320435000000440210003900000bc9030000410000000000320435000000240210003900000025030000390000244b0000013d000000400100043d000000640210003900000bca030000410000000000320435000000440210003900000bcb03000041000000000032043500000024021000390000002403000039000000000032043500000aff02000041000000000021043500000004021000390000002003000039000000000032043500000a940010009c00000a9401008041000000400110021000000bb5011001c700002a4c00010430000d000000000002000c00000001001d000000400100043d000d00000001001d00000bcd010000410000000000100443000000000100041400000a940010009c00000a9401008041000000c00110021000000bce011001c70000800b020000392a4a2a450000040f0000000100200190000029930000613d0000000d030000290000002002300039000000000101043b000600000001001d000000000012043500000040013000390000000c0400002900000000004104350000004001000039000000000013043500000bcf0030009c000029790000813d0000006001300039000000400010043f00000a940020009c00000a94020080410000004001200210000000000203043300000a940020009c00000a94020080410000006002200210000000000112019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d000000000401043b000000400100043d000000400210003900000bd00300004100000000003204350000002b020000390000000002210436000d00000004001d000000000042043500000b280010009c000029790000213d0000006003100039000000400030043f00000a940020009c00000a94020080410000004002200210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b02000039000000000202041a000000000002004b000029870000613d000000000401043b000000400100043d000000400310003900000bd105000041000000000053043500000020031000390000000d0500002900000000005304350000002705000039000000000051043500000000202400d9000b00000002001d00000b280010009c000029790000213d0000006002100039000000400020043f00000a940030009c00000a94030080410000004002300210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c02000039000000000202041a000000000002004b000029870000613d000000000401043b000000400100043d000000400310003900000bd205000041000000000053043500000020031000390000000d0500002900000000005304350000002705000039000000000051043500000000202400d9000a00000002001d00000b280010009c000029790000213d0000006002100039000000400020043f00000a940030009c00000a94030080410000004002300210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000d02000039000000000202041a000000000002004b000029870000613d000000000401043b000000400100043d000000400310003900000bd305000041000000000053043500000020031000390000000d0500002900000000005304350000002a05000039000000000051043500000000202400d9000900000002001d00000b280010009c000029790000213d0000006002100039000000400020043f00000a940030009c00000a94030080410000004002300210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d000000000301043b000000400100043d000000400210003900000bd404000041000000000042043500000020021000390000000d04000029000000000042043500000026040000390000000000410435000000053030011a000500000003001d00000b280010009c000029790000213d0000006003100039000000400030043f00000a940020009c00000a94020080410000004002200210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000e02000039000000000202041a000000000002004b000029870000613d000000000401043b000000400100043d000000400310003900000bd505000041000000000053043500000020031000390000000d0500002900000000005304350000002605000039000000000051043500000000202400d9000800000002001d00000b280010009c000029790000213d0000006002100039000000400020043f00000a940030009c00000a94030080410000004002300210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000f02000039000000000202041a000000000002004b000029870000613d000000000401043b000000400100043d000000400310003900000bd605000041000000000053043500000020031000390000000d0500002900000000005304350000002805000039000000000051043500000000202400d9000700000002001d00000b280010009c000029790000213d0000006002100039000000400020043f00000a940030009c00000a94030080410000004002300210000000000101043300000a940010009c00000a94010080410000006001100210000000000121019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d000000000101043b000400000001001d0000000b03000039000000000103041a0000000b0010006c0000000c020000290000000c040000390000000d050000390000298d0000a13d000000000030043f000000000104041a0000000a0010006c0000298d0000a13d000000000040043f000000000105041a000000090010006c0000298d0000a13d000000000050043f0000000e01000039000000000101041a000000080010006c0000298d0000a13d0000000e01000039000000000010043f0000000f01000039000000000101041a000000070010006c0000298d0000a13d000000000020043f0000000a01000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d000000000201043b000000400600043d00000b050060009c000029790000213d0000000b0100002900000aac0110009a0000000802200039000000000202041a000300000002001d0000012007600039000000400070043f000000000201041a000000010320019000000001052002700000007f0550618f0000001f0050008c00000000040000390000000104002039000000000043004b000029810000c13d0000000000570435000000000003004b000d00000006001d000025e00000613d000b00000005001d000200000007001d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b08000029000000000008004b000025e70000613d0000000d060000290000014002600039000000000301043b000000000100001900000002070000290000000004120019000000000503041a000000000054043500000001033000390000002001100039000000000081004b000025d80000413d000025ea0000013d00000bbe0120019700000140026000390000000000120435000000000005004b00000020010000390000000001006039000025ea0000013d00000000010000190000000d0600002900000002070000290000003f0110003900000bbf011001970000000002710019000000000012004b0000000001000039000000010100403900000ab10020009c000029790000213d0000000100100190000029790000c13d0000000a0100002900000abb0110009a000000400020043f0000000002760436000b00000002001d000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000442013f0000000100400190000029810000c13d000000400500043d0000000004750436000000000003004b000026240000613d000100000004001d000a00000007001d000200000005001d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000a07000029000000000007004b0000262a0000613d000000000201043b00000000010000190000000d06000029000000020500002900000001080000290000000003180019000000000402041a000000000043043500000001022000390000002001100039000000000071004b0000261c0000413d0000262d0000013d00000bbe012001970000000000140435000000000007004b000000200100003900000000010060390000262d0000013d00000000010000190000000d0600002900000002050000290000003f0110003900000bbf011001970000000002510019000000000012004b0000000001000039000000010100403900000ab10020009c000029790000213d0000000100100190000029790000c13d000000090100002900000ac70110009a000000400020043f0000000b020000290000000000520435000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000442013f0000000100400190000029810000c13d000000400500043d0000000004750436000000000003004b000026670000613d000200000004001d000900000007001d000a00000005001d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000907000029000000000007004b0000266d0000613d000000000201043b00000000010000190000000d060000290000000a0500002900000002080000290000000003180019000000000402041a000000000043043500000001022000390000002001100039000000000071004b0000265f0000413d000026700000013d00000bbe012001970000000000140435000000000007004b00000020010000390000000001006039000026700000013d00000000010000190000000d060000290000000a050000290000003f0110003900000bbf011001970000000002510019000000000012004b0000000001000039000000010100403900000ab10020009c000029790000213d0000000100100190000029790000c13d00000005010000290000000303100039000000080100002900000ad30110009a000000400020043f00000080046000390000000602000029000800000004001d00000000002404350000006002600039000900000002001d00000000003204350000004002600039000a00000002001d0000000000520435000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000442013f0000000100400190000029810000c13d000000400500043d0000000004750436000000000003004b000026b40000613d000200000004001d000600000007001d000500000005001d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000607000029000000000007004b000026ba0000613d000000000201043b00000000010000190000000d06000029000000050500002900000002080000290000000003180019000000000402041a000000000043043500000001022000390000002001100039000000000071004b000026ac0000413d000026bd0000013d00000bbe012001970000000000140435000000000007004b00000020010000390000000001006039000026bd0000013d00000000010000190000000d0600002900000005050000290000003f0110003900000bbf011001970000000002510019000000000012004b0000000001000039000000010100403900000ab10020009c000029790000213d0000000100100190000029790000c13d000000070100002900000ad70110009a000000400020043f000000a002600039000700000002001d0000000000520435000000000201041a000000010320019000000001072002700000007f0770618f0000001f0070008c00000000040000390000000104002039000000000442013f0000000100400190000029810000c13d000000400500043d0000000004750436000000000003004b000026f80000613d000200000004001d000600000007001d000500000005001d000000000010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000607000029000000000007004b000026fe0000613d000000000201043b00000000010000190000000d06000029000000050500002900000002080000290000000003180019000000000402041a000000000043043500000001022000390000002001100039000000000071004b000026f00000413d000027010000013d00000bbe012001970000000000140435000000000007004b00000020010000390000000001006039000027010000013d00000000010000190000000d0600002900000005050000290000003f0110003900000bbf021001970000000001520019000000000021004b0000000002000039000000010200403900000ab10010009c000029790000213d0000000100200190000029790000c13d00000004020000290000000100200190000000400010043f0000010001600039000500000001001d0000000302000029000000000021043500000000010000390000000101006039000000e002600039000400000002001d0000000000120435000000c001600039000600000001001d00000000005104350000000c01000029000000000010043f0000000a01000039000000200010043f000000000100041400000a940010009c00000a9401008041000000c00110021000000b04011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d000000000601043b0000000d010000290000000003010433000000005403043400000ab10040009c000029790000213d000000000106041a000000010010019000000001071002700000007f0770618f0000001f0070008c00000000020000390000000102002039000000000121013f0000000100100190000029810000c13d000000200070008c000d00000006001d000c00000004001d000300000003001d0000275b0000413d000100000007001d000200000005001d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000d0600002900000002050000290000275b0000813d000000000002041b0000000102200039000000000012004b000027570000413d000000200040008c000027860000413d000000000060043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c0700002900000bbf02700198000000000101043b0000000308000029000027fd0000613d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000000d0600002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000027720000c13d000000000072004b000027830000813d0000000302700210000000f80220018f00000bc10220027f00000bc10220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf000027910000013d000000000004004b000027900000613d000000030140021000000bc10110027f00000bc1011001670000000002050433000000000112016f0000000102400210000000000121019f000027910000013d0000000001000019000000000016041b0000000b010000290000000003010433000000005403043400000ab10040009c000029790000213d0000000107600039000000000107041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f0000000100100190000029810000c13d000000200080008c000b00000007001d000c00000004001d000300000003001d000027c70000413d000100000008001d000200000005001d000000000070043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000001010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000d060000290000000b070000290000000205000029000027c70000813d000000000002041b0000000102200039000000000012004b000027c30000413d000000200040008c000027f30000413d000000000070043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c0800002900000bbf02800198000000000101043b0000000309000029000028700000613d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000000d060000290000000b0700002900000000059300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000027df0000c13d000000000082004b000027f00000813d0000000302800210000000f80220018f00000bc10220027f00000bc10220016700000000039300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf000028030000013d000000000004004b000028020000613d000000030140021000000bc10110027f00000bc1011001670000000002050433000000000112016f0000000102400210000000000121019f000028030000013d00000020030000390000000d06000029000000000072004b0000277b0000413d000027830000013d0000000001000019000000000017041b0000000a010000290000000003010433000000007503043400000ab10050009c000029790000213d0000000204600039000000000104041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f0000000100100190000029810000c13d000000200080008c000c00000004001d000b00000005001d000a00000003001d000028390000413d000200000008001d000300000007001d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000002010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000d060000290000000c040000290000000307000029000028390000813d000000000002041b0000000102200039000000000012004b000028350000413d000000200050008c000028660000413d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b0700002900000bbf02700198000000000101043b0000000a08000029000028eb0000613d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000000d0600002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000028500000c13d000000000072004b000028610000813d0000000302700210000000f80220018f00000bc10220027f00000bc10220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf00000008030000290000000c04000029000028780000013d000000000005004b000028760000613d000000030150021000000bc10110027f00000bc1011001670000000002070433000000000112016f0000000102500210000000000121019f000028770000013d00000020030000390000000d060000290000000b07000029000000000082004b000027e80000413d000027f00000013d00000000010000190000000803000029000000000014041b000000090100002900000000010104330000000302600039000000000012041b00000000010304330000000402600039000000000012041b00000007010000290000000003010433000000005403043400000ab10040009c000029790000213d0000000507600039000000000107041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f0000000100100190000029810000c13d000000200080008c000b00000007001d000c00000004001d000a00000003001d000028b50000413d000800000008001d000900000005001d000000000070043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c040000290000001f024000390000000502200270000000200040008c0000000002004019000000000301043b00000008010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000d060000290000000b070000290000000905000029000028b50000813d000000000002041b0000000102200039000000000012004b000028b10000413d000000200040008c000028e10000413d000000000070043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000c0800002900000bbf02800198000000000101043b0000000a090000290000295e0000613d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000000d060000290000000b0700002900000000059300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b000028cd0000c13d000000000082004b000028de0000813d0000000302800210000000f80220018f00000bc10220027f00000bc10220016700000000039300190000000003030433000000000223016f000000000021041b000000010180021000000001011001bf000028f10000013d000000000004004b000028f00000613d000000030140021000000bc10110027f00000bc1011001670000000002050433000000000112016f0000000102400210000000000121019f000028f10000013d00000020030000390000000d06000029000000000072004b000028590000413d000028610000013d0000000001000019000000000017041b00000006010000290000000003010433000000007503043400000ab10050009c000029790000213d0000000604600039000000000104041a000000010010019000000001081002700000007f0880618f0000001f0080008c00000000020000390000000102002039000000000121013f0000000100100190000029810000c13d000000200080008c000c00000004001d000b00000005001d000a00000003001d000029270000413d000800000008001d000900000007001d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b050000290000001f025000390000000502200270000000200050008c0000000002004019000000000301043b00000008010000290000001f01100039000000050110027000000000011300190000000002230019000000000012004b0000000d060000290000000c040000290000000907000029000029270000813d000000000002041b0000000102200039000000000012004b000029230000413d000000200050008c000029540000413d000000000040043f000000000100041400000a940010009c00000a9401008041000000c00110021000000aaf011001c700008010020000392a4a2a450000040f00000001002001900000297f0000613d0000000b0700002900000bbf02700198000000000101043b0000000a08000029000029740000613d000000010320008a00000005033002700000000004310019000000200300003900000001044000390000000d0600002900000000058300190000000005050433000000000051041b00000020033000390000000101100039000000000041004b0000293e0000c13d000000000072004b0000294f0000813d0000000302700210000000f80220018f00000bc10220027f00000bc10220016700000000038300190000000003030433000000000223016f000000000021041b000000010170021000000001011001bf000001000300008a0000000c04000029000029660000013d000000000005004b000029640000613d000000030150021000000bc10110027f00000bc1011001670000000002070433000000000112016f0000000102500210000000000121019f000029650000013d00000020030000390000000d060000290000000b07000029000000000082004b000028d60000413d000028de0000013d0000000001000019000001000300008a000000000014041b0000000701600039000000000201041a000000000232016f00000004030000290000000003030433000000000003004b000000010220c1bf000000000021041b000000080160003900000005020000290000000002020433000000000021041b000000000001042d00000020030000390000000d06000029000000000072004b000029470000413d0000294f0000013d00000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c00010430000000000100001900002a4c0001043000000b7c01000041000000000010043f0000002201000039000000040010043f00000b7d0100004100002a4c0001043000000b7c01000041000000000010043f0000001201000039000000040010043f00000b7d0100004100002a4c0001043000000b7c01000041000000000010043f0000003201000039000000040010043f00000b7d0100004100002a4c00010430000000000001042f000000600210003900000bd7030000410000000000320435000000400210003900000bd8030000410000000000320435000000200210003900000032030000390000000000320435000000200200003900000000002104350000008001100039000000000001042d000000400200043d0000000003010433000000000003004b00002a100000613d00000b280020009c00002a1e0000213d0000006003200039000000400030043f000000400320003900000b71040000410000000000430435000000200320003900000b7204000041000000000043043500000040030000390000000000320435000000000301043300000bd90030009c00002a240000813d00000b740030009c00002a1e0000213d0000000203300039000000030330011a00000002043002100000001f0340003900000bbf053001970000003f0350003900000bbf06300197000000400300043d0000000006630019000000000036004b0000000007000039000000010700403900000ab10060009c00002a1e0000213d000000010070019000002a1e0000c13d000000400060043f0000000004430436000000000005004b000029d20000613d0000000005540019000000000600003100000002066003670000000007040019000000006806043c0000000007870436000000000057004b000029ce0000c13d00000000060104330000000005160019000000000015004b00002a040000a13d000000010220003900000000060100190000000306600039000000000706043300000012087002700000003f0880018f00000000088200190000000008080433000000f808800210000000000904043300000b3009900197000000000889019f00000000008404350000000c087002700000003f0880018f00000000088200190000000008080433000000f8088002100000000109400039000000000a09043300000b300aa0019700000000088a019f000000000089043500000006087002700000003f0880018f00000000088200190000000008080433000000f8088002100000000209400039000000000a09043300000b300aa0019700000000088a019f00000000008904350000003f0770018f00000000077200190000000007070433000000f8077002100000000308400039000000000908043300000b3009900197000000000779019f00000000007804350000000404400039000000000056004b000029d80000413d0000000006010433000000031060011a000000020010008c00002a170000613d000000010010008c00002a1c0000c13d000000010140008a000000000201043300000b300220019700000b75022001c70000000000210435000000020140008a00002a180000013d00000bc30020009c00002a1e0000813d0000002001200039000000400010043f00000000000204350000000001020019000000000001042d000000010140008a000000000201043300000b300220019700000b75022001c700000000002104350000000001030019000000000001042d00000b7c01000041000000000010043f0000004101000039000000040010043f00000b7d0100004100002a4c0001043000000b7c01000041000000000010043f0000001101000039000000040010043f00000b7d0100004100002a4c00010430000000000001042f00000a940010009c00000a9401008041000000400110021000000a940020009c00000a94020080410000006002200210000000000112019f000000000200041400000a940020009c00000a9402008041000000c002200210000000000112019f00000a9f011001c700008010020000392a4a2a450000040f000000010020019000002a3e0000613d000000000101043b000000000001042d000000000100001900002a4c0001043000002a43002104210000000102000039000000000001042d0000000002000019000000000001042d00002a48002104230000000102000039000000000001042d0000000002000019000000000001042d00002a4a0000043200002a4b0001042e00002a4c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff506c616365686f6c646572000000000000000000000000000000000000000000504c414345000000000000000000000000000000000000000000000000000000290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563d6f21326ab749d5729fcba5677c79037b459436ab7bff709c9d06ce9f10c1a9d506c616365686f6c646572000000000000000000000000000000000000000016b10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf64ef1d2ad89edf8c4d91132028e8195cdf30bb4b5053d4f8cd260341d4805f30a504c41434500000000000000000000000000000000000000000000000000000affffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff02000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000000000000000000000000000ffffffffffffff00000000000000000000000000000000000000000000000000fffffffffffffebf4752494400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbf52414449414c00000000000000000000000000000000000000000000000000004f52424954414c0000000000000000000000000000000000000000000000000053504952414c000000000000000000000000000000000000000000000000000054455353454c4c4154494f4e00000000000000000000000000000000000000004652414354414c00000000000000000000000000000000000000000000000000564f524f4e4f49000000000000000000000000000000000000000000000000004649424f4e414343490000000000000000000000000000000000000000000000fe8a4859c7bd88fc0f24184464406785daae8e84cb1860cc4a4eff72e05fe2470175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dc20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dc102000000000000000000000000000000000000200000000000000000000000000175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9000000000000000000000000000000000000000000000000ffffffffffffffff000000000000000000000000000000000000000000000000fffffffffffffeff4d4f4e445249414e000000000000000000000000000000000000000000000000424155484155530000000000000000000000000000000000000000000000000053555052454d415449534d000000000000000000000000000000000000000000434f4e53545255435449564953540000000000000000000000000000000000004d494e494d414c495354000000000000000000000000000000000000000000004d4f4445524e4953540000000000000000000000000000000000000000000000414253545241435400000000000000000000000000000000000000000000000047454f4d45545249430000000000000000000000000000000000000000000000209699368efae3c2ab13a6e9d9f9aceb6c5aebfb5ffd7bd0a9ff6281a30b5739df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8d0df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8cfdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7444f5453000000000000000000000000000000000000000000000000000000004c494e455300000000000000000000000000000000000000000000000000000043524f5353455300000000000000000000000000000000000000000000000000545249414e474c455300000000000000000000000000000000000000000000005351554152455300000000000000000000000000000000000000000000000000434952434c45530000000000000000000000000000000000000000000000000057415645530000000000000000000000000000000000000000000000000000004e4f495345000000000000000000000000000000000000000000000000000000284966fefa8e6efe2541488ebb0d5cc7a37fcc532c506816bdc596a17e52e14bd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1ebed7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1ebdd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5234439324232420000000000000000000000000000000000000000000000000023324235344439000000000000000000000000000000000000000000000000002345303141344600000000000000000000000000000000000000000000000000233043374335390000000000000000000000000000000000000000000000000023443430393230000000000000000000000000000000000000000000000000002332313736464600000000000000000000000000000000000000000000000000234536423331450000000000000000000000000000000000000000000000000023313631363136000000000000000000000000000000000000000000000000004484b5bab23cb6c6dcb7d0f87ddcd612e617dbb100a7d33dfb07aab3c9df3c03bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c406bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c405bb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd72eef71ef43483d822203fd126296c5f8bfc62fd930b15bdbf4bf082a7e537fe8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80b8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80a8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000715018a50000000000000000000000000000000000000000000000000000000095d89b4000000000000000000000000000000000000000000000000000000000b88d4fdd00000000000000000000000000000000000000000000000000000000e985e9c400000000000000000000000000000000000000000000000000000000e985e9c500000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b88d4fde00000000000000000000000000000000000000000000000000000000c87b56dd0000000000000000000000000000000000000000000000000000000095d89b4100000000000000000000000000000000000000000000000000000000a0712d6800000000000000000000000000000000000000000000000000000000a22cb46500000000000000000000000000000000000000000000000000000000853828b500000000000000000000000000000000000000000000000000000000853828b6000000000000000000000000000000000000000000000000000000008d859f3e000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000715018a6000000000000000000000000000000000000000000000000000000007fc897c2000000000000000000000000000000000000000000000000000000008456cb590000000000000000000000000000000000000000000000000000000032cb6b0b000000000000000000000000000000000000000000000000000000004f558e78000000000000000000000000000000000000000000000000000000006352211d000000000000000000000000000000000000000000000000000000006352211e0000000000000000000000000000000000000000000000000000000070a08231000000000000000000000000000000000000000000000000000000004f558e79000000000000000000000000000000000000000000000000000000005c975abb0000000000000000000000000000000000000000000000000000000032cb6b0c000000000000000000000000000000000000000000000000000000003f4ba83a0000000000000000000000000000000000000000000000000000000042842e0e00000000000000000000000000000000000000000000000000000000095ea7b200000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000018160ddd0000000000000000000000000000000000000000000000000000000023b872dd0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000081812fc08c379a0000000000000000000000000000000000000000000000000000000004f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000000000000000000000000000000000000000000200000000000000000000000000200000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffedf25222079313d223025222078323d2231303025222079323d2231303025223e006c6f723a000000000000000000000000000000000000000000000000000000003c73746f70206f66667365743d22302522207374796c653d2273746f702d636f3c6c696e6561724772616469656e742069643d226772616431222078313d2230222f3e0000000000000000000000000000000000000000000000000000000000636f6c6f723a00000000000000000000000000000000000000000000000000003c73746f70206f66667365743d223130302522207374796c653d2273746f702d3c2f6c696e6561724772616469656e743e0000000000000000000000000000005277d5f9f542e93efa60c72bc5f4ce0ddc21297228856cc5743c043cc102713a6865696768743d223230223e00000000000000000000000000000000000000006974733d227573657253706163654f6e557365222077696474683d22323022203c7061747465726e2069643d227061747465726e3122207061747465726e556e7751694f811ea66247e43859daaca060c8f168672f60243b3a09d7b570b52c5a3c726563742077696474683d22313022206865696768743d223130222066696c6c3d22000000000000000000000000000000000000000000000000000000000065696768743d223130222066696c6c3d220000000000000000000000000000003c7265637420783d2231302220793d223130222077696474683d2231302220683c2f7061747465726e3e000000000000000000000000000000000000000000003c636972636c652063783d223130222063793d2231302220723d2232222066696c6c3d22000000000000000000000000000000000000000000000000000000003022207374726f6b653d220000000000000000000000000000000000000000003c6c696e652078313d2230222079313d2230222078323d2230222079323d223222207374726f6b652d77696474683d22302e35222f3e000000000000000000003c6c696e652078313d2234222079313d2230222078323d2234222079323d22323c6c696e652078313d2238222079313d2230222078323d2238222079323d223222323022207374726f6b653d22000000000000000000000000000000000000003c6c696e652078313d223132222079313d2230222078323d223132222079323d3c6c696e652078313d223136222079313d2230222078323d223136222079323d30302f737667222076696577426f783d223020302034303020343030223e00003c646566733e00000000000000000000000000000000000000000000000000003c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f32303c2f646566733e0000000000000000000000000000000000000000000000000098054895a8eb2a569eef78893c1231d61b6fc0ef8efdc8e5ea619e2ea38fe5f4a289b1b9f6ed6026ae875eb9b305aeebff8c779fa349b5c71fdb4d3fee8cabe7000000000000000000000000000000000000000000000000ffffffffffffff9f696c6c3d2223313631363136222f3e00000000000000000000000000000000003c726563742077696474683d2234303022206865696768743d22343030222066223e0000000000000000000000000000000000000000000000000000000000003c67207472616e73666f726d3d227472616e736c617465283230302c323030293435000000000000000000000000000000000000000000000000000000000000302c313030303b313030302c303b302c31303030000000000000000000000000387300000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000031000000000000000000000000000000000000000000000000000000000000004d20302c0000000000000000000000000000000000000000000000000000000020412000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000203020302c3120302c2d00000000000000000000000000000000000000000000203020302c3120302c00000000000000000000000000000000000000000000003c7061746820643d220000000000000000000000000000000000000000000000222066696c6c3d226e6f6e6522207374726f6b653d2200000000000000000000746174652800000000000000000000000000000000000000000000000000000022207374726f6b652d77696474683d223222207472616e73666f726d3d22726f29223e00000000000000000000000000000000000000000000000000000000003c616e696d617465206174747269627574654e616d653d227374726f6b652d646173686172726179222076616c7565733d22000000000000000000000000000022206475723d22000000000000000000000000000000000000000000000000002220726570656174436f756e743d22696e646566696e697465222f3e000000003c2f706174683e000000000000000000000000000000000000000000000000002d34350000000000000000000000000000000000000000000000000000000000302c3830303b3830302c303b302c38303000000000000000000000000000000036730000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000743d22696e646566696e697465222f3e000000000000000000000000000000003c636972636c6520723d223630222066696c6c3d2275726c2823677261643129733d2236303b36353b363022206475723d2234732220726570656174436f756e3c616e696d617465206174747269627574654e616d653d2272222076616c75653c2f636972636c653e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f223e3c2f636972636c653e0000000000000000000000000000000000000000003c2f673e00000000000000000000000000000000000000000000000000000000696c6c3d2223463746374637222f3e0000000000000000000000000000000000323b343b3200000000000000000000000000000000000000000000000000000030730000000000000000000000000000000000000000000000000000000000003c636972636c6520723d2200000000000000000000000000000000000000000022207374726f6b652d77696474683d22000000000000000000000000000000003c616e696d617465206174747269627574654e616d653d227374726f6b652d7769647468222076616c7565733d2200000000000000000000000000000000000022206475723d2234732220626567696e3d2200000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000333b363b33000000000000000000000000000000000000000000000000000000317300000000000000000000000000000000000000000000000000000000000075726c28236772616431290000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000343b383b34000000000000000000000000000000000000000000000000000000327300000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003c636972636c6520723d223430222066696c6c3d2275726c2823677261643129696c6c3d2223464646464646222f3e0000000000000000000000000000000000696e3d22000000000000000000000000000000000000000000000000000000002076616c7565733d22302e353b313b302e3522206475723d22337322206265673c616e696d617465206174747269627574654e616d653d226f70616369747922000000000000000000000000000000000000000000000000ffffffffffffffdf3c7265637420783d2200000000000000000000000000000000000000000000002220793d22000000000000000000000000000000000000000000000000000000222077696474683d22000000000000000000000000000000000000000000000022206865696768743d2200000000000000000000000000000000000000000000222066696c6c3d220000000000000000000000000000000000000000000000003c2f726563743e0000000000000000000000000000000000000000000000000075726c28237061747465726e312900000000000000000000000000000000000022206865696768743d22323030222066696c6c3d2200000000000000000000003c7265637420783d223136302220793d22313630222077696474683d2232303022206f7061636974793d22302e38222f3e0000000000000000000000000000003c2f7376673e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fffffffffffffffe6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd000000000000000000000000000000000000000000000000bffffffffffffffd3d000000000000000000000000000000000000000000000000000000000000007b226e616d65223a2022506c616365686f6c646572202300000000000000000067656f6d657472696320617274207069656365222c2000000000000000000000222c20226465736372697074696f6e223a2022412067656e65726174697665206536342c0000000000000000000000000000000000000000000000000000000022696d616765223a2022646174613a696d6167652f7376672b786d6c3b626173222c0000000000000000000000000000000000000000000000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000066616c73650000000000000000000000000000000000000000000000000000007472756500000000000000000000000000000000000000000000000000000000616c7565223a20220000000000000000000000000000000000000000000000007b2274726169745f74797065223a2022436f6d706f736974696f6e222c202276223a202200000000000000000000000000000000000000000000000000000000227d2c00000000000000000000000000000000000000000000000000000000007b2274726169745f74797065223a202250616c65747465222c202276616c75657b2274726169745f74797065223a20225061747465726e222c202276616c75656c7565223a2000000000000000000000000000000000000000000000000000007b2274726169745f74797065223a2022436f6d706c6578697479222c2022766165223a20000000000000000000000000000000000000000000000000000000007d2c0000000000000000000000000000000000000000000000000000000000007b2274726169745f74797065223a2022416e696d61746564222c202276616c757d000000000000000000000000000000000000000000000000000000000000002261747472696275746573223a205b00000000000000000000000000000000005d7d000000000000000000000000000000000000000000000000000000000000646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000000000000000000000000000000000000000000000000000ffffffffffffff7f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c314552433732313a20617070726f766520746f2063616c6c657200000000000000000000000000000000000000000000000000006400000080000000000000000000000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000fffffffffffe00004552433732313a20746f6b656e20616c7265616479206d696e746564000000000000000000000000000000000000000000000064000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000000000000000000000000000000000000000000000000000ffffffe000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000004552433732313a206d696e7420746f20746865207a65726f2061646472657373496e73756666696369656e74207061796d656e7400000000000000000000000045786365656473206d617820737570706c790000000000000000000000000000436f756e74206d7573742062652031206f72203200000000000000000000000000000000000000000000000000000000000000200000008000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f395472616e73666572206661696c656400000000000000000000000000000000004e6f2062616c616e636520746f20776974686472617700000000000000000000020000000000000000000000000000000000002000000080000000000000000062e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2585061757361626c653a20706175736564000000000000000000000000000000004d757374206265206f776e65720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000470de4df81ffff5265656e7472616e637947756172643a207265656e7472616e742063616c6c004552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373000000000000000000000000000000000000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa5061757361626c653a206e6f74207061757365640000000000000000000000006e6572206e6f7220617070726f76656420666f7220616c6c00000000000000004552433732313a20617070726f76652063616c6c6572206973206e6f74206f7700000000000000000000000000000000000000840000000000000000000000008c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92572000000000000000000000000000000000000000000000000000000000000004552433732313a20617070726f76616c20746f2063757272656e74206f776e65656e7420746f6b656e00000000000000000000000000000000000000000000004552433732313a206f776e657220717565727920666f72206e6f6e657869737401ffc9a7000000000000000000000000000000000000000000000000000000005b5e139f0000000000000000000000000000000000000000000000000000000080ac58cd00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe0697374656e7420746f6b656e00000000000000000000000000000000000000004552433732313a20617070726f76656420717565727920666f72206e6f6e6578776e6572206e6f7220617070726f7665640000000000000000000000000000004552433732313a207472616e736665722063616c6c6572206973206e6f74206f6f776e65720000000000000000000000000000000000000000000000000000004552433732313a207472616e736665722066726f6d20696e636f72726563742072657373000000000000000000000000000000000000000000000000000000004552433732313a207472616e7366657220746f20746865207a65726f206164644552433732313a206f70657261746f7220717565727920666f72206e6f6e6578796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa0636f6d706f736974696f6e00000000000000000000000000000000000000000070616c65747465000000000000000000000000000000000000000000000000007061747465726e00000000000000000000000000000000000000000000000000636f6d706c657869747900000000000000000000000000000000000000000000636f6c6f72310000000000000000000000000000000000000000000000000000636f6c6f72320000000000000000000000000000000000000000000000000000616e696d6174656400000000000000000000000000000000000000000000000063656976657220696d706c656d656e74657200000000000000000000000000004552433732313a207472616e7366657220746f206e6f6e204552433732315265bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7701b3af612734ed0d073ca389c9468740fb54b085941b7f2f08055687c3ed21
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.