Contract 0x14AC2DA11C2CF07eA4c64C83BE108b8F11e48F20 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1251d18490c380efdf8f65e097ad80350a73a4968f41d3dd48e61db5d60de9810x6145d36133047022021-11-24 18:27:473 days 8 hrs ago0xc7f8d87734ab2cbf70030ac8aa82abfe3e8126cb IN  Contract Creation0 ETH0.161160493737 ETH
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NFTSVG

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 2 : NFTSVG.sol
// SPDX-License-Identifier: BUSL-1.1
// For further clarification please see https://license.premia.legal

pragma solidity ^0.8.0;

import {UintUtils} from "@solidstate/contracts/utils/UintUtils.sol";

library NFTSVG {
    using UintUtils for uint256;

    string constant ETH_COLOR_A = "#FFFFFF";
    string constant WBTC_COLOR_A = "#E2753B";
    string constant LINK_COLOR_A = "#376AFF";
    string constant DAI_COLOR_A = "#D1A663";
    string constant UNKNOWN_COLOR_A = "#52FFB2";

    string constant ETH_COLOR_B = "#FFFFFF";
    string constant WBTC_COLOR_B = "#E2923B";
    string constant LINK_COLOR_B = "#438BFF";
    string constant DAI_COLOR_B = "#D8A75B";
    string constant UNKNOWN_COLOR_B = "#52B4FF";

    string constant ETH_UNDERLYING_LOGO =
        '<path d="m68.86 132.9-7.7-13.4-7.73 13.4 7.72-3.66 7.71 3.65Zm-7.7 7.17-8.66-4.11 8.65 15.12 8.66-15.12-8.66 4.11Zm0-2.09-7.06-3.34 7.05-3.34 7.06 3.34-7.06 3.34Z" fill="#BBBBBB"/>';
    string constant WBTC_UNDERLYING_LOGO =
        '<path d="M52.79 153.08a16.29 16.29 0 1 1 0-32.58 16.29 16.29 0 0 1 0 32.58Zm0-31.31a15.01 15.01 0 1 0 .02 30.02 15.01 15.01 0 0 0-.02-30.02Zm8.55 5.65a12.66 12.66 0 0 0-17.09 0l-.91-.9a13.94 13.94 0 0 1 18.9 0l-.9.9Zm.83.81.9-.9v-.01a13.94 13.94 0 0 1 0 18.9l-.9-.9a12.66 12.66 0 0 0 0-17.09Zm-18.75 17.1a12.66 12.66 0 0 1 0-17.08l-.9-.9a13.94 13.94 0 0 0 0 18.9l.9-.92Zm.82.83a12.67 12.67 0 0 0 17.1 0l.9.9a13.94 13.94 0 0 1-18.9 0l.9-.9Zm14.2-12.35c-.18-1.87-1.8-2.5-3.83-2.69v-2.57h-1.57v2.52h-1.26v-2.52h-1.56v2.59h-3.2v1.68s1.17-.02 1.15 0c.43-.04.83.26.9.7v7.08c-.02.15-.09.29-.2.39a.55.55 0 0 1-.4.13c.02.02-1.15 0-1.15 0l-.3 1.88h3.17v2.63h1.57v-2.59h1.26v2.58h1.58v-2.6c2.66-.16 4.51-.81 4.74-3.3.2-2-.75-2.9-2.26-3.26.92-.45 1.49-1.29 1.36-2.66Zm-2.2 5.6c0 1.8-2.83 1.75-4.12 1.73h-.3v-3.47h.39c1.32-.04 4.02-.1 4.02 1.74Zm-4.16-3.32c1.08.02 3.42.06 3.42-1.58 0-1.67-2.26-1.61-3.37-1.58h-.32v3.16h.27Z" fill="#E2923B"/>';
    string constant LINK_UNDERLYING_LOGO =
        '<path d="m62.4 122 2.7-1.6L68 122l7.5 4.4 2.8 1.6v15l-2.8 1.6L68 149l-2.8 1.6-2.8-1.6-7.6-4.4-2.7-1.6v-15l2.7-1.6 7.6-4.4Zm-4.8 9.1v8.8l7.5 4.3 7.6-4.3V131l-7.6-4.3-7.5 4.3Z" fill="#3159CC"/>';
    string constant UNKNOWN_UNDERLYING_LOGO =
        '<path d="M46.8 119.5a16.3 16.3 0 1 1 0 32.6 16.3 16.3 0 0 1 0-32.6Zm0 20.6c-.5 0-.9.2-1.2.5a1.5 1.5 0 0 0 0 2.2 1.8 1.8 0 0 0 1.2.5c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1 0-.4-.2-.8-.5-1.1-.3-.3-.7-.5-1.1-.5Zm.2-11.8c-.6 0-1.2 0-1.8.3-.5.2-1 .4-1.4.8-.4.3-.8.8-1 1.3a5 5 0 0 0-.5 1.5v.2l2.4.3.2-.8a2 2 0 0 1 2-1.4c.5 0 1 .2 1.4.6.3.3.5.8.5 1.3 0 .4-.1.8-.3 1l-.5.7-.2.1-1 1-.6.6a3.2 3.2 0 0 0-.6 1.4v1.7H48v-1.3l.2-.6.4-.5.7-.6a16.5 16.5 0 0 0 1.5-1.6l.4-1 .2-1a4 4 0 0 0-.4-1.8c-.2-.4-.5-.9-1-1.2l-1.3-.8-1.7-.2Z" fill="#383838"/>';

    string constant DAI_BASE_LOGO =
        '<path d="M254 135.7a16.3 16.3 0 1 0-32.6 0 16.3 16.3 0 0 0 32.6 0Zm-24 9V139l-.2-.1h-2.2c-.1 0-.2 0-.2-.2v-2h2.4l.2-.1v-2H227.6c-.1 0-.2 0-.2-.2v-1.8c0-.1 0-.2.2-.2h2.2c.1 0 .2 0 .2-.2V127c0-.2 0-.2.2-.2h7.6l1.6.1a10 10 0 0 1 5 2.6l1.1 1.4.8 1.5c0 .2.2.2.3.2h1.8c.3 0 .3 0 .3.3v1.6c0 .2 0 .2-.3.2H247l-.1.2v1.9c0 .1 0 .2.2.2h1.6v1.8c0 .2 0 .3-.2.3h-2l-.3.1a8.1 8.1 0 0 1-3.2 4l-.2.2-1 .5a11 11 0 0 1-4.8 1h-7Zm14-12.2v-.1a4 4 0 0 0-.4-.7l-.7-1-.5-.4a7.3 7.3 0 0 0-4.8-1.7h-5.4c-.2 0-.2 0-.2.2v3.6c0 .1 0 .2.2.2H244Zm-5.7 4.4h6.2c.1 0 .2 0 .2-.2v-2h-12.5l-.2.1v2h6.3Zm5.2 2h.5v.3a6.6 6.6 0 0 1-2.8 2.8 7.7 7.7 0 0 1-3 .8l-.8.1h-5.2c-.2 0-.2 0-.2-.2v-3.5c0-.2 0-.2.2-.2h11.3Z" fill="#E3A94D"/>';
    string constant UNKNOWN_BASE_LOGO =
        '<path d="M253.79 119.5a16.29 16.29 0 1 1 0 32.58 16.29 16.29 0 0 1 0-32.58Zm-.02 20.63c-.45 0-.84.16-1.16.48a1.52 1.52 0 0 0 .01 2.23 1.78 1.78 0 0 0 1.15.45c.45 0 .84-.16 1.16-.47.32-.31.48-.7.48-1.13 0-.44-.16-.8-.5-1.1-.32-.3-.7-.46-1.14-.46Zm.22-11.84c-.62 0-1.21.1-1.76.28a4.2 4.2 0 0 0-2.49 2.11 5 5 0 0 0-.48 1.47l-.04.28 2.52.22c.01-.27.07-.53.16-.8a2.02 2.02 0 0 1 1.93-1.33c.62 0 1.09.19 1.43.55.33.36.5.8.5 1.34 0 .4-.1.76-.28 1.04-.14.22-.3.42-.48.6l-.19.18-.92.88c-.26.25-.47.48-.64.7a3.18 3.18 0 0 0-.64 1.41c-.03.2-.06.41-.07.65v1.01h2.42v-.53c0-.3.02-.55.06-.76.04-.2.11-.4.21-.57.1-.18.24-.36.41-.53.18-.18.4-.39.67-.62.31-.27.6-.53.85-.79.25-.25.47-.51.65-.79.17-.27.31-.57.4-.9.1-.32.15-.7.15-1.14 0-.65-.12-1.21-.35-1.7-.23-.5-.55-.91-.95-1.25-.4-.33-.87-.58-1.4-.75a5.4 5.4 0 0 0-1.66-.26Z" fill="#383838"/>';

    string constant DAI_BASE_LOGO_SMALL =
        '<path d="M125 260a7 7 0 1 0-14 0 7 7 0 0 0 14 0Zm-10.3 3.9v-2.4l-.1-.1h-1v-.9h1v-.9h-1v-.9h1v-2.5H118.8a4.3 4.3 0 0 1 2.2 1l.5.7.3.6.1.1h.9V259.5h-.7v1h.7v.8h-.9l-.1.2a3.5 3.5 0 0 1-1.4 1.7h-.1l-.4.3a4.7 4.7 0 0 1-2.1.4h-3Zm6-5.3c0-.1 0-.2-.2-.3 0-.2-.2-.3-.3-.4l-.2-.2a3.1 3.1 0 0 0-2-.8h-2.4V258.6h5.1Zm-2.4 1.9h2.7v-.9h-5.4v.9h2.7Zm2.2.9h.2c-.3.6-.7 1-1.2 1.3l-.4.2-1 .2h-2.5V261.3h4.9Z" fill="#646464"/>';
    string constant UNKNOWN_BASE_LOGO_SMALL =
        '<path d="M118 253a7 7 0 1 1 0 14 7 7 0 0 1 0-14Zm0 8.87c-.2 0-.37.06-.5.2a.65.65 0 0 0 0 .96.76.76 0 0 0 .5.2c.18 0 .35-.07.49-.21.14-.13.2-.3.2-.48a.62.62 0 0 0-.2-.48.7.7 0 0 0-.5-.2Zm.09-5.1c-.27 0-.52.05-.76.13a1.8 1.8 0 0 0-1.07.9c-.1.2-.17.4-.2.64l-.02.12 1.08.1c0-.12.03-.24.07-.35a.87.87 0 0 1 .83-.57c.26 0 .47.07.61.23s.22.35.22.58c0 .17-.04.32-.12.45l-.2.25-.09.08-.4.38c-.1.1-.2.2-.27.3a1.37 1.37 0 0 0-.28.6l-.03.28V261.33h1.04v-.23c0-.13.01-.24.03-.32a.8.8 0 0 1 .1-.25c.03-.08.1-.15.17-.23a7.09 7.09 0 0 0 .65-.6l.28-.34c.07-.12.13-.25.17-.39.04-.14.06-.3.06-.5 0-.27-.05-.51-.15-.72-.1-.22-.23-.4-.4-.54a1.8 1.8 0 0 0-.6-.32 2.32 2.32 0 0 0-.72-.11Z" fill="#646464"/>';

    struct CreateSVGParams {
        string baseSymbol;
        string underlyingSymbol;
        bool isCall;
        bool isLong;
        string maturityString;
        string strikePriceString;
    }

    function buildSVG(CreateSVGParams memory _params)
        public
        pure
        returns (string memory)
    {
        string memory tokens = buildTokens(
            _params.baseSymbol,
            _params.underlyingSymbol
        );
        string memory svgText = buildText(
            _params.baseSymbol,
            _params.underlyingSymbol,
            _params.strikePriceString,
            _params.maturityString
        );
        string memory svgDefs = buildDefs(
            _params.underlyingSymbol,
            _params.baseSymbol,
            _params.isLong
        );
        string memory shortLongTag = buildShortLongTag(_params.isLong);

        return
            string(
                abi.encodePacked(
                    '<svg width="300" height="378" viewBox="0 0 300 378" fill="none" xmlns="http://www.w3.org/2000/svg">',
                    svgDefs,
                    '<g transform="translate(.5 .5)" fill="none" fill-rule="evenodd">',
                    tokens,
                    _params.isCall ? buildCallRectangle() : buildPutRectangle(),
                    shortLongTag,
                    svgText,
                    "</g>",
                    "</svg>"
                )
            );
    }

    function buildTokens(
        string memory baseSymbol,
        string memory underlyingSymbol
    ) internal pure returns (string memory) {
        string memory baseLogoSmall = getBaseLogoSmall(baseSymbol);
        string memory baseLogo = getBaseLogo(baseSymbol);
        string memory underlyingLogo = getUnderlyingLogo(underlyingSymbol);

        return
            string(
                abi.encodePacked(
                    '<path d="M103 0a25 25 0 0 1 17.7 7.3l24 24.1c8.1 8 19 12.6 30.5 12.6h95.2A30 30 0 0 1 300 69.4V348a30 30 0 0 1-30 30H30a30 30 0 0 1-30-30V30A30 30 0 0 1 30 0h73Z" fill="#000" fill-rule="nonzero"/>',
                    '<path d="M19.9 150 1.1 163H16l16.8-13h.5l-16.7 13h14.9l14.7-13h.5l-14.6 13H47l12.6-13h.5l-12.5 13h14.9L73 150h.5l-10.4 13H78l8.4-13h.5l-8.3 13h14.9l6.3-13h.5l-6.2 13H109l4.2-13h.5l-4.1 13h14.9l2.1-13h.5l-2 13H140v-13h.5v13h15l-2-13h.4l2.2 13H171l-4.2-13h.5l4.3 13h14.9l-6.3-13h.5l6.4 13H202l-8.4-13h.5l8.5 13h14.9L207 150h.5l10.5 13h15l-12.6-13h.5l12.6 13h15l-14.7-13h.5l14.7 13h15l-16.8-13h.5l16.8 13h15l-18.9-13h.5l19 13h14.8L274 150h.5l21 13h4.5v.3h-4l4 2.4v.3l-4.5-2.8h-15l14 9.7h5.5v.3h-5l5 3.4v.4l-5.6-3.8h-16.5l12.5 9.6h9.6v.3h-9.2l9.2 7v.7l-9.9-7.7h-18l10.9 9.6h17v.4h-16.6l11.3 9.9h-.9l-11.2-10H263l9.7 10h-.9l-9.6-10h-19.6l8 10h-.8l-8-10h-19.6l6.5 10h-.9l-6.4-10h-19.6l4.9 10h-.9l-4.8-10h-19.6l3.3 10h-.9l-3.2-10H161l1.7 10h-.9l-1.5-10h-19.6v10h-.9v-10h-19.5l-1.6 10h-.9l1.7-10H99.9l-3.2 10h-.9l3.3-10H79.5l-4.8 10h-.9l5-10H59l-6.4 10h-.9l6.5-10H38.7l-8 10h-.9l8.1-10H18.3l-9.6 10h-.8l9.7-10H0v-.3h17.9l9.4-9.6H9.2L0 191.3v-.7l8.5-7.5H0v-.3h8.9l10.9-9.6H3.3L0 175.7v-.5l2.6-2H0v-.3h3l12.6-9.7H.6l-.6.5v-.8h.5L19.4 150h.5Zm138.8 33.1h-18v9.6h19.5l-1.5-9.6Zm-18.8 0h-18l-1.6 9.6H140v-9.6Zm-93.9 0H28l-9.3 9.6h19.5l7.8-9.6Zm18.8 0h-18l-7.8 9.6h19.5l6.3-9.6Zm18.8 0h-18l-6.3 9.6H79l4.7-9.6Zm18.8 0H84.3l-4.6 9.6h19.5l3.2-9.6Zm18.7 0h-18l-3.1 9.6h19.5l1.6-9.6Zm56.3 0h-18l1.6 9.6h19.5l-3-9.6Zm18.8 0h-18l3.1 9.6H201l-4.7-9.6Zm18.8 0h-18l4.7 9.6h19.5l-6.2-9.6Zm18.8 0h-18l6.2 9.6h19.5l-7.7-9.6Zm18.7 0h-18l7.8 9.6H262l-9.4-9.6Zm18.8 0h-18l9.3 9.6h19.6l-10.9-9.6Zm6-10h-16.6l11 9.7h18l-12.5-9.6Zm-17.2 0h-16.5l9.3 9.7h18l-10.8-9.6Zm-17.2 0h-16.5l7.8 9.7h18l-9.3-9.6Zm-17.2 0h-16.5l6.3 9.7h18l-7.8-9.6Zm-17.1 0H192l4.7 9.7h18l-6.2-9.6Zm-17.2 0H175l3.2 9.7h18l-4.7-9.6Zm-17.1 0h-16.5l1.5 9.7h18l-3-9.6Zm-17.2 0h-16.5v9.7h18l-1.5-9.6Zm-17.2 0h-16.5l-1.5 9.7h18v-9.6Zm-17.1 0h-16.5l-3.1 9.7h18l1.6-9.6Zm-17.2 0H89.1l-4.6 9.7h18l3.1-9.6Zm-17.2 0H72l-6.2 9.7h18l4.7-9.6Zm-17.1 0H54.8l-7.8 9.7h18l6.3-9.6Zm-17.2 0H37.6l-9.3 9.7h18l7.8-9.6Zm-17.1 0H20.5l-11 9.7h18l9.5-9.6Zm243-9.8h-15l12.5 9.6h16.4l-14-9.7Zm-15.6 0h-15l11 9.6h16.4l-12.4-9.7Zm-15.6 0h-15l9.4 9.6h16.5l-10.9-9.7Zm-15.5 0h-15l7.8 9.6h16.5l-9.3-9.7Zm-15.6 0h-15l6.3 9.6h16.5l-7.8-9.7Zm-15.5 0h-15l4.7 9.6h16.5l-6.2-9.7Zm-15.6 0h-15l3.2 9.6h16.5l-4.7-9.7Zm-15.5 0h-15l1.6 9.6h16.5l-3.1-9.7Zm-15.6 0h-15v9.6H157l-1.5-9.7Zm-15.5 0h-15l-1.5 9.6h16.4v-9.7Zm-15.6 0h-15l-3 9.6h16.4l1.6-9.7Zm-15.5 0h-15l-4.6 9.6h16.4l3.2-9.7Zm-15.6 0h-15l-6.1 9.6h16.4l4.7-9.7Zm-15.5 0h-15l-7.8 9.6h16.5l6.3-9.7Zm-15.6 0h-15l-9.3 9.6h16.5l7.8-9.7Zm-15.5 0h-15l-10.9 9.6h16.5l9.4-9.7Zm-15.6 0h-15l-12.4 9.6h16.5l10.9-9.7ZM287.9 150l12.1 6.7v.4l-12.6-7.1h.5ZM6.5 150 0 154v-.3l6-3.7h.5Z" fill="url(#a)" opacity=".3"/>',
                    '<rect stroke="#2C2C2C" fill="#000" fill-rule="nonzero" x="18" y="208.5" width="264" height="99" rx="14"/>',
                    baseLogoSmall,
                    baseLogo,
                    '<path d="M53.1 26.6c2.5 0 4.4 1.9 4.4 4.7 0 3-2 4.8-4.4 4.8a3.6 3.6 0 0 1-2.8-1.3h-.1v4.5h-1.9V26.8h1.9v1.1a3.8 3.8 0 0 1 3-1.3Zm16.4 0c2.6 0 4.7 2 4.7 4.7v.7h-7.5c.3 1.5 1.4 2.4 2.8 2.4 1 0 1.6-.3 2-.6l.6-.7h2a4.9 4.9 0 0 1-4.6 3c-2.6 0-4.7-2-4.7-4.8 0-2.6 2-4.7 4.7-4.7Zm29.6 0c1 0 1.7.3 2.2.7l.7.6h.1v-1.1h1.9v9.1h-1.9v-1.2l-.8.7c-.5.4-1.2.7-2.2.7-2.4 0-4.3-1.9-4.3-4.8 0-2.8 2-4.7 4.3-4.7Zm-34.7 0v1.9h-1.1c-1.5 0-2.5 1-2.5 2.5v5h-2v-9.2h2V28l.6-.7c.4-.4 1-.7 2-.7h1Zm22 0c2 0 3.4 1.3 3.4 3.8V36h-1.9v-5.4c0-1.5-.7-2.2-2-2.2-1.2 0-2.3 1-2.3 2.6v5h-1.9v-5.4c0-1.5-.7-2.2-2-2.2-1.2 0-2.3 1-2.3 2.6v5h-1.9v-9.1h1.9V28l.7-.7c.4-.4 1-.7 2-.7 1.3 0 2 .4 2.4.8l.7.9.7-.9c.5-.4 1.3-.8 2.5-.8Zm7.1.2v9.1h-1.9v-9.1h1.9Zm-40.7 1.5c-1.5 0-2.6 1-2.6 3s1 3.1 2.6 3.1 2.7-1 2.7-3-1-3.1-2.7-3.1Zm46.7 0c-1.6 0-2.7 1-2.7 3s1 3.1 2.7 3.1c1.5 0 2.6-1 2.6-3s-1-3.1-2.6-3.1Zm-30 0c-1.3 0-2.4.8-2.7 2.1h5.4c-.2-1-1-2.1-2.7-2.1Zm23-5.1c.7 0 1.2.5 1.2 1.1 0 .6-.5 1.1-1.1 1.1-.7 0-1.2-.5-1.2-1.1 0-.6.5-1.1 1.2-1.1Z" fill="#FFF"/>',
                    '<path d="M29.6 26.7h7.8c.5 0 .7.5.5.9l-3.7 5c-.3.5 0 1 .4 1H38c.2 0 .3-.1.4-.3l3.7-5v-.7l-3.2-4.4a.5.5 0 0 0-.5-.2h-9.5c-.2 0-.4 0-.5.2l-3.2 4.4v.7l8 11c.2.3.7.3.9 0l1.6-2.3c.2-.1.2-.4 0-.6l-6.4-8.8c-.3-.4 0-.9.4-.9Z" fill="#5294FF"/>',
                    underlyingLogo,
                    '<path stroke="#4D4343" d="m154 148.5 6.5-26"/>',
                    '<path d="M139.5 36c8 8 19.7 14.6 31 14.6h95.6c14.5 0 26.3 7.6 28.4 21.3v271.7c0 16-12.9 28.9-28.7 28.9H34.2c-15.8 0-28.7-13-28.7-28.9V33.4A28 28 0 0 1 34.2 5.5h67c6.3 0 12.4 3.5 16.9 8l21.4 22.6Z" stroke="#FFF" opacity=".1"/>',
                    '<path d="M289.26 66.05c-57.44 0-104 46.56-104 104s46.56 104 104 104c3.63 0 7.2-.18 10.74-.55V66.6c-3.53-.36-7.11-.55-10.74-.55Z" fill="url(#b)" opacity=".31" />',
                    '<path d="M10.7 66A104 104 0 1 1 0 273.6V66.6c3.5-.4 7.1-.5 10.7-.5Z" fill="url(#c)" opacity=".3"/>'
                )
            );
    }

    function buildText(
        string memory baseSymbol,
        string memory underlyingSymbol,
        string memory strikePriceString,
        string memory maturityString
    ) internal pure returns (string memory) {
        bytes memory bufferA = abi.encodePacked(
            '<text font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="gray">',
            '<tspan x="32.1" y="237">Type</tspan>',
            "</text>",
            '<text font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="gray">',
            '<tspan x="32.1" y="263">Strike price</tspan>',
            "</text>",
            '<text font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="gray">',
            '<tspan x="32.1" y="289">Maturity</tspan>',
            "</text>",
            '<text font-family="DMSans-Bold, DM Sans" font-size="24" font-weight="bold" fill="#FFF">',
            '<tspan style="direction:rtl" x="143" y="144">',
            underlyingSymbol,
            "</tspan>",
            "</text>"
        );

        bytes memory bufferB = abi.encodePacked(
            '<text font-family="DMSans-Bold, DM Sans" font-size="24" font-weight="bold" fill="#FFF">',
            '<tspan x="173.1" y="144">',
            baseSymbol,
            "</tspan>",
            "</text>",
            '<text font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#FFF">',
            '<tspan style="direction:rtl" x="265" y="263">',
            strikePriceString,
            "</tspan>",
            "</text>",
            '<text font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#FFF">',
            '<tspan style="direction:rtl" x="265" y="289">',
            maturityString,
            "</tspan>",
            "</text>"
        );

        return string(abi.encodePacked(bufferA, bufferB));
    }

    function buildDefs(
        string memory underlyingSymbol,
        string memory baseSymbol,
        bool isLong
    ) internal pure returns (string memory) {
        string memory baseGradient = buildBaseGradient(baseSymbol);
        string memory underlyingGradient = buildUnderlyingGradient(
            underlyingSymbol
        );
        string memory shortDefs = isLong ? "" : buildShortDefs();
        bytes memory whiteGradient = abi.encodePacked(
            '<linearGradient x1="50%" y1="0%" x2="50%" y2="90%" id="a">',
            '<stop stop-color="#FFF" stop-opacity="0" offset="0%"/>',
            '<stop stop-color="#FFF" offset="80%"/>',
            '<stop stop-color="#FFF" stop-opacity="0" offset="100%"/>',
            "</linearGradient>"
        );

        return
            string(
                abi.encodePacked(
                    "<defs>",
                    '<style type="text/css">@import url(https://fonts.googleapis.com/css?family=DM+Sans);',
                    "</style>",
                    whiteGradient,
                    underlyingGradient,
                    baseGradient,
                    shortDefs,
                    "</defs>"
                )
            );
    }

    function buildUnderlyingGradient(string memory underlyingSymbol)
        internal
        pure
        returns (string memory)
    {
        (
            string memory underlyingColorA,
            string memory underlyingColorB
        ) = getTokenColors(underlyingSymbol);

        return
            string(
                abi.encodePacked(
                    '<radialGradient cx="8%" cy="50%" fx="8%" fy="50%" r="90.6%" gradientTransform="matrix(0 .55164 -1 0 .6 .5)" id="c">',
                    '<stop stop-color="',
                    underlyingColorA,
                    '" offset="0%"/>',
                    '<stop stop-color="',
                    underlyingColorB,
                    '" stop-opacity="0" offset="100%"/>',
                    "</radialGradient>"
                )
            );
    }

    function buildBaseGradient(string memory baseSymbol)
        internal
        pure
        returns (string memory)
    {
        (string memory baseColorA, string memory baseColorB) = getTokenColors(
            baseSymbol
        );

        return
            string(
                abi.encodePacked(
                    '<radialGradient cx="100%" cy="50%" fx="100%" fy="50%" r="90.64%" gradientTransform="matrix(0 .55164 -1 0 1.5 -.05)" id="b">',
                    '<stop stop-color="',
                    baseColorA,
                    '" offset="0%"/>',
                    '<stop stop-color="',
                    baseColorB,
                    '" stop-opacity="0" offset="99.67%"/>',
                    "</radialGradient>"
                )
            );
    }

    function buildShortDefs() internal pure returns (string memory) {
        return
            string(
                abi.encodePacked(
                    '<linearGradient x1="62.1%" y1="20.8%" x2="-29.2%" y2="25.7%" id="d">',
                    '<stop stop-color="#3E1808" offset="3%" />',
                    '<stop stop-color="#300427" offset="100%" />',
                    "</linearGradient>"
                )
            );
    }

    function buildCallRectangle() internal pure returns (string memory) {
        return
            string(
                abi.encodePacked(
                    '<rect stroke="#2CE49A" fill="#051A12" fill-rule="nonzero" x="18" y="319.5" width="264" height="39" rx="14"/>',
                    '<path d="m111.6 332.2 5.2 5a.7.7 0 0 1 0 1.2l-.5.4c-.2.2-.3.2-.6.2-.2 0-.4 0-.5-.2l-3-3v9.4c0 .5-.4.8-.8.8h-.7c-.5 0-.8-.3-.8-.8v-9.4l-3 3c-.2.2-.4.2-.6.2-.3 0-.5 0-.6-.2l-.5-.4a.7.7 0 0 1 0-1.1l5.2-5 .6-.3c.2 0 .4 0 .6.2Z" fill="#2CE49A" fill-rule="nonzero"/>',
                    '<text fill-rule="nonzero" font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#2CE49A">',
                    '<tspan x="121" y="344">Call Option</tspan>',
                    "</text>"
                )
            );
    }

    function buildPutRectangle() internal pure returns (string memory) {
        return
            string(
                abi.encodePacked(
                    '<rect stroke="#EB4A97" fill="#2D0719" fill-rule="nonzero" x="18" y="319.5" width="264" height="39" rx="14"/>',
                    '<path d="m111.6 345.8 5.2-5a.7.7 0 0 0 0-1.2l-.5-.4a.8.8 0 0 0-.6-.2c-.2 0-.4 0-.5.2l-3 3v-9.4c0-.5-.4-.8-.8-.8h-.7c-.5 0-.8.3-.8.8v9.4l-3-3a.8.8 0 0 0-1.1 0l-.6.4a.7.7 0 0 0 0 1.1l5.2 5 .6.3c.2 0 .4 0 .6-.2Z" fill="#EB4A97"/>',
                    '<text fill-rule="nonzero" font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#EB4A97">',
                    '<tspan x="122.7" y="344">Put Option</tspan>',
                    "</text>"
                )
            );
    }

    function buildShortLongTag(bool _isLong)
        internal
        pure
        returns (string memory)
    {
        return _isLong ? buildLongTag() : buildShortTag();
    }

    function buildLongTag() internal pure returns (string memory) {
        return
            string(
                abi.encodePacked(
                    '<rect fill="#0C1E3C" fill-rule="nonzero" x="208" y="222" width="57" height="23" rx="6"/>',
                    '<text fill-rule="nonzero" font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#5294FF">',
                    '<tspan x="221.1" y="238.5">Long</tspan>',
                    "</text>"
                )
            );
    }

    function buildShortTag() internal pure returns (string memory) {
        return
            string(
                abi.encodePacked(
                    '<rect fill="url(#d)" fill-rule="nonzero" x="208" y="222" width="57" height="23" rx="6"/>',
                    '<text fill-rule="nonzero" font-family="DMSans-Medium, DM Sans" font-size="14" font-weight="400" fill="#ED6F64">',
                    '<tspan x="219.1" y="238.5">Short</tspan>',
                    "</text>"
                )
            );
    }

    function getUnderlyingLogo(string memory tokenSymbol)
        internal
        pure
        returns (string memory)
    {
        bytes32 hash = keccak256(abi.encodePacked(tokenSymbol));

        if (
            hash == keccak256(abi.encodePacked("ETH")) ||
            hash == keccak256(abi.encodePacked("WETH"))
        ) {
            return ETH_UNDERLYING_LOGO;
        } else if (hash == keccak256(abi.encodePacked("LINK"))) {
            return LINK_UNDERLYING_LOGO;
        } else if (hash == keccak256(abi.encodePacked("WBTC"))) {
            return WBTC_UNDERLYING_LOGO;
        } else {
            return UNKNOWN_UNDERLYING_LOGO;
        }
    }

    function getBaseLogo(string memory tokenSymbol)
        internal
        pure
        returns (string memory)
    {
        bytes32 hash = keccak256(abi.encodePacked(tokenSymbol));

        if (hash == keccak256(abi.encodePacked("DAI"))) {
            return DAI_BASE_LOGO;
        } else {
            return UNKNOWN_BASE_LOGO;
        }
    }

    function getBaseLogoSmall(string memory tokenSymbol)
        internal
        pure
        returns (string memory)
    {
        bytes32 hash = keccak256(abi.encodePacked(tokenSymbol));

        if (hash == keccak256(abi.encodePacked("DAI"))) {
            return DAI_BASE_LOGO_SMALL;
        } else {
            return UNKNOWN_BASE_LOGO_SMALL;
        }
    }

    function getTokenColors(string memory tokenSymbol)
        internal
        pure
        returns (string memory, string memory)
    {
        bytes32 hash = keccak256(abi.encodePacked(tokenSymbol));

        if (
            hash == keccak256(abi.encodePacked("ETH")) ||
            hash == keccak256(abi.encodePacked("WETH"))
        ) {
            return (ETH_COLOR_A, ETH_COLOR_B);
        } else if (hash == keccak256(abi.encodePacked("LINK"))) {
            return (LINK_COLOR_A, LINK_COLOR_B);
        } else if (hash == keccak256(abi.encodePacked("WBTC"))) {
            return (WBTC_COLOR_A, WBTC_COLOR_B);
        } else if (hash == keccak256(abi.encodePacked("DAI"))) {
            return (DAI_COLOR_A, DAI_COLOR_B);
        } else {
            return (UNKNOWN_COLOR_A, UNKNOWN_COLOR_B);
        }
    }
}

File 2 of 2 : UintUtils.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library UintUtils {
    function toString(uint256 value) internal pure returns (string memory) {
        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);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"components":[{"internalType":"string","name":"baseSymbol","type":"string"},{"internalType":"string","name":"underlyingSymbol","type":"string"},{"internalType":"bool","name":"isCall","type":"bool"},{"internalType":"bool","name":"isLong","type":"bool"},{"internalType":"string","name":"maturityString","type":"string"},{"internalType":"string","name":"strikePriceString","type":"string"}],"internalType":"struct NFTSVG.CreateSVGParams","name":"_params","type":"tuple"}],"name":"buildSVG","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

6145d361003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063d8ed91ef1461003a575b600080fd5b61004d610048366004610dae565b610063565b60405161005a9190610ed9565b60405180910390f35b6060600061007983600001518460200151610117565b90506000610099846000015185602001518660a00151876080015161016f565b905060006100b48560200151866000015187606001516101eb565b905060006100c5866060015161038e565b9050818487604001516100df576100da6103b0565b6100e7565b6100e76103d5565b83866040516020016100fd959493929190610f28565b604051602081830303815290604052945050505050919050565b60606000610124846103e6565b905060006101318561048f565b9050600061013e85610538565b90508282826040516020016101559392919061108b565b604051602081830303815290604052935050505092915050565b60606000846040516020016101849190612854565b604051602081830303815290604052905060008685856040516020016101ac93929190612a33565b604051602081830303815290604052905081816040516020016101d0929190612b51565b60405160208183030381529060405292505050949350505050565b606060006101f8846106b3565b90506000610205866106f0565b905060008461021b57610216610715565b61022c565b604051806020016040528060008152505b9050600060405160200161034a907f3c6c696e6561724772616469656e742078313d22353025222079313d2230252281527f2078323d22353025222079323d22393025222069643d2261223e00000000000060208201527f3c73746f702073746f702d636f6c6f723d2223464646222073746f702d6f7061603a82018190527531b4ba3c9e9118111037b33339b2ba1e91181291179f60511b605a8301527f3c73746f702073746f702d636f6c6f723d222346464622206f66667365743d226070830152651c181291179f60d11b609083015260968201527f636974793d223022206f66667365743d2231303025222f3e000000000000000060b6820152701e17b634b732b0b923b930b234b2b73a1f60791b60ce82015260df0190565b6040516020818303038152906040529050808385846040516020016103729493929190612b80565b6040516020818303038152906040529450505050509392505050565b6060816103a25761039d610809565b6103aa565b6103aa610920565b92915050565b60606040516020016103c190612c80565b604051602081830303815290604052905090565b60606040516020016103c190612ebf565b60606000826040516020016103fb9190613126565b60405160208183030381529060405280519060200120905060405160200161042c906244414960e81b815260030190565b6040516020818303038152906040528051906020012081141561046c57604051806101c0016040528061019781526020016134bf61019791399392505050565b604051806102e001604052806102ab81526020016136566102ab91399392505050565b60606000826040516020016104a49190613126565b6040516020818303038152906040528051906020012090506040516020016104d5906244414960e81b815260030190565b6040516020818303038152906040528051906020012081141561051557604051806102e001604052806102b38152602001613faf6102b391399392505050565b60405180610360016040528061033c815260200161426261033c91399392505050565b606060008260405160200161054d9190613126565b60405160208183030381529060405280519060200120905060405160200161057e906208aa8960eb1b815260030190565b604051602081830303815290604052805190602001208114806105c85750604051630ae8aa8960e31b60208201526024016040516020818303038152906040528051906020012081145b156105ed576040518060e0016040528060b4815260200161340b60b491399392505050565b604051634c494e4b60e01b60208201526024016040516020818303038152906040528051906020012081141561063d576040518060e0016040528060bf8152602001613ed060bf91399392505050565b604051635742544360e01b60208201526024016040516020818303038152906040528051906020012081141561069057604051806103e001604052806103a181526020016139016103a191399392505050565b60405180610240016040528061020e8152602001613ca261020e91399392505050565b60606000806106c184610a36565b9150915081816040516020016106d8929190613142565b60405160208183030381529060405292505050919050565b60606000806106fe84610a36565b9150915081816040516020016106d892919061329b565b60606040516020016103c1907f3c6c696e6561724772616469656e742078313d2236322e3125222079313d223281527f302e3825222078323d222d32392e3225222079323d2232352e3725222069643d6020820152631132111f60e11b60408201527f3c73746f702073746f702d636f6c6f723d222333453138303822206f666673656044820152683a1e9119929110179f60b91b60648201527f3c73746f702073746f702d636f6c6f723d222333303034323722206f66667365606d8201526a3a1e91189818129110179f60a91b608d820152701e17b634b732b0b923b930b234b2b73a1f60791b609882015260a90190565b60606040516020016103c1907f3c726563742066696c6c3d2275726c28236429222066696c6c2d72756c653d2281527f6e6f6e7a65726f2220783d223230382220793d22323232222077696474683d226020820152771a9b91103432b4b3b43a1e9119199110393c1e911b11179f60411b60408201526000805160206133eb8339815191526058820152600080516020613f8f8339815191526078820152600080516020613eb083398151915260988201526e3334b6361e9111a2a21b231b1a111f60891b60b88201527f3c747370616e20783d223231392e312220793d223233382e35223e53686f727460c7820152671e17ba39b830b71f60c11b60e7820152661e17ba32bc3a1f60c91b60ef82015260f60190565b60606040516020016103c1907f3c726563742066696c6c3d2223304331453343222066696c6c2d72756c653d2281527f6e6f6e7a65726f2220783d223230382220793d22323232222077696474683d226020820152771a9b91103432b4b3b43a1e9119199110393c1e911b11179f60411b60408201526000805160206133eb8339815191526058820152600080516020613f8f8339815191526078820152600080516020613eb083398151915260988201526e3334b6361e91119a991c9a2323111f60891b60b88201527f3c747370616e20783d223232312e312220793d223233382e35223e4c6f6e673c60c78201526617ba39b830b71f60c91b60e7820152661e17ba32bc3a1f60c91b60ee82015260f50190565b606080600083604051602001610a4c9190613126565b604051602081830303815290604052805190602001209050604051602001610a7d906208aa8960eb1b815260030190565b60405160208183030381529060405280519060200120811480610ac75750604051630ae8aa8960e31b60208201526024016040516020818303038152906040528051906020012081145b15610b16576040518060400160405280600781526020016611a3232323232360c91b8152506040518060400160405280600781526020016611a3232323232360c91b8152509250925050915091565b604051634c494e4b60e01b602082015260240160405160208183030381529060405280519060200120811415610b90576040518060400160405280600781526020016611999b9b20a32360c91b81525060405180604001604052806007815260200166119a199c21232360c91b8152509250925050915091565b604051635742544360e01b602082015260240160405160208183030381529060405280519060200120811415610c0a576040518060400160405280600781526020016611a2991b9a99a160c91b8152506040518060400160405280600781526020016611a2991c9919a160c91b8152509250925050915091565b6040516244414960e81b602082015260230160405160208183030381529060405280519060200120811415610c8357604051806040016040528060078152602001662344314136363360c81b8152506040518060400160405280600781526020016611a21c209b9aa160c91b8152509250925050915091565b60405180604001604052806007815260200166119a992323211960c91b81525060405180604001604052806007815260200166119a99211a232360c91b8152509250925050915091565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610d0657610d06610ccd565b60405290565b600082601f830112610d1d57600080fd5b813567ffffffffffffffff80821115610d3857610d38610ccd565b604051601f8301601f19908116603f01168101908282118183101715610d6057610d60610ccd565b81604052838152866020858801011115610d7957600080fd5b836020870160208301376000602085830101528094505050505092915050565b80358015158114610da957600080fd5b919050565b600060208284031215610dc057600080fd5b813567ffffffffffffffff80821115610dd857600080fd5b9083019060c08286031215610dec57600080fd5b610df4610ce3565b823582811115610e0357600080fd5b610e0f87828601610d0c565b825250602083013582811115610e2457600080fd5b610e3087828601610d0c565b602083015250610e4260408401610d99565b6040820152610e5360608401610d99565b6060820152608083013582811115610e6a57600080fd5b610e7687828601610d0c565b60808301525060a083013582811115610e8e57600080fd5b610e9a87828601610d0c565b60a08301525095945050505050565b60005b83811015610ec4578181015183820152602001610eac565b83811115610ed3576000848401525b50505050565b6020815260008251806020840152610ef8816040850160208701610ea9565b601f01601f19169190910160400192915050565b60008151610f1e818560208601610ea9565b9290920192915050565b7f3c7376672077696474683d2233303022206865696768743d223337382220766981527f6577426f783d223020302033303020333738222066696c6c3d226e6f6e65222060208201527f786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737660408201526233911f60e91b606082015260008651610fb8816063850160208b01610ea9565b7f3c67207472616e73666f726d3d227472616e736c617465282e35202e352922206063918401918201527f66696c6c3d226e6f6e65222066696c6c2d72756c653d226576656e6f6464223e6083820152865161101b8160a3840160208b01610ea9565b86519101906110318160a3840160208a01610ea9565b85519101906110478160a3840160208901610ea9565b61107e61106c61105c60a38486010188610f0c565b631e17b39f60e11b815260040190565b651e17b9bb339f60d11b815260060190565b9998505050505050505050565b7f3c7061746820643d224d31303320306132352032352030203020312031372e3781527f20372e336c32342032342e3163382e3120382031392031322e362033302e352060208201527f31322e366839352e32413330203330203020302031203330302036392e34563360408201527f34386133302033302030203020312d333020333048333061333020333020302060608201527f3020312d33302d3330563330413330203330203020302031203330203068373360808201527f5a222066696c6c3d2223303030222066696c6c2d72756c653d226e6f6e7a657260a0820152633791179f60e11b60c08201527f3c7061746820643d224d31392e392031353020312e31203136334831366c313660c48201527f2e382d3133682e356c2d31362e372031336831342e396c31342e372d3133682e60e48201527f356c2d31342e362031334834376c31322e362d3133682e356c2d31322e3520316101048201527f336831342e394c373320313530682e356c2d31302e342031334837386c382e346101248201527f2d3133682e356c2d382e332031336831342e396c362e332d3133682e356c2d366101448201527f2e32203133483130396c342e322d3133682e356c2d342e312031336831342e396101648201527f6c322e312d3133682e356c2d3220313348313430762d3133682e3576313368316101848201527f356c2d322d3133682e346c322e32203133483137316c2d342e322d3133682e356101a48201527f6c342e332031336831342e396c2d362e332d3133682e356c362e3420313348326101c48201527f30326c2d382e342d3133682e356c382e352031336831342e394c3230372031356101e48201527f30682e356c31302e352031336831356c2d31322e362d3133682e356c31322e366102048201527f2031336831356c2d31342e372d3133682e356c31342e372031336831356c2d316102248201527f362e382d3133682e356c31362e382031336831356c2d31382e392d3133682e356102448201527f6c31392031336831342e384c32373420313530682e356c323120313368342e356102648201527f762e33682d346c3420322e34762e336c2d342e352d322e38682d31356c3134206102848201527f392e3768352e35762e33682d356c3520332e34762e346c2d352e362d332e38686102a48201527f2d31362e356c31322e3520392e3668392e36762e33682d392e326c392e3220376102c48201527f762e376c2d392e392d372e37682d31386c31302e3920392e36683137762e34686102e48201527f2d31362e366c31312e3320392e39682d2e396c2d31312e322d3130483236336c6103048201527f392e37203130682d2e396c2d392e362d3130682d31392e366c38203130682d2e6103248201527f386c2d382d3130682d31392e366c362e35203130682d2e396c2d362e342d31306103448201527f682d31392e366c342e39203130682d2e396c2d342e382d3130682d31392e366c6103648201527f332e33203130682d2e396c2d332e322d3130483136316c312e37203130682d2e6103848201527f396c2d312e352d3130682d31392e36763130682d2e39762d3130682d31392e356103a48201527f6c2d312e36203130682d2e396c312e372d31304839392e396c2d332e322031306103c48201527f682d2e396c332e332d31304837392e356c2d342e38203130682d2e396c352d316103e48201527f304835396c2d362e34203130682d2e396c362e352d31304833382e376c2d38206104048201527f3130682d2e396c382e312d31304831382e336c2d392e36203130682d2e386c396104248201527f2e372d31304830762d2e336831372e396c392e342d392e3648392e324c3020316104448201527f39312e33762d2e376c382e352d372e354830762d2e3368382e396c31302e392d6104648201527f392e3648332e334c30203137352e37762d2e356c322e362d324830762d2e33686104848201527f336c31322e362d392e37482e366c2d2e362e35762d2e38682e354c31392e34206104a48201527f313530682e355a6d3133382e382033332e31682d313876392e366831392e356c6104c48201527f2d312e352d392e365a6d2d31382e382030682d31386c2d312e3620392e3648316104e48201527f3430762d392e365a6d2d39332e3920304832386c2d392e3320392e366831392e6105048201527f356c372e382d392e365a6d31382e382030682d31386c2d372e3820392e3668316105248201527f392e356c362e332d392e365a6d31382e382030682d31386c2d362e3320392e366105448201527f4837396c342e372d392e365a6d31382e3820304838342e336c2d342e3620392e6105648201527f366831392e356c332e322d392e365a6d31382e372030682d31386c2d332e31206105848201527f392e366831392e356c312e362d392e365a6d35362e332030682d31386c312e366105a48201527f20392e366831392e356c2d332d392e365a6d31382e382030682d31386c332e316105c48201527f20392e36483230316c2d342e372d392e365a6d31382e382030682d31386c342e6105e48201527f3720392e366831392e356c2d362e322d392e365a6d31382e382030682d31386c6106048201527f362e3220392e366831392e356c2d372e372d392e365a6d31382e372030682d316106248201527f386c372e3820392e36483236326c2d392e342d392e365a6d31382e382030682d6106448201527f31386c392e3320392e366831392e366c2d31302e392d392e365a6d362d3130686106648201527f2d31362e366c313120392e376831386c2d31322e352d392e365a6d2d31372e326106848201527f2030682d31362e356c392e3320392e376831386c2d31302e382d392e365a6d2d6106a48201527f31372e322030682d31362e356c372e3820392e376831386c2d392e332d392e366106c48201527f5a6d2d31372e322030682d31362e356c362e3320392e376831386c2d372e382d6106e48201527f392e365a6d2d31372e312030483139326c342e3720392e376831386c2d362e326107048201527f2d392e365a6d2d31372e322030483137356c332e3220392e376831386c2d342e6107248201527f372d392e365a6d2d31372e312030682d31362e356c312e3520392e376831386c6107448201527f2d332d392e365a6d2d31372e322030682d31362e3576392e376831386c2d312e6107648201527f352d392e365a6d2d31372e322030682d31362e356c2d312e3520392e376831386107848201527f762d392e365a6d2d31372e312030682d31362e356c2d332e3120392e376831386107a48201527f6c312e362d392e365a6d2d31372e3220304838392e316c2d342e3620392e37686107c48201527f31386c332e312d392e365a6d2d31372e3220304837326c2d362e3220392e37686107e48201527f31386c342e372d392e365a6d2d31372e3120304835342e386c2d372e3820392e6108048201527f376831386c362e332d392e365a6d2d31372e3220304833372e366c2d392e33206108248201527f392e376831386c372e382d392e365a6d2d31372e3120304832302e356c2d31316108448201527f20392e376831386c392e352d392e365a6d3234332d392e38682d31356c31322e6108648201527f3520392e366831362e346c2d31342d392e375a6d2d31352e362030682d31356c6108848201527f313120392e366831362e346c2d31322e342d392e375a6d2d31352e362030682d6108a48201527f31356c392e3420392e366831362e356c2d31302e392d392e375a6d2d31352e356108c48201527f2030682d31356c372e3820392e366831362e356c2d392e332d392e375a6d2d316108e48201527f352e362030682d31356c362e3320392e366831362e356c2d372e382d392e375a6109048201527f6d2d31352e352030682d31356c342e3720392e366831362e356c2d362e322d396109248201527f2e375a6d2d31352e362030682d31356c332e3220392e366831362e356c2d342e6109448201527f372d392e375a6d2d31352e352030682d31356c312e3620392e366831362e356c6109648201527f2d332e312d392e375a6d2d31352e362030682d313576392e36483135376c2d316109848201527f2e352d392e375a6d2d31352e352030682d31356c2d312e3520392e366831362e6109a48201527f34762d392e375a6d2d31352e362030682d31356c2d3320392e366831362e346c6109c48201527f312e362d392e375a6d2d31352e352030682d31356c2d342e3620392e366831366109e48201527f2e346c332e322d392e375a6d2d31352e362030682d31356c2d362e3120392e36610a048201527f6831362e346c342e372d392e375a6d2d31352e352030682d31356c2d372e3820610a248201527f392e366831362e356c362e332d392e375a6d2d31352e362030682d31356c2d39610a448201527f2e3320392e366831362e356c372e382d392e375a6d2d31352e352030682d3135610a648201527f6c2d31302e3920392e366831362e356c392e342d392e375a6d2d31352e362030610a848201527f682d31356c2d31322e3420392e366831362e356c31302e392d392e375a4d3238610aa48201527f372e39203135306c31322e3120362e37762e346c2d31322e362d372e31682e35610ac48201527f5a4d362e3520313530203020313534762d2e336c362d332e37682e355a222066610ae48201527f696c6c3d2275726c2823612922206f7061636974793d222e33222f3e00000000610b048201527f3c72656374207374726f6b653d2223324332433243222066696c6c3d22233030610b208201527f30222066696c6c2d72756c653d226e6f6e7a65726f2220783d2231382220793d610b408201527f223230382e35222077696474683d2232363422206865696768743d2239392220610b6082015268393c1e91189a11179f60b91b610b8082015260006127616126e16126206125096124c96124c36123a3611ed2611ecc610b898b018e610f0c565b8c610f0c565b7f3c7061746820643d224d35332e312032362e3663322e35203020342e3420312e81527f3920342e3420342e37203020332d3220342e382d342e3420342e3861332e362060208201527f332e362030203020312d322e382d312e33682d2e3176342e35682d312e39563260408201527f362e3868312e3976312e3161332e3820332e3820302030203120332d312e335a60608201527f6d31362e34203063322e36203020342e37203220342e3720342e37762e37682d60808201527f372e35632e3320312e3520312e3420322e3420322e3820322e3420312030203160a08201527f2e362d2e3320322d2e366c2e362d2e37683261342e3920342e3920302030203160c08201527f2d342e362033632d322e3620302d342e372d322d342e372d342e3820302d322e60e08201527f3620322d342e3720342e372d342e375a6d32392e3620306331203020312e372e6101008201527f3320322e322e376c2e372e36682e31762d312e3168312e3976392e31682d312e6101208201527f39762d312e326c2d2e382e37632d2e352e342d312e322e372d322e322e372d326101408201527f2e3420302d342e332d312e392d342e332d342e3820302d322e3820322d342e376101608201527f20342e332d342e375a6d2d33342e37203076312e39682d312e31632d312e35206101808201527f302d322e3520312d322e3520322e357635682d32762d392e3268325632386c2e6101a08201527f362d2e37632e342d2e3420312d2e3720322d2e3768315a6d32322030633220306101c08201527f20332e3420312e3320332e3420332e38563336682d312e39762d352e3463302d6101e08201527f312e352d2e372d322e322d322d322e322d312e3220302d322e3320312d322e336102008201527f20322e367635682d312e39762d352e3463302d312e352d2e372d322e322d322d6102208201527f322e322d312e3220302d322e3320312d322e3320322e367635682d312e39762d6102408201527f392e3168312e395632386c2e372d2e37632e342d2e3420312d2e3720322d2e376102608201527f20312e3320302032202e3420322e342e386c2e372e392e372d2e39632e352d2e6102808201527f3420312e332d2e3820322e352d2e385a6d372e312e3276392e31682d312e39766102a08201527f2d392e3168312e395a6d2d34302e3720312e35632d312e3520302d322e3620316102c08201527f2d322e362033733120332e3120322e3620332e3120322e372d3120322e372d336102e08201527f2d312d332e312d322e372d332e315a6d34362e372030632d312e3620302d322e6103008201527f3720312d322e372033733120332e3120322e3720332e3163312e35203020322e6103208201527f362d3120322e362d33732d312d332e312d322e362d332e315a6d2d33302030636103408201527f2d312e3320302d322e342e382d322e3720322e3168352e34632d2e322d312d316103608201527f2d322e312d322e372d322e315a6d32332d352e31632e37203020312e322e35206103808201527f312e3220312e312030202e362d2e3520312e312d312e3120312e312d2e3720306103a08201527f2d312e322d2e352d312e322d312e3120302d2e362e352d312e3120312e322d316103c0820152711718ad11103334b6361e9111a3232311179f60711b6103e08201526103f20190565b7f3c7061746820643d224d32392e362032362e3768372e38632e352030202e372e81527f352e352e396c2d332e372035632d2e332e3520302031202e342031483338632e60208201527f322030202e332d2e312e342d2e336c332e372d35762d2e376c2d332e322d342e60408201527f34612e352e352030203020302d2e352d2e32682d392e35632d2e3220302d2e3460608201527f20302d2e352e326c2d332e3220342e34762e376c38203131632e322e332e372e60808201527f332e3920306c312e362d322e33632e322d2e312e322d2e3420302d2e366c2d3660a08201527f2e342d382e38632d2e332d2e3420302d2e392e342d2e395a222066696c6c3d2260c082015269119a991c9a232311179f60b11b60e082015260ea0190565b88610f0c565b7f3c70617468207374726f6b653d22233444343334332220643d226d313534203181526d1a1c171a901b171a96991b11179f60911b6020820152602e0190565b7f3c7061746820643d224d3133392e35203336633820382031392e372031342e3681527f2033312031342e366839352e366331342e3520302032362e3320372e3620323860208201527f2e342032312e33763237312e3763302031362d31322e392032382e392d32382e60408201527f372032382e394833342e32632d31352e3820302d32382e372d31332d32382e3760608201527f2d32382e395633332e344132382032382030203020312033342e3220352e356860808201527f363763362e3320302031322e3420332e352031362e3920386c32312e3420323260a08201527f2e365a22207374726f6b653d222346464622206f7061636974793d222e31222f60c0820152601f60f91b60e082015260e10190565b7f3c7061746820643d224d3238392e32362036362e3035632d35372e343420302d81527f3130342034362e35362d313034203130347334362e353620313034203130342060208201527f31303463332e3633203020372e322d2e31382031302e37342d2e35355636362e60408201527f36632d332e35332d2e33362d372e31312d2e35352d31302e37342d2e35355a2260608201527f2066696c6c3d2275726c2823622922206f7061636974793d222e333122202f3e608082015260a00190565b7f3c7061746820643d224d31302e3720363641313034203130342030203120312081527f30203237332e365636362e3663332e352d2e3420372e312d2e352031302e372d60208201527f2e355a222066696c6c3d2275726c2823632922206f7061636974793d222e3322604082015261179f60f11b606082015260620190565b95945050505050565b7f3c7465787420666f6e742d66616d696c793d22444d53616e732d4d656469756d81527f2c20444d2053616e732220666f6e742d73697a653d2231342220666f6e742d7760208201527f65696768743d22343030222066696c6c3d2267726179223e0000000000000000604082015260580190565b7f3c7465787420666f6e742d66616d696c793d22444d53616e732d426f6c642c2081527f444d2053616e732220666f6e742d73697a653d2232342220666f6e742d77656960208201527f6768743d22626f6c64222066696c6c3d2223464646223e000000000000000000604082015260570190565b600061285f8261276a565b7f3c747370616e20783d2233322e312220793d22323337223e547970653c2f74738152633830b71f60e11b6020820152661e17ba32bc3a1f60c91b8060248301526128ac602b830161276a565b91507f3c747370616e20783d2233322e312220793d22323633223e537472696b65207082526b3934b1b29e17ba39b830b71f60a11b602083015280602c8301526128f86033830161276a565b91507f3c747370616e20783d2233322e312220793d22323839223e4d617475726974798252671e17ba39b830b71f60c11b602083015280602883015250612941602f82016127df565b7f3c747370616e207374796c653d22646972656374696f6e3a72746c2220783d2281526c189a1991103c9e91189a1a111f60991b602082015290506129b66129a361298f602d840187610f0c565b671e17ba39b830b71f60c11b815260080190565b661e17ba32bc3a1f60c91b815260070190565b949350505050565b7f3c7465787420666f6e742d66616d696c793d22444d53616e732d4d656469756d81527f2c20444d2053616e732220666f6e742d73697a653d2231342220666f6e742d7760208201527f65696768743d22343030222066696c6c3d2223464646223e0000000000000000604082015260580190565b6000612a3e826127df565b7f3c747370616e20783d223137332e312220793d22313434223e0000000000000081528551612a74816019840160208a01610ea9565b808201915050671e17ba39b830b71f60c11b806019830152661e17ba32bc3a1f60c91b806021840152612aa9602884016129be565b92507f3c747370616e207374796c653d22646972656374696f6e3a72746c2220783d228084526c191b1a91103c9e91191b19911f60991b60208501528751612af881602d870160208c01610ea9565b602d940193840183905260358401829052612b15603c85016129be565b9081526c191b1a91103c9e91191c1c911f60991b60208201529250612b4791506129a3905061298f602d840187610f0c565b9695505050505050565b60008351612b63818460208801610ea9565b835190830190612b77818360208801610ea9565b01949350505050565b651e3232b3399f60d11b81527f3c7374796c6520747970653d22746578742f637373223e40696d706f7274207560068201527f726c2868747470733a2f2f666f6e74732e676f6f676c65617069732e636f6d2f6026820152736373733f66616d696c793d444d2b53616e73293b60601b6046820152671e17b9ba3cb6329f60c11b605a82015260008551612c1b816062850160208a01610ea9565b855190830190612c32816062840160208a01610ea9565b8551910190612c48816062840160208901610ea9565b8451910190612c5e816062840160208801610ea9565b661e17b232b3399f60c91b606292909101918201526069019695505050505050565b7f3c72656374207374726f6b653d2223454234413937222066696c6c3d2223324481527f30373139222066696c6c2d72756c653d226e6f6e7a65726f2220783d2231382260208201527f20793d223331392e35222077696474683d2232363422206865696768743d223360408201526b1c9110393c1e91189a11179f60a11b60608201527f3c7061746820643d226d3131312e36203334352e3820352e322d35612e372e37606c8201527f20302030203020302d312e326c2d2e352d2e34612e382e382030203020302d2e608c8201527f362d2e32632d2e3220302d2e3420302d2e352e326c2d332033762d392e34633060ac8201527f2d2e352d2e342d2e382d2e382d2e38682d2e37632d2e3520302d2e382e332d2e60cc8201527f382e3876392e346c2d332d33612e382e382030203020302d312e3120306c2d2e60ec8201527f362e34612e372e37203020302030203020312e316c352e322035202e362e336361010c8201527f2e322030202e342030202e362d2e325a222066696c6c3d22234542344139372261012c82015261179f60f11b61014c8201526000805160206133eb83398151915261014e820152600080516020613f8f83398151915261016e820152600080516020613eb083398151915261018e8201526e3334b6361e9111a2a11a209c9b911f60891b6101ae8201527f3c747370616e20783d223132322e372220793d22333434223e507574204f70746101bd8201526a34b7b71e17ba39b830b71f60a91b6101dd82015260006103aa6101e883016129a3565b7f3c72656374207374726f6b653d2223324345343941222066696c6c3d2223303581527f31413132222066696c6c2d72756c653d226e6f6e7a65726f2220783d2231382260208201527f20793d223331392e35222077696474683d2232363422206865696768743d223360408201526b1c9110393c1e91189a11179f60a11b60608201527f3c7061746820643d226d3131312e36203333322e3220352e322035612e372e37606c8201527f203020302031203020312e326c2d2e352e34632d2e322e322d2e332e322d2e36608c8201527f2e322d2e3220302d2e3420302d2e352d2e326c2d332d3376392e346330202e3560ac8201527f2d2e342e382d2e382e38682d2e37632d2e3520302d2e382d2e332d2e382d2e3860cc8201527f762d392e346c2d332033632d2e322e322d2e342e322d2e362e322d2e3320302d60ec8201527f2e3520302d2e362d2e326c2d2e352d2e34612e372e3720302030203120302d3161010c8201527f2e316c352e322d35202e362d2e33632e322030202e342030202e362e325a222061012c8201527f66696c6c3d2223324345343941222066696c6c2d72756c653d226e6f6e7a657261014c820152633791179f60e11b61016c8201526000805160206133eb833981519152610170820152600080516020613f8f833981519152610190820152600080516020613eb08339815191526101b08201526e3334b6361e91119921a29a1ca0911f60891b6101d08201527f3c747370616e20783d223132312220793d22333434223e43616c6c204f7074696101df8201526937b71e17ba39b830b71f60b11b6101ff82015260006103aa61020983016129a3565b60008251613138818460208701610ea9565b9190910192915050565b7f3c72616469616c4772616469656e742063783d2231303025222063793d22353081527f25222066783d2231303025222066793d223530252220723d2239302e3634252260208201527f206772616469656e745472616e73666f726d3d226d61747269782830202e353560408201527f313634202d31203020312e35202d2e303529222069643d2262223e000000000060608201526000711e39ba37b81039ba37b816b1b7b637b91e9160711b80607b840152845161320881608d860160208901610ea9565b6e111037b33339b2ba1e91181291179f60891b608d91850191820152609c8101919091528351906132408260ae830160208801610ea9565b7f222073746f702d6f7061636974793d223022206f66667365743d2239392e3637910160ae810191909152631291179f60e11b60ce820152701e17b930b234b0b623b930b234b2b73a1f60791b60d282015260e38101612761565b7f3c72616469616c4772616469656e742063783d223825222063793d223530252281527f2066783d223825222066793d223530252220723d2239302e362522206772616460208201527f69656e745472616e73666f726d3d226d61747269782830202e3535313634202d60408201527218901810171b10171a94911034b21e9131911f60691b60608201526000711e39ba37b81039ba37b816b1b7b637b91e9160711b8060738401528451613357816085860160208901610ea9565b6e111037b33339b2ba1e91181291179f60891b608591850191820152609481019190915283519061338f8260a6830160208801610ea9565b8181019150507f222073746f702d6f7061636974793d223022206f66667365743d22313030252260a682015261179f60f11b60c682015261276160c88201701e17b930b234b0b623b930b234b2b73a1f60791b81526011019056fe3c746578742066696c6c2d72756c653d226e6f6e7a65726f2220666f6e742d663c7061746820643d226d36382e3836203133322e392d372e372d31332e342d372e37332031332e3420372e37322d332e363620372e373120332e36355a6d2d372e3720372e31372d382e36362d342e313120382e36352031352e313220382e36362d31352e31322d382e363620342e31315a6d302d322e30392d372e30362d332e333420372e30352d332e333420372e303620332e33342d372e303620332e33345a222066696c6c3d2223424242424242222f3e3c7061746820643d224d31323520323630613720372030203120302d313420302037203720302030203020313420305a6d2d31302e3320332e39762d322e346c2d2e312d2e31682d31762d2e396831762d2e39682d31762d2e396831762d322e35483131382e3861342e3320342e3320302030203120322e3220316c2e352e372e332e362e312e31682e39563235392e35682d2e377631682e37762e38682d2e396c2d2e312e3261332e3520332e352030203020312d312e3420312e37682d2e316c2d2e342e3361342e3720342e372030203020312d322e312e34682d335a6d362d352e3363302d2e3120302d2e322d2e322d2e3320302d2e322d2e322d2e332d2e332d2e346c2d2e322d2e3261332e3120332e312030203020302d322d2e38682d322e34563235382e3668352e315a6d2d322e3420312e3968322e37762d2e39682d352e34762e3968322e375a6d322e322e39682e32632d2e332e362d2e3720312d312e3220312e336c2d2e342e322d31202e32682d322e35563236312e3368342e395a222066696c6c3d2223363436343634222f3e3c7061746820643d224d313138203235336137203720302031203120302031342037203720302030203120302d31345a6d3020382e3837632d2e3220302d2e33372e30362d2e352e32612e36352e36352030203020302030202e39362e37362e3736203020302030202e352e32632e31382030202e33352d2e30372e34392d2e32312e31342d2e31332e322d2e332e322d2e3438612e36322e36322030203020302d2e322d2e34382e372e372030203020302d2e352d2e325a6d2e30392d352e31632d2e323720302d2e35322e30352d2e37362e313361312e3820312e382030203020302d312e30372e39632d2e312e322d2e31372e342d2e322e36346c2d2e30322e313220312e30382e3163302d2e31322e30332d2e32342e30372d2e3335612e38372e3837203020302031202e38332d2e3537632e32362030202e34372e30372e36312e3233732e32322e33352e32322e35386330202e31372d2e30342e33322d2e31322e34356c2d2e322e32352d2e30392e30382d2e342e3338632d2e312e312d2e322e322d2e32372e3361312e333720312e33372030203020302d2e32382e366c2d2e30332e3238563236312e333368312e3034762d2e323363302d2e31332e30312d2e32342e30332d2e3332612e382e38203020302031202e312d2e3235632e30332d2e30382e312d2e31352e31372d2e323361372e303920372e3039203020302030202e36352d2e366c2e32382d2e3334632e30372d2e31322e31332d2e32352e31372d2e33392e30342d2e31342e30362d2e332e30362d2e3520302d2e32372d2e30352d2e35312d2e31352d2e37322d2e312d2e32322d2e32332d2e342d2e342d2e353461312e3820312e382030203020302d2e362d2e333220322e333220322e33322030203020302d2e37322d2e31315a222066696c6c3d2223363436343634222f3e3c7061746820643d224d35322e3739203135332e30386131362e32392031362e323920302031203120302d33322e35382031362e32392031362e323920302030203120302033322e35385a6d302d33312e33316131352e30312031352e3031203020312030202e30322033302e30322031352e30312031352e30312030203020302d2e30322d33302e30325a6d382e353520352e36356131322e36362031322e36362030203020302d31372e303920306c2d2e39312d2e396131332e39342031332e39342030203020312031382e3920306c2d2e392e395a6d2e38332e38312e392d2e39762d2e30316131332e39342031332e393420302030203120302031382e396c2d2e392d2e396131322e36362031322e363620302030203020302d31372e30395a6d2d31382e37352031372e316131322e36362031322e363620302030203120302d31372e30386c2d2e392d2e396131332e39342031332e393420302030203020302031382e396c2e392d2e39325a6d2e38322e38336131322e36372031322e36372030203020302031372e3120306c2e392e396131332e39342031332e39342030203020312d31382e3920306c2e392d2e395a6d31342e322d31322e3335632d2e31382d312e38372d312e382d322e352d332e38332d322e3639762d322e3537682d312e353776322e3532682d312e3236762d322e3532682d312e353676322e3539682d332e3276312e363873312e31372d2e303220312e31352030632e34332d2e30342e38332e32362e392e3776372e3038632d2e30322e31352d2e30392e32392d2e322e3339612e35352e35352030203020312d2e342e3133632e30322e30322d312e313520302d312e313520306c2d2e3320312e383868332e313776322e363368312e3537762d322e353968312e323676322e353868312e3538762d322e3663322e36362d2e313620342e35312d2e383120342e37342d332e332e322d322d2e37352d322e392d322e32362d332e32362e39322d2e343520312e34392d312e323920312e33362d322e36365a6d2d322e3220352e36633020312e382d322e383320312e37352d342e313220312e3733682d2e33762d332e3437682e333963312e33322d2e303420342e30322d2e3120342e303220312e37345a6d2d342e31362d332e333263312e30382e303220332e34322e303620332e34322d312e353820302d312e36372d322e32362d312e36312d332e33372d312e3538682d2e333276332e3136682e32375a222066696c6c3d2223453239323342222f3e3c7061746820643d224d34362e38203131392e356131362e332031362e3320302031203120302033322e362031362e332031362e3320302030203120302d33322e365a6d302032302e36632d2e3520302d2e392e322d312e322e3561312e3520312e35203020302030203020322e3220312e3820312e3820302030203020312e322e35632e342030202e382d2e3220312e312d2e352e332d2e332e352d2e372e352d312e3120302d2e342d2e322d2e382d2e352d312e312d2e332d2e332d2e372d2e352d312e312d2e355a6d2e322d31312e38632d2e3620302d312e3220302d312e382e332d2e352e322d31202e342d312e342e382d2e342e332d2e382e382d3120312e33613520352030203020302d2e3520312e35762e326c322e342e332e322d2e386132203220302030203120322d312e34632e3520302031202e3220312e342e362e332e332e352e382e3520312e332030202e342d2e312e382d2e3320316c2d2e352e372d2e322e312d3120312d2e362e3661332e3220332e322030203020302d2e3620312e3476312e37483438762d312e336c2e322d2e362e342d2e352e372d2e366131362e352031362e3520302030203020312e352d312e366c2e342d31202e322d31613420342030203020302d2e342d312e38632d2e322d2e342d2e352d2e392d312d312e326c2d312e332d2e382d312e372d2e325a222066696c6c3d2223333833383338222f3e6f6e742d73697a653d2231342220666f6e742d7765696768743d2234303022203c7061746820643d226d36322e342031323220322e372d312e364c3638203132326c372e3520342e3420322e3820312e367631356c2d322e3820312e364c3638203134396c2d322e3820312e362d322e382d312e362d372e362d342e342d322e372d312e36762d31356c322e372d312e3620372e362d342e345a6d2d342e3820392e3176382e386c372e3520342e3320372e362d342e33563133316c2d372e362d342e332d372e3520342e335a222066696c6c3d2223333135394343222f3e616d696c793d22444d53616e732d4d656469756d2c20444d2053616e732220663c7061746820643d224d323534203133352e376131362e332031362e332030203120302d33322e3620302031362e332031362e332030203020302033322e3620305a6d2d32342039563133396c2d2e322d2e31682d322e32632d2e3120302d2e3220302d2e322d2e32762d3268322e346c2e322d2e31762d32483232372e36632d2e3120302d2e3220302d2e322d2e32762d312e3863302d2e3120302d2e322e322d2e3268322e32632e312030202e322030202e322d2e325631323763302d2e3220302d2e322e322d2e3268372e366c312e362e31613130203130203020302031203520322e366c312e3120312e342e3820312e356330202e322e322e322e332e3268312e38632e332030202e332030202e332e3376312e366330202e322030202e322d2e332e32483234376c2d2e312e3276312e396330202e312030202e322e322e3268312e3676312e386330202e322030202e332d2e322e33682d326c2d2e332e3161382e3120382e312030203020312d332e3220346c2d2e322e322d31202e356131312031312030203020312d342e382031682d375a6d31342d31322e32762d2e31613420342030203020302d2e342d2e376c2d2e372d312d2e352d2e3461372e3320372e332030203020302d342e382d312e37682d352e34632d2e3220302d2e3220302d2e322e3276332e366330202e312030202e322e322e32483234345a6d2d352e3720342e3468362e32632e312030202e322030202e322d2e32762d32682d31322e356c2d2e322e31763268362e335a6d352e322032682e35762e3361362e3620362e362030203020312d322e3820322e3820372e3720372e372030203020312d33202e386c2d2e382e31682d352e32632d2e3220302d2e3220302d2e322d2e32762d332e3563302d2e3220302d2e322e322d2e326831312e335a222066696c6c3d2223453341393444222f3e3c7061746820643d224d3235332e3739203131392e356131362e32392031362e323920302031203120302033322e35382031362e32392031362e323920302030203120302d33322e35385a6d2d2e30322032302e3633632d2e343520302d2e38342e31362d312e31362e343861312e353220312e3532203020302030202e303120322e323320312e373820312e373820302030203020312e31352e3435632e34352030202e38342d2e313620312e31362d2e34372e33322d2e33312e34382d2e372e34382d312e313320302d2e34342d2e31362d2e382d2e352d312e312d2e33322d2e332d2e372d2e34362d312e31342d2e34365a6d2e32322d31312e3834632d2e363220302d312e32312e312d312e37362e323861342e3220342e322030203020302d322e343920322e3131203520352030203020302d2e343820312e34376c2d2e30342e323820322e35322e3232632e30312d2e32372e30372d2e35332e31362d2e3861322e303220322e303220302030203120312e39332d312e3333632e3632203020312e30392e313920312e34332e35352e33332e33362e352e382e3520312e33342030202e342d2e312e37362d2e323820312e30342d2e31342e32322d2e332e34322d2e34382e366c2d2e31392e31382d2e39322e3838632d2e32362e32352d2e34372e34382d2e36342e3761332e313820332e31382030203020302d2e363420312e3431632d2e30332e322d2e30362e34312d2e30372e363576312e303168322e3432762d2e353363302d2e332e30322d2e35352e30362d2e37362e30342d2e322e31312d2e342e32312d2e35372e312d2e31382e32342d2e33362e34312d2e35332e31382d2e31382e342d2e33392e36372d2e36322e33312d2e32372e362d2e35332e38352d2e37392e32352d2e32352e34372d2e35312e36352d2e37392e31372d2e32372e33312d2e35372e342d2e392e312d2e33322e31352d2e372e31352d312e313420302d2e36352d2e31322d312e32312d2e33352d312e372d2e32332d2e352d2e35352d2e39312d2e39352d312e32352d2e342d2e33332d2e38372d2e35382d312e342d2e373561352e3420352e342030203020302d312e36362d2e32365a222066696c6c3d2223333833383338222f3ea2646970667358221220e32a81930b154c27f0cfc3df6e532575d92ddee884e7585290acea62016b7aaa64736f6c63430008090033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.