Ape Curtis Testnet

Contract

0xC20d4bA1ccE177B1f09FaDD8F72F2E59109B1836

Overview

APE Balance

Ape Curtis LogoApe Curtis LogoApe Curtis Logo0 APE

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Batch Store Trai...135629852024-12-05 20:23:4312 days ago1733430223IN
0xC20d4bA1...9109B1836
0 APE0.000066390.140198
Batch Store Pixe...135629842024-12-05 20:23:4212 days ago1733430222IN
0xC20d4bA1...9109B1836
0 APE0.0005130.140693
Batch Store Trai...135629832024-12-05 20:23:4112 days ago1733430221IN
0xC20d4bA1...9109B1836
0 APE0.000536040.137479
Batch Store Pixe...135629822024-12-05 20:23:4012 days ago1733430220IN
0xC20d4bA1...9109B1836
0 APE0.003750590.137989
Batch Store Trai...135629812024-12-05 20:23:3912 days ago1733430219IN
0xC20d4bA1...9109B1836
0 APE0.000523240.13591
Batch Store Pixe...135629802024-12-05 20:23:3712 days ago1733430217IN
0xC20d4bA1...9109B1836
0 APE0.003708220.136417
Batch Store Trai...135629792024-12-05 20:23:3612 days ago1733430216IN
0xC20d4bA1...9109B1836
0 APE0.000506740.133283
Batch Store Pixe...135629782024-12-05 20:23:3512 days ago1733430215IN
0xC20d4bA1...9109B1836
0 APE0.003617040.133077
Batch Store Trai...135629762024-12-05 20:23:3412 days ago1733430214IN
0xC20d4bA1...9109B1836
0 APE0.000489690.130501
Batch Store Pixe...135629752024-12-05 20:23:3312 days ago1733430213IN
0xC20d4bA1...9109B1836
0 APE0.003575310.131548
Batch Store Trai...135629732024-12-05 20:23:3112 days ago1733430211IN
0xC20d4bA1...9109B1836
0 APE0.000509190.128967
Batch Store Pixe...135629722024-12-05 20:23:3012 days ago1733430210IN
0xC20d4bA1...9109B1836
0 APE0.00351770.129427
Batch Store Trai...135629712024-12-05 20:23:2912 days ago1733430209IN
0xC20d4bA1...9109B1836
0 APE0.000499290.126438
Batch Store Pixe...135629702024-12-05 20:23:2812 days ago1733430208IN
0xC20d4bA1...9109B1836
0 APE0.003448650.126903
Batch Store Trai...135629692024-12-05 20:23:2712 days ago1733430207IN
0xC20d4bA1...9109B1836
0 APE0.000475070.124977
Batch Store Pixe...135629682024-12-05 20:23:2512 days ago1733430205IN
0xC20d4bA1...9109B1836
0 APE0.003382320.124451
Batch Store Trai...135629662024-12-05 20:23:2412 days ago1733430204IN
0xC20d4bA1...9109B1836
0 APE0.000463840.122005
Batch Store Pixe...135629652024-12-05 20:23:2312 days ago1733430203IN
0xC20d4bA1...9109B1836
0 APE0.003355650.123441
Batch Store Trai...135629642024-12-05 20:23:2112 days ago1733430201IN
0xC20d4bA1...9109B1836
0 APE0.00048780.120559
Batch Store Pixe...135629632024-12-05 20:23:2012 days ago1733430200IN
0xC20d4bA1...9109B1836
0 APE0.003288580.120992
Batch Store Trai...135629622024-12-05 20:23:1912 days ago1733430199IN
0xC20d4bA1...9109B1836
0 APE0.000460790.118171
Batch Store Pixe...135629612024-12-05 20:23:1812 days ago1733430198IN
0xC20d4bA1...9109B1836
0 APE0.003250170.119583
Batch Store Trai...135629602024-12-05 20:23:1612 days ago1733430196IN
0xC20d4bA1...9109B1836
0 APE0.000449640.116777
Batch Store Pixe...135629592024-12-05 20:23:1512 days ago1733430195IN
0xC20d4bA1...9109B1836
0 APE0.003160470.116287
Batch Store Trai...135629572024-12-05 20:23:1412 days ago1733430194IN
0xC20d4bA1...9109B1836
0 APE0.000461080.113952
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x00d4589c...AD32547f1
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
GobsDataSource

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at curtis.apescan.io on 2024-11-23
*/

/**
 *Submitted for verification at curtis.apescan.io on 2024-11-21
 */

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * @title GobsDataSource
 * @notice Stores RGBA pixel data and generates SVGs for on-chain Goblin images.
 */
contract GobsDataSource {
    address payable internal deployer;
    bool private contractSealed = false;
    string internal constant SVG_HEADER =
        'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.2" viewBox="0 0 29 29"><rect width="100%" height="100%" fill="#0047B1"/>';
    string internal constant SVG_FOOTER = "</svg>";
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    uint256 private constant PIXEL_DATA_SIZE = 29 * 29 * 3;

    struct Trait {
        string traitType;
        string value;
    }

    struct GobData {
        bytes pixelData; // Row-major RGBA data (29x29 pixels, 3364 bytes)
        Trait[] traits; // Array of traits for the token
    }

    mapping(uint256 => GobData) private gobData; // Stores data for each Goblin

    modifier onlyDeployer() {
        require(msg.sender == deployer, "Only deployer.");
        _;
    }

    modifier unsealed() {
        require(!contractSealed, "Contract is sealed.");
        _;
    }

    constructor() {
        deployer = payable(msg.sender);
    }

    /**
     * @notice Seal the contract to prevent further modifications.
     */
    function sealContract() external onlyDeployer unsealed {
        contractSealed = true;
    }

    /**
     * @notice Store RGBA pixel data for a Goblin.
     * @param tokenId The ID of the Goblin (0 <= tokenId < 2222).
     * @param pixelData The RGBA data (row-major order, 29x29 pixels, 3364 bytes).
     */
    function storePixelData(uint256 tokenId, bytes memory pixelData)
        external
        onlyDeployer
        unsealed
    {
        require(tokenId < 2222, "Invalid tokenId");
        require(
            pixelData.length == PIXEL_DATA_SIZE,
            "Invalid pixel data length"
        );
        gobData[tokenId].pixelData = pixelData;
    }

    function batchStorePixelData(
        uint256[] memory tokenIds,
        bytes[] memory pixelDataArray
    ) external onlyDeployer unsealed {
        require(tokenIds.length == pixelDataArray.length, "Mismatched arrays");

        for (uint256 i = 0; i < tokenIds.length; i++) {
            uint256 tokenId = tokenIds[i];
            bytes memory pixelData = pixelDataArray[i];

            require(tokenId < 2222, "Invalid tokenId");
            require(
                pixelData.length == 29 * 29 * 3,
                "Invalid pixel data length"
            );

            gobData[tokenId].pixelData = pixelData;
        }
    }

    function storeTraits(uint256 tokenId, Trait[] memory traits)
        external
        onlyDeployer
        unsealed
    {
        uint256 len = traits.length;
        require(len > 0, "Traits cannot be empty");

        // Resize existing traits array
        delete gobData[tokenId].traits; // Clear previous data
        for (uint256 i = 0; i < len; i++) {
            gobData[tokenId].traits.push(traits[i]);
        }
    }

    function batchStoreTraits(
        uint256[] memory tokenIds,
        Trait[][] memory traitsArray
    ) external onlyDeployer unsealed {
        require(tokenIds.length == traitsArray.length, "Mismatched arrays");

        for (uint256 i = 0; i < tokenIds.length; i++) {
            uint256 tokenId = tokenIds[i];
            Trait[] memory traits = traitsArray[i];

            delete gobData[tokenId].traits; // Clear existing traits

            for (uint256 j = 0; j < traits.length; j++) {
                gobData[tokenId].traits.push(traits[j]);
            }
        }
    }

    // Retrieve traits for a token
    function getTraits(uint256 tokenId) external view returns (string memory) {
        require(gobData[tokenId].traits.length > 0, "Traits not set");

        string memory jsonTraits = "[";

        for (uint256 i = 0; i < gobData[tokenId].traits.length; i++) {
            jsonTraits = string.concat(
                jsonTraits,
                '{"trait_type": "',
                gobData[tokenId].traits[i].traitType,
                '", "value": "',
                gobData[tokenId].traits[i].value,
                '"}'
            );

            if (i < gobData[tokenId].traits.length - 1) {
                jsonTraits = string.concat(jsonTraits, ",");
            }
        }

        jsonTraits = string.concat(jsonTraits, "]");
        return jsonTraits;
    }

    /**
     * @notice Retrieve RGB pixel data for a Goblin.
     * @param tokenId The ID of the Goblin.
     * @return The RGB pixel data.
     */
    function getGobData(uint256 tokenId) external view returns (bytes memory) {
        require(tokenId < 2222, "Invalid tokenId");
        require(
            gobData[tokenId].pixelData.length == PIXEL_DATA_SIZE,
            "Pixel data not set"
        );
        return gobData[tokenId].pixelData;
    }

    /**
     * @notice Generate the SVG for a Goblin from its pixel data.
     * @param tokenId The ID of the Goblin.
     */
    function getGobSVG(uint256 tokenId)
        external
        view
        returns (string memory svg)
    {
        require(tokenId < 2222, "Invalid tokenId");
        bytes memory pixels = gobData[tokenId].pixelData;

        require(pixels.length > 0, "Pixel data not set");

        bytes memory result = abi.encodePacked(SVG_HEADER); // Start with the header
        bytes memory buffer = new bytes(7); // Buffer for color hex

        for (uint256 y = 0; y < 29; y++) {
            for (uint256 x = 0; x < 29; x++) {
                uint256 p = (y * 29 + x) * 3;
                if (
                    pixels[p] == 0x00 &&
                    pixels[p + 1] == 0x47 &&
                    pixels[p + 2] == 0xb1
                ) {
                    continue; // Skip background pixels
                }

                // Convert RGB to hex
                buffer[0] = "#";
                for (uint256 i = 0; i < 3; i++) {
                    uint8 value = uint8(pixels[p + i]);
                    buffer[1 + i * 2] = _HEX_SYMBOLS[value >> 4];
                    buffer[2 + i * 2] = _HEX_SYMBOLS[value & 0xf];
                }

                // Append rect to the result
                result = abi.encodePacked(
                    result,
                    '<rect x="',
                    toString(x),
                    '" y="',
                    toString(y),
                    '" width="1" height="1" shape-rendering="crispEdges" fill="',
                    string(buffer),
                    '"/>'
                );
            }
        }

        svg = string(abi.encodePacked(result, SVG_FOOTER)); // Append footer
    }

    /// @dev Returns the base 10 decimal representation of `value`.
    function toString(uint256 value) internal pure returns (string memory str) {
        /// @solidity memory-safe-assembly
        assembly {
            // The maximum value of a uint256 contains 78 digits (1 byte per digit), but
            // we allocate 0xa0 bytes to keep the free memory pointer 32-byte word aligned.
            // We will need 1 word for the trailing zeros padding, 1 word for the length,
            // and 3 words for a maximum of 78 digits.
            str := add(mload(0x40), 0x80)
            // Update the free memory pointer to allocate.
            mstore(0x40, add(str, 0x20))
            // Zeroize the slot after the string.
            mstore(str, 0)

            // Cache the end of the memory to calculate the length later.
            let end := str

            let w := not(0) // Tsk.
            // We write the string from rightmost digit to leftmost digit.
            // The following is essentially a do-while loop that also handles the zero case.
            for {
                let temp := value
            } 1 {

            } {
                str := add(str, w) // `sub(str, 1)`.
                // Write the character to the pointer.
                // The ASCII index of the '0' character is 48.
                mstore8(str, add(48, mod(temp, 10)))
                // Keep dividing `temp` until zero.
                temp := div(temp, 10)
                if iszero(temp) {
                    break
                }
            }

            let length := sub(end, str)
            // Move the pointer 32 bytes leftwards to make room for the length.
            str := sub(str, 0x20)
            // Store the length.
            mstore(str, length)
        }
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"bytes[]","name":"pixelDataArray","type":"bytes[]"}],"name":"batchStorePixelData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"components":[{"internalType":"string","name":"traitType","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GobsDataSource.Trait[][]","name":"traitsArray","type":"tuple[][]"}],"name":"batchStoreTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getGobData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getGobSVG","outputs":[{"internalType":"string","name":"svg","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getTraits","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sealContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"pixelData","type":"bytes"}],"name":"storePixelData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"string","name":"traitType","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GobsDataSource.Trait[]","name":"traits","type":"tuple[]"}],"name":"storeTraits","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610086575f3560e01c8063b44606f911610059578063b44606f9146100fc578063d5f087771461012c578063dcd83a1814610148578063e1dc07611461016457610086565b806302be09cb1461008a5780633efabdf4146100a657806368bd580e146100d6578063997c51d2146100e0575b5f80fd5b6100a4600480360381019061009f9190611704565b610194565b005b6100c060048036038101906100bb919061177a565b6103b9565b6040516100cd9190611805565b60405180910390f35b6100de61093e565b005b6100fa60048036038101906100f59190611a2e565b610a36565b005b6101166004803603810190610111919061177a565b610c16565b6040516101239190611ada565b60405180910390f35b61014660048036038101906101419190611bd8565b610d60565b005b610162600480360381019061015d9190611c4e565b610f94565b005b61017e6004803603810190610179919061177a565b61111e565b60405161018b9190611805565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021890611cf2565b60405180910390fd5b5f60149054906101000a900460ff1615610270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026790611d5a565b60405180910390fd5b80518251146102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ab90611dc2565b60405180910390fd5b5f5b82518110156103b4575f8382815181106102d3576102d2611de0565b5b602002602001015190505f8383815181106102f1576102f0611de0565b5b602002602001015190506108ae821061033f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033690611e57565b60405180910390fd5b6109db815114610384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037b90611ebf565b60405180910390fd5b8060015f8481526020019081526020015f205f0190816103a491906120d7565b50505080806001019150506102b6565b505050565b60606108ae82106103ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f690611e57565b60405180910390fd5b5f60015f8481526020019081526020015f205f01805461041e90611f0a565b80601f016020809104026020016040519081016040528092919081815260200182805461044a90611f0a565b80156104955780601f1061046c57610100808354040283529160200191610495565b820191905f5260205f20905b81548152906001019060200180831161047857829003601f168201915b505050505090505f8151116104df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d6906121f0565b60405180910390fd5b5f6040518060c0016040528060938152602001612923609391396040516020016105099190612248565b60405160208183030381529060405290505f600767ffffffffffffffff81111561053657610535611407565b5b6040519080825280601f01601f1916602001820160405280156105685781602001600182028036833780820191505090505b5090505f5b601d8110156108dc575f5b601d8110156108ce575f600382601d85610592919061228b565b61059c91906122cc565b6105a6919061228b565b90505f60f81b8682815181106105bf576105be611de0565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480156106475750604760f81b8660018361060791906122cc565b8151811061061857610617611de0565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80156106a1575060b160f81b8660028361066191906122cc565b8151811061067257610671611de0565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156106ac57506108c1565b7f2300000000000000000000000000000000000000000000000000000000000000845f815181106106e0576106df611de0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b6003811015610886575f87828461072791906122cc565b8151811061073857610737611de0565b5b602001015160f81c60f81b60f81c90507f303132333435363738396162636465660000000000000000000000000000000060048260ff16901c60ff166010811061078557610784611de0565b5b1a60f81b86600284610797919061228b565b60016107a391906122cc565b815181106107b4576107b3611de0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f3031323334353637383961626364656600000000000000000000000000000000600f821660ff166010811061081b5761081a611de0565b5b1a60f81b8660028461082d919061228b565b600261083991906122cc565b8151811061084a57610849611de0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350508080600101915050610710565b5084610891836112e6565b61089a856112e6565b866040516020016108ae9493929190612487565b6040516020818303038152906040529450505b8080600101915050610578565b50808060010191505061056d565b50816040518060400160405280600681526020017f3c2f7376673e00000000000000000000000000000000000000000000000000008152506040516020016109259291906124f0565b6040516020818303038152906040529350505050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290611cf2565b60405180910390fd5b5f60149054906101000a900460ff1615610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1190611d5a565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611cf2565b60405180910390fd5b5f60149054906101000a900460ff1615610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990611d5a565b60405180910390fd5b5f815190505f8111610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509061255d565b60405180910390fd5b60015f8481526020019081526020015f206001015f610b789190611335565b5f5b81811015610c105760015f8581526020019081526020015f20600101838281518110610ba957610ba8611de0565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f019081610bea91906125d3565b506020820151816001019081610c0091906125d3565b5050508080600101915050610b7a565b50505050565b60606108ae8210610c5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5390611e57565b60405180910390fd5b6109db60015f8481526020019081526020015f205f018054610c7d90611f0a565b905014610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb6906121f0565b60405180910390fd5b60015f8381526020019081526020015f205f018054610cdd90611f0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0990611f0a565b8015610d545780601f10610d2b57610100808354040283529160200191610d54565b820191905f5260205f20905b815481529060010190602001808311610d3757829003601f168201915b50505050509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de490611cf2565b60405180910390fd5b5f60149054906101000a900460ff1615610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390611d5a565b60405180910390fd5b8051825114610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790611dc2565b60405180910390fd5b5f5b8251811015610f8f575f838281518110610e9f57610e9e611de0565b5b602002602001015190505f838381518110610ebd57610ebc611de0565b5b6020026020010151905060015f8381526020019081526020015f206001015f610ee69190611335565b5f5b8151811015610f7f5760015f8481526020019081526020015f20600101828281518110610f1857610f17611de0565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f019081610f5991906125d3565b506020820151816001019081610f6f91906125d3565b5050508080600101915050610ee8565b5050508080600101915050610e82565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890611cf2565b60405180910390fd5b5f60149054906101000a900460ff1615611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790611d5a565b60405180910390fd5b6108ae82106110b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ab90611e57565b60405180910390fd5b6109db8151146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f090611ebf565b60405180910390fd5b8060015f8481526020019081526020015f205f01908161111991906120d7565b505050565b60605f60015f8481526020019081526020015f206001018054905011611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906126ec565b60405180910390fd5b5f6040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090505f5b60015f8581526020019081526020015f20600101805490508110156112ba578160015f8681526020019081526020015f2060010182815481106111fa576111f9611de0565b5b905f5260205f2090600202015f0160015f8781526020019081526020015f20600101838154811061122e5761122d611de0565b5b905f5260205f20906002020160010160405160200161124f939291906127fc565b60405160208183030381529060405291506001805f8681526020019081526020015f20600101805490506112839190612859565b8110156112ad578160405160200161129b91906128b2565b60405160208183030381529060405291505b80806001019150506111b4565b50806040516020016112cc91906128fd565b604051602081830303815290604052905080915050919050565b60606080604051019050602081016040525f8152805f19835b600115611320578184019350600a81066030018453600a81049050806112ff575b50828203602084039350808452505050919050565b5080545f8255600202905f5260205f20908101906113539190611356565b50565b5b80821115611386575f8082015f61136e919061138a565b600182015f61137d919061138a565b50600201611357565b5090565b50805461139690611f0a565b5f825580601f106113a757506113c4565b601f0160209004905f5260205f20908101906113c391906113c7565b5b50565b5b808211156113de575f815f9055506001016113c8565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61143d826113f7565b810181811067ffffffffffffffff8211171561145c5761145b611407565b5b80604052505050565b5f61146e6113e2565b905061147a8282611434565b919050565b5f67ffffffffffffffff82111561149957611498611407565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b6114c0816114ae565b81146114ca575f80fd5b50565b5f813590506114db816114b7565b92915050565b5f6114f36114ee8461147f565b611465565b90508083825260208201905060208402830185811115611516576115156114aa565b5b835b8181101561153f578061152b88826114cd565b845260208401935050602081019050611518565b5050509392505050565b5f82601f83011261155d5761155c6113f3565b5b813561156d8482602086016114e1565b91505092915050565b5f67ffffffffffffffff8211156115905761158f611407565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff8211156115bf576115be611407565b5b6115c8826113f7565b9050602081019050919050565b828183375f83830152505050565b5f6115f56115f0846115a5565b611465565b905082815260208101848484011115611611576116106115a1565b5b61161c8482856115d5565b509392505050565b5f82601f830112611638576116376113f3565b5b81356116488482602086016115e3565b91505092915050565b5f61166361165e84611576565b611465565b90508083825260208201905060208402830185811115611686576116856114aa565b5b835b818110156116cd57803567ffffffffffffffff8111156116ab576116aa6113f3565b5b8086016116b88982611624565b85526020850194505050602081019050611688565b5050509392505050565b5f82601f8301126116eb576116ea6113f3565b5b81356116fb848260208601611651565b91505092915050565b5f806040838503121561171a576117196113eb565b5b5f83013567ffffffffffffffff811115611737576117366113ef565b5b61174385828601611549565b925050602083013567ffffffffffffffff811115611764576117636113ef565b5b611770858286016116d7565b9150509250929050565b5f6020828403121561178f5761178e6113eb565b5b5f61179c848285016114cd565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6117d7826117a5565b6117e181856117af565b93506117f18185602086016117bf565b6117fa816113f7565b840191505092915050565b5f6020820190508181035f83015261181d81846117cd565b905092915050565b5f67ffffffffffffffff82111561183f5761183e611407565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561187257611871611407565b5b61187b826113f7565b9050602081019050919050565b5f61189a61189584611858565b611465565b9050828152602081018484840111156118b6576118b56115a1565b5b6118c18482856115d5565b509392505050565b5f82601f8301126118dd576118dc6113f3565b5b81356118ed848260208601611888565b91505092915050565b5f6040828403121561190b5761190a611850565b5b6119156040611465565b90505f82013567ffffffffffffffff81111561193457611933611854565b5b611940848285016118c9565b5f83015250602082013567ffffffffffffffff81111561196357611962611854565b5b61196f848285016118c9565b60208301525092915050565b5f61198d61198884611825565b611465565b905080838252602082019050602084028301858111156119b0576119af6114aa565b5b835b818110156119f757803567ffffffffffffffff8111156119d5576119d46113f3565b5b8086016119e289826118f6565b855260208501945050506020810190506119b2565b5050509392505050565b5f82601f830112611a1557611a146113f3565b5b8135611a2584826020860161197b565b91505092915050565b5f8060408385031215611a4457611a436113eb565b5b5f611a51858286016114cd565b925050602083013567ffffffffffffffff811115611a7257611a716113ef565b5b611a7e85828601611a01565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f611aac82611a88565b611ab68185611a92565b9350611ac68185602086016117bf565b611acf816113f7565b840191505092915050565b5f6020820190508181035f830152611af28184611aa2565b905092915050565b5f67ffffffffffffffff821115611b1457611b13611407565b5b602082029050602081019050919050565b5f611b37611b3284611afa565b611465565b90508083825260208201905060208402830185811115611b5a57611b596114aa565b5b835b81811015611ba157803567ffffffffffffffff811115611b7f57611b7e6113f3565b5b808601611b8c8982611a01565b85526020850194505050602081019050611b5c565b5050509392505050565b5f82601f830112611bbf57611bbe6113f3565b5b8135611bcf848260208601611b25565b91505092915050565b5f8060408385031215611bee57611bed6113eb565b5b5f83013567ffffffffffffffff811115611c0b57611c0a6113ef565b5b611c1785828601611549565b925050602083013567ffffffffffffffff811115611c3857611c376113ef565b5b611c4485828601611bab565b9150509250929050565b5f8060408385031215611c6457611c636113eb565b5b5f611c71858286016114cd565b925050602083013567ffffffffffffffff811115611c9257611c916113ef565b5b611c9e85828601611624565b9150509250929050565b7f4f6e6c79206465706c6f7965722e0000000000000000000000000000000000005f82015250565b5f611cdc600e836117af565b9150611ce782611ca8565b602082019050919050565b5f6020820190508181035f830152611d0981611cd0565b9050919050565b7f436f6e7472616374206973207365616c65642e000000000000000000000000005f82015250565b5f611d446013836117af565b9150611d4f82611d10565b602082019050919050565b5f6020820190508181035f830152611d7181611d38565b9050919050565b7f4d69736d617463686564206172726179730000000000000000000000000000005f82015250565b5f611dac6011836117af565b9150611db782611d78565b602082019050919050565b5f6020820190508181035f830152611dd981611da0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420746f6b656e496400000000000000000000000000000000005f82015250565b5f611e41600f836117af565b9150611e4c82611e0d565b602082019050919050565b5f6020820190508181035f830152611e6e81611e35565b9050919050565b7f496e76616c696420706978656c2064617461206c656e677468000000000000005f82015250565b5f611ea96019836117af565b9150611eb482611e75565b602082019050919050565b5f6020820190508181035f830152611ed681611e9d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f2157607f821691505b602082108103611f3457611f33611edd565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611f967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611f5b565b611fa08683611f5b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611fdb611fd6611fd1846114ae565b611fb8565b6114ae565b9050919050565b5f819050919050565b611ff483611fc1565b61200861200082611fe2565b848454611f67565b825550505050565b5f90565b61201c612010565b612027818484611feb565b505050565b5b8181101561204a5761203f5f82612014565b60018101905061202d565b5050565b601f82111561208f5761206081611f3a565b61206984611f4c565b81016020851015612078578190505b61208c61208485611f4c565b83018261202c565b50505b505050565b5f82821c905092915050565b5f6120af5f1984600802612094565b1980831691505092915050565b5f6120c783836120a0565b9150826002028217905092915050565b6120e082611a88565b67ffffffffffffffff8111156120f9576120f8611407565b5b6121038254611f0a565b61210e82828561204e565b5f60209050601f83116001811461213f575f841561212d578287015190505b61213785826120bc565b86555061219e565b601f19841661214d86611f3a565b5f5b828110156121745784890151825560018201915060208501945060208101905061214f565b86831015612191578489015161218d601f8916826120a0565b8355505b6001600288020188555050505b505050505050565b7f506978656c2064617461206e6f742073657400000000000000000000000000005f82015250565b5f6121da6012836117af565b91506121e5826121a6565b602082019050919050565b5f6020820190508181035f830152612207816121ce565b9050919050565b5f81905092915050565b5f612222826117a5565b61222c818561220e565b935061223c8185602086016117bf565b80840191505092915050565b5f6122538284612218565b915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612295826114ae565b91506122a0836114ae565b92508282026122ae816114ae565b915082820484148315176122c5576122c461225e565b5b5092915050565b5f6122d6826114ae565b91506122e1836114ae565b92508282019050808211156122f9576122f861225e565b5b92915050565b5f81905092915050565b5f61231382611a88565b61231d81856122ff565b935061232d8185602086016117bf565b80840191505092915050565b7f3c7265637420783d2200000000000000000000000000000000000000000000005f82015250565b5f61236d60098361220e565b915061237882612339565b600982019050919050565b7f2220793d220000000000000000000000000000000000000000000000000000005f82015250565b5f6123b760058361220e565b91506123c282612383565b600582019050919050565b7f222077696474683d223122206865696768743d2231222073686170652d72656e5f8201527f646572696e673d2263726973704564676573222066696c6c3d22000000000000602082015250565b5f612427603a8361220e565b9150612432826123cd565b603a82019050919050565b7f222f3e00000000000000000000000000000000000000000000000000000000005f82015250565b5f61247160038361220e565b915061247c8261243d565b600382019050919050565b5f6124928287612309565b915061249d82612361565b91506124a98286612218565b91506124b4826123ab565b91506124c08285612218565b91506124cb8261241b565b91506124d78284612218565b91506124e282612465565b915081905095945050505050565b5f6124fb8285612309565b91506125078284612218565b91508190509392505050565b7f5472616974732063616e6e6f7420626520656d707479000000000000000000005f82015250565b5f6125476016836117af565b915061255282612513565b602082019050919050565b5f6020820190508181035f8301526125748161253b565b9050919050565b5f819050815f5260205f209050919050565b601f8211156125ce5761259f8161257b565b6125a884611f4c565b810160208510156125b7578190505b6125cb6125c385611f4c565b83018261202c565b50505b505050565b6125dc826117a5565b67ffffffffffffffff8111156125f5576125f4611407565b5b6125ff8254611f0a565b61260a82828561258d565b5f60209050601f83116001811461263b575f8415612629578287015190505b61263385826120bc565b86555061269a565b601f1984166126498661257b565b5f5b828110156126705784890151825560018201915060208501945060208101905061264b565b8683101561268d5784890151612689601f8916826120a0565b8355505b6001600288020188555050505b505050505050565b7f547261697473206e6f74207365740000000000000000000000000000000000005f82015250565b5f6126d6600e836117af565b91506126e1826126a2565b602082019050919050565b5f6020820190508181035f830152612703816126ca565b9050919050565b7f7b2274726169745f74797065223a202200000000000000000000000000000000815250565b5f815461273c81611f0a565b612746818661220e565b9450600182165f81146127605760018114612775576127a7565b60ff19831686528115158202860193506127a7565b61277e8561257b565b5f5b8381101561279f57815481890152600182019150602081019050612780565b838801955050505b50505092915050565b7f222c202276616c7565223a202200000000000000000000000000000000000000815250565b7f227d000000000000000000000000000000000000000000000000000000000000815250565b5f6128078286612218565b91506128128261270a565b6010820191506128228285612730565b915061282d826127b0565b600d8201915061283d8284612730565b9150612848826127d6565b600282019150819050949350505050565b5f612863826114ae565b915061286e836114ae565b92508282039050818111156128865761288561225e565b5b92915050565b7f2c00000000000000000000000000000000000000000000000000000000000000815250565b5f6128bd8284612218565b91506128c88261288c565b60018201915081905092915050565b7f5d00000000000000000000000000000000000000000000000000000000000000815250565b5f6129088284612218565b9150612913826128d7565b6001820191508190509291505056fe646174613a696d6167652f7376672b786d6c3b757466382c3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030203239203239223e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d2223303034374231222f3ea26469706673582212201b57a563f2e6268d98f5f03b8bff4db055758212a7468ee64e3efad2ddfb4f1a64736f6c634300081a0033

Deployed Bytecode Sourcemap

255:8578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2145:650;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5291:1702;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1454:95;;;:::i;:::-;;2803:440;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4843:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3251:598;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1778:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3893:789;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2145:650;1136:8;;;;;;;;;;1122:22;;:10;:22;;;1114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:14:::1;;;;;;;;;;;1230:15;1222:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;2326:14:::2;:21;2307:8;:15;:40;2299:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:9;2382:406;2406:8;:15;2402:1;:19;2382:406;;;2443:15;2461:8;2470:1;2461:11;;;;;;;;:::i;:::-;;;;;;;;2443:29;;2487:22;2512:14;2527:1;2512:17;;;;;;;;:::i;:::-;;;;;;;;2487:42;;2564:4;2554:7;:14;2546:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2649:11;2629:9;:16;:31;2603:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;2767:9;2738:7;:16;2746:7;2738:16;;;;;;;;;;;:26;;:38;;;;;;:::i;:::-;;2428:360;;2423:3;;;;;;;2382:406;;;;2145:650:::0;;:::o;5291:1702::-;5377:17;5430:4;5420:7;:14;5412:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;5465:19;5487:7;:16;5495:7;5487:16;;;;;;;;;;;:26;;5465:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5550:1;5534:6;:13;:17;5526:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5587:19;5626:10;;;;;;;;;;;;;;;;;5609:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;5587:50;;5673:19;5705:1;5695:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5673:34;;5749:9;5744:1162;5768:2;5764:1;:6;5744:1162;;;5797:9;5792:1103;5816:2;5812:1;:6;5792:1103;;;5844:9;5871:1;5866;5861:2;5857:1;:6;;;;:::i;:::-;:10;;;;:::i;:::-;5856:16;;;;:::i;:::-;5844:28;;5930:4;5917:17;;:6;5924:1;5917:9;;;;;;;;:::i;:::-;;;;;;;;;;:17;;;;:63;;;;;5976:4;5959:21;;:6;5970:1;5966;:5;;;;:::i;:::-;5959:13;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;5917:63;:109;;;;;6022:4;6005:21;;:6;6016:1;6012;:5;;;;:::i;:::-;6005:13;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;5917:109;5891:232;;;6069:8;;;5891:232;6182:15;:6;6189:1;6182:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;6221:9;6216:244;6240:1;6236;:5;6216:244;;;6271:11;6291:6;6302:1;6298;:5;;;;:::i;:::-;6291:13;;;;;;;;:::i;:::-;;;;;;;;;;6285:20;;6271:34;;6348:12;6370:1;6361:5;:10;;;;6348:24;;;;;;;;;:::i;:::-;;;;;6328:6;6343:1;6339;:5;;;;:::i;:::-;6335:1;:9;;;;:::i;:::-;6328:17;;;;;;;;:::i;:::-;;;;;:44;;;;;;;;;;;6415:12;6436:3;6428:5;:11;6415:25;;;;;;;;;:::i;:::-;;;;;6395:6;6410:1;6406;:5;;;;:::i;:::-;6402:1;:9;;;;:::i;:::-;6395:17;;;;;;;;:::i;:::-;;;;;:45;;;;;;;;;;;6248:212;6243:3;;;;;;;6216:244;;;;6574:6;6637:11;6646:1;6637:8;:11::i;:::-;6701;6710:1;6701:8;:11::i;:::-;6825:6;6535:344;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6526:353;;5825:1070;5792:1103;5820:3;;;;;;;5792:1103;;;;5772:3;;;;;;;5744:1162;;;;6948:6;6956:10;;;;;;;;;;;;;;;;;6931:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6918:50;;5401:1592;;;5291:1702;;;:::o;1454:95::-;1136:8;;;;;;;;;;1122:22;;:10;:22;;;1114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:14:::1;;;;;;;;;;;1230:15;1222:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1537:4:::2;1520:14;;:21;;;;;;;;;;;;;;;;;;1454:95::o:0;2803:440::-;1136:8;;;;;;;;;;1122:22;;:10;:22;;;1114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:14:::1;;;;;;;;;;;1230:15;1222:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;2938:11:::2;2952:6;:13;2938:27;;2990:1;2984:3;:7;2976:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3079:7;:16;3087:7;3079:16;;;;;;;;;;;:23;;;3072:30;;;;:::i;:::-;3141:9;3136:100;3160:3;3156:1;:7;3136:100;;;3185:7;:16;3193:7;3185:16;;;;;;;;;;;:23;;3214:6;3221:1;3214:9;;;;;;;;:::i;:::-;;;;;;;;3185:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;3165:3;;;;;;;3136:100;;;;2927:316;2803:440:::0;;:::o;4843:310::-;4903:12;4946:4;4936:7;:14;4928:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;732:11;5003:7;:16;5011:7;5003:16;;;;;;;;;;;:26;;:33;;;;;:::i;:::-;;;:52;4981:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;5119:7;:16;5127:7;5119:16;;;;;;;;;;;:26;;5112:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4843:310;;;:::o;3251:598::-;1136:8;;;;;;;;;;1122:22;;:10;:22;;;1114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:14:::1;;;;;;;;;;;1230:15;1222:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3428:11:::2;:18;3409:8;:15;:37;3401:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3486:9;3481:361;3505:8;:15;3501:1;:19;3481:361;;;3542:15;3560:8;3569:1;3560:11;;;;;;;;:::i;:::-;;;;;;;;3542:29;;3586:21;3610:11;3622:1;3610:14;;;;;;;;:::i;:::-;;;;;;;;3586:38;;3648:7;:16;3656:7;3648:16;;;;;;;;;;;:23;;;3641:30;;;;:::i;:::-;3718:9;3713:118;3737:6;:13;3733:1;:17;3713:118;;;3776:7;:16;3784:7;3776:16;;;;;;;;;;;:23;;3805:6;3812:1;3805:9;;;;;;;;:::i;:::-;;;;;;;;3776:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;3752:3;;;;;;;3713:118;;;;3527:315;;3522:3;;;;;;;3481:361;;;;3251:598:::0;;:::o;1778:359::-;1136:8;;;;;;;;;;1122:22;;:10;:22;;;1114:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1231:14:::1;;;;;;;;;;;1230:15;1222:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1935:4:::2;1925:7;:14;1917:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;732:11;1992:9;:16;:35;1970:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2120:9;2091:7;:16;2099:7;2091:16;;;;;;;;;;;:26;;:38;;;;;;:::i;:::-;;1778:359:::0;;:::o;3893:789::-;3952:13;4019:1;3986:7;:16;3994:7;3986:16;;;;;;;;;;;:23;;:30;;;;:34;3978:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;4052:24;:30;;;;;;;;;;;;;;;;;;;4100:9;4095:496;4119:7;:16;4127:7;4119:16;;;;;;;;;;;:23;;:30;;;;4115:1;:34;4095:496;;;4216:10;4282:7;:16;4290:7;4282:16;;;;;;;;;;;:23;;4306:1;4282:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;4371:7;:16;4379:7;4371:16;;;;;;;;;;;:23;;4395:1;4371:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:32;;4184:257;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4171:270;;4499:1;4466:7;:16;4474:7;4466:16;;;;;;;;;;;:23;;:30;;;;:34;;;;:::i;:::-;4462:1;:38;4458:122;;;4548:10;4534:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;4521:43;;4458:122;4151:3;;;;;;;4095:496;;;;4630:10;4616:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;4603:43;;4664:10;4657:17;;;3893:789;;;:::o;7070:1760::-;7126:17;7578:4;7571;7565:11;7561:22;7554:29;;7679:4;7674:3;7670:14;7664:4;7657:28;7762:1;7757:3;7750:14;7866:3;7898:1;7894:6;8127:5;8092:494;8148:1;8092:494;;;8204:1;8199:3;8195:11;8188:18;;8393:2;8387:4;8383:13;8379:2;8375:22;8370:3;8362:36;8487:2;8481:4;8477:13;8469:21;;8518:4;8092:494;8508:63;8092:494;8096:51;8625:3;8620;8616:13;8740:4;8735:3;8731:14;8724:21;;8805:6;8800:3;8793:19;7209:1614;;;7070:1760;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:77;1650:7;1679:5;1668:16;;1613:77;;;:::o;1696:122::-;1769:24;1787:5;1769:24;:::i;:::-;1762:5;1759:35;1749:63;;1808:1;1805;1798:12;1749:63;1696:122;:::o;1824:139::-;1870:5;1908:6;1895:20;1886:29;;1924:33;1951:5;1924:33;:::i;:::-;1824:139;;;;:::o;1986:710::-;2082:5;2107:81;2123:64;2180:6;2123:64;:::i;:::-;2107:81;:::i;:::-;2098:90;;2208:5;2237:6;2230:5;2223:21;2271:4;2264:5;2260:16;2253:23;;2324:4;2316:6;2312:17;2304:6;2300:30;2353:3;2345:6;2342:15;2339:122;;;2372:79;;:::i;:::-;2339:122;2487:6;2470:220;2504:6;2499:3;2496:15;2470:220;;;2579:3;2608:37;2641:3;2629:10;2608:37;:::i;:::-;2603:3;2596:50;2675:4;2670:3;2666:14;2659:21;;2546:144;2530:4;2525:3;2521:14;2514:21;;2470:220;;;2474:21;2088:608;;1986:710;;;;;:::o;2719:370::-;2790:5;2839:3;2832:4;2824:6;2820:17;2816:27;2806:122;;2847:79;;:::i;:::-;2806:122;2964:6;2951:20;2989:94;3079:3;3071:6;3064:4;3056:6;3052:17;2989:94;:::i;:::-;2980:103;;2796:293;2719:370;;;;:::o;3095:320::-;3181:4;3271:18;3263:6;3260:30;3257:56;;;3293:18;;:::i;:::-;3257:56;3343:4;3335:6;3331:17;3323:25;;3403:4;3397;3393:15;3385:23;;3095:320;;;:::o;3421:117::-;3530:1;3527;3520:12;3544:307;3605:4;3695:18;3687:6;3684:30;3681:56;;;3717:18;;:::i;:::-;3681:56;3755:29;3777:6;3755:29;:::i;:::-;3747:37;;3839:4;3833;3829:15;3821:23;;3544:307;;;:::o;3857:148::-;3955:6;3950:3;3945;3932:30;3996:1;3987:6;3982:3;3978:16;3971:27;3857:148;;;:::o;4011:423::-;4088:5;4113:65;4129:48;4170:6;4129:48;:::i;:::-;4113:65;:::i;:::-;4104:74;;4201:6;4194:5;4187:21;4239:4;4232:5;4228:16;4277:3;4268:6;4263:3;4259:16;4256:25;4253:112;;;4284:79;;:::i;:::-;4253:112;4374:54;4421:6;4416:3;4411;4374:54;:::i;:::-;4094:340;4011:423;;;;;:::o;4453:338::-;4508:5;4557:3;4550:4;4542:6;4538:17;4534:27;4524:122;;4565:79;;:::i;:::-;4524:122;4682:6;4669:20;4707:78;4781:3;4773:6;4766:4;4758:6;4754:17;4707:78;:::i;:::-;4698:87;;4514:277;4453:338;;;;:::o;4812:942::-;4917:5;4942:90;4958:73;5024:6;4958:73;:::i;:::-;4942:90;:::i;:::-;4933:99;;5052:5;5081:6;5074:5;5067:21;5115:4;5108:5;5104:16;5097:23;;5168:4;5160:6;5156:17;5148:6;5144:30;5197:3;5189:6;5186:15;5183:122;;;5216:79;;:::i;:::-;5183:122;5331:6;5314:434;5348:6;5343:3;5340:15;5314:434;;;5437:3;5424:17;5473:18;5460:11;5457:35;5454:122;;;5495:79;;:::i;:::-;5454:122;5619:11;5611:6;5607:24;5657:46;5699:3;5687:10;5657:46;:::i;:::-;5652:3;5645:59;5733:4;5728:3;5724:14;5717:21;;5390:358;;5374:4;5369:3;5365:14;5358:21;;5314:434;;;5318:21;4923:831;;4812:942;;;;;:::o;5775:388::-;5855:5;5904:3;5897:4;5889:6;5885:17;5881:27;5871:122;;5912:79;;:::i;:::-;5871:122;6029:6;6016:20;6054:103;6153:3;6145:6;6138:4;6130:6;6126:17;6054:103;:::i;:::-;6045:112;;5861:302;5775:388;;;;:::o;6169:912::-;6296:6;6304;6353:2;6341:9;6332:7;6328:23;6324:32;6321:119;;;6359:79;;:::i;:::-;6321:119;6507:1;6496:9;6492:17;6479:31;6537:18;6529:6;6526:30;6523:117;;;6559:79;;:::i;:::-;6523:117;6664:78;6734:7;6725:6;6714:9;6710:22;6664:78;:::i;:::-;6654:88;;6450:302;6819:2;6808:9;6804:18;6791:32;6850:18;6842:6;6839:30;6836:117;;;6872:79;;:::i;:::-;6836:117;6977:87;7056:7;7047:6;7036:9;7032:22;6977:87;:::i;:::-;6967:97;;6762:312;6169:912;;;;;:::o;7087:329::-;7146:6;7195:2;7183:9;7174:7;7170:23;7166:32;7163:119;;;7201:79;;:::i;:::-;7163:119;7321:1;7346:53;7391:7;7382:6;7371:9;7367:22;7346:53;:::i;:::-;7336:63;;7292:117;7087:329;;;;:::o;7422:99::-;7474:6;7508:5;7502:12;7492:22;;7422:99;;;:::o;7527:169::-;7611:11;7645:6;7640:3;7633:19;7685:4;7680:3;7676:14;7661:29;;7527:169;;;;:::o;7702:139::-;7791:6;7786:3;7781;7775:23;7832:1;7823:6;7818:3;7814:16;7807:27;7702:139;;;:::o;7847:377::-;7935:3;7963:39;7996:5;7963:39;:::i;:::-;8018:71;8082:6;8077:3;8018:71;:::i;:::-;8011:78;;8098:65;8156:6;8151:3;8144:4;8137:5;8133:16;8098:65;:::i;:::-;8188:29;8210:6;8188:29;:::i;:::-;8183:3;8179:39;8172:46;;7939:285;7847:377;;;;:::o;8230:313::-;8343:4;8381:2;8370:9;8366:18;8358:26;;8430:9;8424:4;8420:20;8416:1;8405:9;8401:17;8394:47;8458:78;8531:4;8522:6;8458:78;:::i;:::-;8450:86;;8230:313;;;;:::o;8549:332::-;8647:4;8737:18;8729:6;8726:30;8723:56;;;8759:18;;:::i;:::-;8723:56;8809:4;8801:6;8797:17;8789:25;;8869:4;8863;8859:15;8851:23;;8549:332;;;:::o;8887:117::-;8996:1;8993;8986:12;9010:117;9119:1;9116;9109:12;9133:308;9195:4;9285:18;9277:6;9274:30;9271:56;;;9307:18;;:::i;:::-;9271:56;9345:29;9367:6;9345:29;:::i;:::-;9337:37;;9429:4;9423;9419:15;9411:23;;9133:308;;;:::o;9447:425::-;9525:5;9550:66;9566:49;9608:6;9566:49;:::i;:::-;9550:66;:::i;:::-;9541:75;;9639:6;9632:5;9625:21;9677:4;9670:5;9666:16;9715:3;9706:6;9701:3;9697:16;9694:25;9691:112;;;9722:79;;:::i;:::-;9691:112;9812:54;9859:6;9854:3;9849;9812:54;:::i;:::-;9531:341;9447:425;;;;;:::o;9892:340::-;9948:5;9997:3;9990:4;9982:6;9978:17;9974:27;9964:122;;10005:79;;:::i;:::-;9964:122;10122:6;10109:20;10147:79;10222:3;10214:6;10207:4;10199:6;10195:17;10147:79;:::i;:::-;10138:88;;9954:278;9892:340;;;;:::o;10273:916::-;10343:5;10387:4;10375:9;10370:3;10366:19;10362:30;10359:117;;;10395:79;;:::i;:::-;10359:117;10494:21;10510:4;10494:21;:::i;:::-;10485:30;;10607:1;10596:9;10592:17;10579:31;10637:18;10629:6;10626:30;10623:117;;;10659:79;;:::i;:::-;10623:117;10779:59;10834:3;10825:6;10814:9;10810:22;10779:59;:::i;:::-;10772:4;10765:5;10761:16;10754:85;10525:325;10938:2;10927:9;10923:18;10910:32;10969:18;10961:6;10958:30;10955:117;;;10991:79;;:::i;:::-;10955:117;11111:59;11166:3;11157:6;11146:9;11142:22;11111:59;:::i;:::-;11104:4;11097:5;11093:16;11086:85;10860:322;10273:916;;;;:::o;11232:978::-;11349:5;11374:102;11390:85;11468:6;11390:85;:::i;:::-;11374:102;:::i;:::-;11365:111;;11496:5;11525:6;11518:5;11511:21;11559:4;11552:5;11548:16;11541:23;;11612:4;11604:6;11600:17;11592:6;11588:30;11641:3;11633:6;11630:15;11627:122;;;11660:79;;:::i;:::-;11627:122;11775:6;11758:446;11792:6;11787:3;11784:15;11758:446;;;11881:3;11868:17;11917:18;11904:11;11901:35;11898:122;;;11939:79;;:::i;:::-;11898:122;12063:11;12055:6;12051:24;12101:58;12155:3;12143:10;12101:58;:::i;:::-;12096:3;12089:71;12189:4;12184:3;12180:14;12173:21;;11834:370;;11818:4;11813:3;11809:14;11802:21;;11758:446;;;11762:21;11355:855;;11232:978;;;;;:::o;12253:412::-;12345:5;12394:3;12387:4;12379:6;12375:17;12371:27;12361:122;;12402:79;;:::i;:::-;12361:122;12519:6;12506:20;12544:115;12655:3;12647:6;12640:4;12632:6;12628:17;12544:115;:::i;:::-;12535:124;;12351:314;12253:412;;;;:::o;12671:726::-;12785:6;12793;12842:2;12830:9;12821:7;12817:23;12813:32;12810:119;;;12848:79;;:::i;:::-;12810:119;12968:1;12993:53;13038:7;13029:6;13018:9;13014:22;12993:53;:::i;:::-;12983:63;;12939:117;13123:2;13112:9;13108:18;13095:32;13154:18;13146:6;13143:30;13140:117;;;13176:79;;:::i;:::-;13140:117;13281:99;13372:7;13363:6;13352:9;13348:22;13281:99;:::i;:::-;13271:109;;13066:324;12671:726;;;;;:::o;13403:98::-;13454:6;13488:5;13482:12;13472:22;;13403:98;;;:::o;13507:168::-;13590:11;13624:6;13619:3;13612:19;13664:4;13659:3;13655:14;13640:29;;13507:168;;;;:::o;13681:373::-;13767:3;13795:38;13827:5;13795:38;:::i;:::-;13849:70;13912:6;13907:3;13849:70;:::i;:::-;13842:77;;13928:65;13986:6;13981:3;13974:4;13967:5;13963:16;13928:65;:::i;:::-;14018:29;14040:6;14018:29;:::i;:::-;14013:3;14009:39;14002:46;;13771:283;13681:373;;;;:::o;14060:309::-;14171:4;14209:2;14198:9;14194:18;14186:26;;14258:9;14252:4;14248:20;14244:1;14233:9;14229:17;14222:47;14286:76;14357:4;14348:6;14286:76;:::i;:::-;14278:84;;14060:309;;;;:::o;14375:357::-;14498:4;14588:18;14580:6;14577:30;14574:56;;;14610:18;;:::i;:::-;14574:56;14660:4;14652:6;14648:17;14640:25;;14720:4;14714;14710:15;14702:23;;14375:357;;;:::o;14777:1053::-;14919:5;14944:127;14960:110;15063:6;14960:110;:::i;:::-;14944:127;:::i;:::-;14935:136;;15091:5;15120:6;15113:5;15106:21;15154:4;15147:5;15143:16;15136:23;;15207:4;15199:6;15195:17;15187:6;15183:30;15236:3;15228:6;15225:15;15222:122;;;15255:79;;:::i;:::-;15222:122;15370:6;15353:471;15387:6;15382:3;15379:15;15353:471;;;15476:3;15463:17;15512:18;15499:11;15496:35;15493:122;;;15534:79;;:::i;:::-;15493:122;15658:11;15650:6;15646:24;15696:83;15775:3;15763:10;15696:83;:::i;:::-;15691:3;15684:96;15809:4;15804:3;15800:14;15793:21;;15429:395;;15413:4;15408:3;15404:14;15397:21;;15353:471;;;15357:21;14925:905;;14777:1053;;;;;:::o;15875:462::-;15992:5;16041:3;16034:4;16026:6;16022:17;16018:27;16008:122;;16049:79;;:::i;:::-;16008:122;16166:6;16153:20;16191:140;16327:3;16319:6;16312:4;16304:6;16300:17;16191:140;:::i;:::-;16182:149;;15998:339;15875:462;;;;:::o;16343:986::-;16507:6;16515;16564:2;16552:9;16543:7;16539:23;16535:32;16532:119;;;16570:79;;:::i;:::-;16532:119;16718:1;16707:9;16703:17;16690:31;16748:18;16740:6;16737:30;16734:117;;;16770:79;;:::i;:::-;16734:117;16875:78;16945:7;16936:6;16925:9;16921:22;16875:78;:::i;:::-;16865:88;;16661:302;17030:2;17019:9;17015:18;17002:32;17061:18;17053:6;17050:30;17047:117;;;17083:79;;:::i;:::-;17047:117;17188:124;17304:7;17295:6;17284:9;17280:22;17188:124;:::i;:::-;17178:134;;16973:349;16343:986;;;;;:::o;17335:652::-;17412:6;17420;17469:2;17457:9;17448:7;17444:23;17440:32;17437:119;;;17475:79;;:::i;:::-;17437:119;17595:1;17620:53;17665:7;17656:6;17645:9;17641:22;17620:53;:::i;:::-;17610:63;;17566:117;17750:2;17739:9;17735:18;17722:32;17781:18;17773:6;17770:30;17767:117;;;17803:79;;:::i;:::-;17767:117;17908:62;17962:7;17953:6;17942:9;17938:22;17908:62;:::i;:::-;17898:72;;17693:287;17335:652;;;;;:::o;17993:164::-;18133:16;18129:1;18121:6;18117:14;18110:40;17993:164;:::o;18163:366::-;18305:3;18326:67;18390:2;18385:3;18326:67;:::i;:::-;18319:74;;18402:93;18491:3;18402:93;:::i;:::-;18520:2;18515:3;18511:12;18504:19;;18163:366;;;:::o;18535:419::-;18701:4;18739:2;18728:9;18724:18;18716:26;;18788:9;18782:4;18778:20;18774:1;18763:9;18759:17;18752:47;18816:131;18942:4;18816:131;:::i;:::-;18808:139;;18535:419;;;:::o;18960:169::-;19100:21;19096:1;19088:6;19084:14;19077:45;18960:169;:::o;19135:366::-;19277:3;19298:67;19362:2;19357:3;19298:67;:::i;:::-;19291:74;;19374:93;19463:3;19374:93;:::i;:::-;19492:2;19487:3;19483:12;19476:19;;19135:366;;;:::o;19507:419::-;19673:4;19711:2;19700:9;19696:18;19688:26;;19760:9;19754:4;19750:20;19746:1;19735:9;19731:17;19724:47;19788:131;19914:4;19788:131;:::i;:::-;19780:139;;19507:419;;;:::o;19932:167::-;20072:19;20068:1;20060:6;20056:14;20049:43;19932:167;:::o;20105:366::-;20247:3;20268:67;20332:2;20327:3;20268:67;:::i;:::-;20261:74;;20344:93;20433:3;20344:93;:::i;:::-;20462:2;20457:3;20453:12;20446:19;;20105:366;;;:::o;20477:419::-;20643:4;20681:2;20670:9;20666:18;20658:26;;20730:9;20724:4;20720:20;20716:1;20705:9;20701:17;20694:47;20758:131;20884:4;20758:131;:::i;:::-;20750:139;;20477:419;;;:::o;20902:180::-;20950:77;20947:1;20940:88;21047:4;21044:1;21037:15;21071:4;21068:1;21061:15;21088:165;21228:17;21224:1;21216:6;21212:14;21205:41;21088:165;:::o;21259:366::-;21401:3;21422:67;21486:2;21481:3;21422:67;:::i;:::-;21415:74;;21498:93;21587:3;21498:93;:::i;:::-;21616:2;21611:3;21607:12;21600:19;;21259:366;;;:::o;21631:419::-;21797:4;21835:2;21824:9;21820:18;21812:26;;21884:9;21878:4;21874:20;21870:1;21859:9;21855:17;21848:47;21912:131;22038:4;21912:131;:::i;:::-;21904:139;;21631:419;;;:::o;22056:175::-;22196:27;22192:1;22184:6;22180:14;22173:51;22056:175;:::o;22237:366::-;22379:3;22400:67;22464:2;22459:3;22400:67;:::i;:::-;22393:74;;22476:93;22565:3;22476:93;:::i;:::-;22594:2;22589:3;22585:12;22578:19;;22237:366;;;:::o;22609:419::-;22775:4;22813:2;22802:9;22798:18;22790:26;;22862:9;22856:4;22852:20;22848:1;22837:9;22833:17;22826:47;22890:131;23016:4;22890:131;:::i;:::-;22882:139;;22609:419;;;:::o;23034:180::-;23082:77;23079:1;23072:88;23179:4;23176:1;23169:15;23203:4;23200:1;23193:15;23220:320;23264:6;23301:1;23295:4;23291:12;23281:22;;23348:1;23342:4;23338:12;23369:18;23359:81;;23425:4;23417:6;23413:17;23403:27;;23359:81;23487:2;23479:6;23476:14;23456:18;23453:38;23450:84;;23506:18;;:::i;:::-;23450:84;23271:269;23220:320;;;:::o;23546:140::-;23594:4;23617:3;23609:11;;23640:3;23637:1;23630:14;23674:4;23671:1;23661:18;23653:26;;23546:140;;;:::o;23692:93::-;23729:6;23776:2;23771;23764:5;23760:14;23756:23;23746:33;;23692:93;;;:::o;23791:107::-;23835:8;23885:5;23879:4;23875:16;23854:37;;23791:107;;;;:::o;23904:393::-;23973:6;24023:1;24011:10;24007:18;24046:97;24076:66;24065:9;24046:97;:::i;:::-;24164:39;24194:8;24183:9;24164:39;:::i;:::-;24152:51;;24236:4;24232:9;24225:5;24221:21;24212:30;;24285:4;24275:8;24271:19;24264:5;24261:30;24251:40;;23980:317;;23904:393;;;;;:::o;24303:60::-;24331:3;24352:5;24345:12;;24303:60;;;:::o;24369:142::-;24419:9;24452:53;24470:34;24479:24;24497:5;24479:24;:::i;:::-;24470:34;:::i;:::-;24452:53;:::i;:::-;24439:66;;24369:142;;;:::o;24517:75::-;24560:3;24581:5;24574:12;;24517:75;;;:::o;24598:269::-;24708:39;24739:7;24708:39;:::i;:::-;24769:91;24818:41;24842:16;24818:41;:::i;:::-;24810:6;24803:4;24797:11;24769:91;:::i;:::-;24763:4;24756:105;24674:193;24598:269;;;:::o;24873:73::-;24918:3;24873:73;:::o;24952:189::-;25029:32;;:::i;:::-;25070:65;25128:6;25120;25114:4;25070:65;:::i;:::-;25005:136;24952:189;;:::o;25147:186::-;25207:120;25224:3;25217:5;25214:14;25207:120;;;25278:39;25315:1;25308:5;25278:39;:::i;:::-;25251:1;25244:5;25240:13;25231:22;;25207:120;;;25147:186;;:::o;25339:541::-;25439:2;25434:3;25431:11;25428:445;;;25473:37;25504:5;25473:37;:::i;:::-;25556:29;25574:10;25556:29;:::i;:::-;25546:8;25542:44;25739:2;25727:10;25724:18;25721:49;;;25760:8;25745:23;;25721:49;25783:80;25839:22;25857:3;25839:22;:::i;:::-;25829:8;25825:37;25812:11;25783:80;:::i;:::-;25443:430;;25428:445;25339:541;;;:::o;25886:117::-;25940:8;25990:5;25984:4;25980:16;25959:37;;25886:117;;;;:::o;26009:169::-;26053:6;26086:51;26134:1;26130:6;26122:5;26119:1;26115:13;26086:51;:::i;:::-;26082:56;26167:4;26161;26157:15;26147:25;;26060:118;26009:169;;;;:::o;26183:295::-;26259:4;26405:29;26430:3;26424:4;26405:29;:::i;:::-;26397:37;;26467:3;26464:1;26460:11;26454:4;26451:21;26443:29;;26183:295;;;;:::o;26483:1390::-;26598:36;26630:3;26598:36;:::i;:::-;26699:18;26691:6;26688:30;26685:56;;;26721:18;;:::i;:::-;26685:56;26765:38;26797:4;26791:11;26765:38;:::i;:::-;26850:66;26909:6;26901;26895:4;26850:66;:::i;:::-;26943:1;26967:4;26954:17;;26999:2;26991:6;26988:14;27016:1;27011:617;;;;27672:1;27689:6;27686:77;;;27738:9;27733:3;27729:19;27723:26;27714:35;;27686:77;27789:67;27849:6;27842:5;27789:67;:::i;:::-;27783:4;27776:81;27645:222;26981:886;;27011:617;27063:4;27059:9;27051:6;27047:22;27097:36;27128:4;27097:36;:::i;:::-;27155:1;27169:208;27183:7;27180:1;27177:14;27169:208;;;27262:9;27257:3;27253:19;27247:26;27239:6;27232:42;27313:1;27305:6;27301:14;27291:24;;27360:2;27349:9;27345:18;27332:31;;27206:4;27203:1;27199:12;27194:17;;27169:208;;;27405:6;27396:7;27393:19;27390:179;;;27463:9;27458:3;27454:19;27448:26;27506:48;27548:4;27540:6;27536:17;27525:9;27506:48;:::i;:::-;27498:6;27491:64;27413:156;27390:179;27615:1;27611;27603:6;27599:14;27595:22;27589:4;27582:36;27018:610;;;26981:886;;26573:1300;;;26483:1390;;:::o;27879:168::-;28019:20;28015:1;28007:6;28003:14;27996:44;27879:168;:::o;28053:366::-;28195:3;28216:67;28280:2;28275:3;28216:67;:::i;:::-;28209:74;;28292:93;28381:3;28292:93;:::i;:::-;28410:2;28405:3;28401:12;28394:19;;28053:366;;;:::o;28425:419::-;28591:4;28629:2;28618:9;28614:18;28606:26;;28678:9;28672:4;28668:20;28664:1;28653:9;28649:17;28642:47;28706:131;28832:4;28706:131;:::i;:::-;28698:139;;28425:419;;;:::o;28850:148::-;28952:11;28989:3;28974:18;;28850:148;;;;:::o;29004:390::-;29110:3;29138:39;29171:5;29138:39;:::i;:::-;29193:89;29275:6;29270:3;29193:89;:::i;:::-;29186:96;;29291:65;29349:6;29344:3;29337:4;29330:5;29326:16;29291:65;:::i;:::-;29381:6;29376:3;29372:16;29365:23;;29114:280;29004:390;;;;:::o;29400:275::-;29532:3;29554:95;29645:3;29636:6;29554:95;:::i;:::-;29547:102;;29666:3;29659:10;;29400:275;;;;:::o;29681:180::-;29729:77;29726:1;29719:88;29826:4;29823:1;29816:15;29850:4;29847:1;29840:15;29867:410;29907:7;29930:20;29948:1;29930:20;:::i;:::-;29925:25;;29964:20;29982:1;29964:20;:::i;:::-;29959:25;;30019:1;30016;30012:9;30041:30;30059:11;30041:30;:::i;:::-;30030:41;;30220:1;30211:7;30207:15;30204:1;30201:22;30181:1;30174:9;30154:83;30131:139;;30250:18;;:::i;:::-;30131:139;29915:362;29867:410;;;;:::o;30283:191::-;30323:3;30342:20;30360:1;30342:20;:::i;:::-;30337:25;;30376:20;30394:1;30376:20;:::i;:::-;30371:25;;30419:1;30416;30412:9;30405:16;;30440:3;30437:1;30434:10;30431:36;;;30447:18;;:::i;:::-;30431:36;30283:191;;;;:::o;30480:147::-;30581:11;30618:3;30603:18;;30480:147;;;;:::o;30633:386::-;30737:3;30765:38;30797:5;30765:38;:::i;:::-;30819:88;30900:6;30895:3;30819:88;:::i;:::-;30812:95;;30916:65;30974:6;30969:3;30962:4;30955:5;30951:16;30916:65;:::i;:::-;31006:6;31001:3;30997:16;30990:23;;30741:278;30633:386;;;;:::o;31025:214::-;31165:66;31161:1;31153:6;31149:14;31142:90;31025:214;:::o;31245:400::-;31405:3;31426:84;31508:1;31503:3;31426:84;:::i;:::-;31419:91;;31519:93;31608:3;31519:93;:::i;:::-;31637:1;31632:3;31628:11;31621:18;;31245:400;;;:::o;31651:214::-;31791:66;31787:1;31779:6;31775:14;31768:90;31651:214;:::o;31871:400::-;32031:3;32052:84;32134:1;32129:3;32052:84;:::i;:::-;32045:91;;32145:93;32234:3;32145:93;:::i;:::-;32263:1;32258:3;32254:11;32247:18;;31871:400;;;:::o;32277:315::-;32417:66;32413:1;32405:6;32401:14;32394:90;32518:66;32513:2;32505:6;32501:15;32494:91;32277:315;:::o;32598:402::-;32758:3;32779:85;32861:2;32856:3;32779:85;:::i;:::-;32772:92;;32873:93;32962:3;32873:93;:::i;:::-;32991:2;32986:3;32982:12;32975:19;;32598:402;;;:::o;33006:214::-;33146:66;33142:1;33134:6;33130:14;33123:90;33006:214;:::o;33226:400::-;33386:3;33407:84;33489:1;33484:3;33407:84;:::i;:::-;33400:91;;33500:93;33589:3;33500:93;:::i;:::-;33618:1;33613:3;33609:11;33602:18;;33226:400;;;:::o;33632:1815::-;34310:3;34332:93;34421:3;34412:6;34332:93;:::i;:::-;34325:100;;34442:148;34586:3;34442:148;:::i;:::-;34435:155;;34607:95;34698:3;34689:6;34607:95;:::i;:::-;34600:102;;34719:148;34863:3;34719:148;:::i;:::-;34712:155;;34884:95;34975:3;34966:6;34884:95;:::i;:::-;34877:102;;34996:148;35140:3;34996:148;:::i;:::-;34989:155;;35161:95;35252:3;35243:6;35161:95;:::i;:::-;35154:102;;35273:148;35417:3;35273:148;:::i;:::-;35266:155;;35438:3;35431:10;;33632:1815;;;;;;;:::o;35453:431::-;35631:3;35653:93;35742:3;35733:6;35653:93;:::i;:::-;35646:100;;35763:95;35854:3;35845:6;35763:95;:::i;:::-;35756:102;;35875:3;35868:10;;35453:431;;;;;:::o;35890:172::-;36030:24;36026:1;36018:6;36014:14;36007:48;35890:172;:::o;36068:366::-;36210:3;36231:67;36295:2;36290:3;36231:67;:::i;:::-;36224:74;;36307:93;36396:3;36307:93;:::i;:::-;36425:2;36420:3;36416:12;36409:19;;36068:366;;;:::o;36440:419::-;36606:4;36644:2;36633:9;36629:18;36621:26;;36693:9;36687:4;36683:20;36679:1;36668:9;36664:17;36657:47;36721:131;36847:4;36721:131;:::i;:::-;36713:139;;36440:419;;;:::o;36865:141::-;36914:4;36937:3;36929:11;;36960:3;36957:1;36950:14;36994:4;36991:1;36981:18;36973:26;;36865:141;;;:::o;37012:543::-;37113:2;37108:3;37105:11;37102:446;;;37147:38;37179:5;37147:38;:::i;:::-;37231:29;37249:10;37231:29;:::i;:::-;37221:8;37217:44;37414:2;37402:10;37399:18;37396:49;;;37435:8;37420:23;;37396:49;37458:80;37514:22;37532:3;37514:22;:::i;:::-;37504:8;37500:37;37487:11;37458:80;:::i;:::-;37117:431;;37102:446;37012:543;;;:::o;37561:1395::-;37678:37;37711:3;37678:37;:::i;:::-;37780:18;37772:6;37769:30;37766:56;;;37802:18;;:::i;:::-;37766:56;37846:38;37878:4;37872:11;37846:38;:::i;:::-;37931:67;37991:6;37983;37977:4;37931:67;:::i;:::-;38025:1;38049:4;38036:17;;38081:2;38073:6;38070:14;38098:1;38093:618;;;;38755:1;38772:6;38769:77;;;38821:9;38816:3;38812:19;38806:26;38797:35;;38769:77;38872:67;38932:6;38925:5;38872:67;:::i;:::-;38866:4;38859:81;38728:222;38063:887;;38093:618;38145:4;38141:9;38133:6;38129:22;38179:37;38211:4;38179:37;:::i;:::-;38238:1;38252:208;38266:7;38263:1;38260:14;38252:208;;;38345:9;38340:3;38336:19;38330:26;38322:6;38315:42;38396:1;38388:6;38384:14;38374:24;;38443:2;38432:9;38428:18;38415:31;;38289:4;38286:1;38282:12;38277:17;;38252:208;;;38488:6;38479:7;38476:19;38473:179;;;38546:9;38541:3;38537:19;38531:26;38589:48;38631:4;38623:6;38619:17;38608:9;38589:48;:::i;:::-;38581:6;38574:64;38496:156;38473:179;38698:1;38694;38686:6;38682:14;38678:22;38672:4;38665:36;38100:611;;;38063:887;;37653:1303;;;37561:1395;;:::o;38962:164::-;39102:16;39098:1;39090:6;39086:14;39079:40;38962:164;:::o;39132:366::-;39274:3;39295:67;39359:2;39354:3;39295:67;:::i;:::-;39288:74;;39371:93;39460:3;39371:93;:::i;:::-;39489:2;39484:3;39480:12;39473:19;;39132:366;;;:::o;39504:419::-;39670:4;39708:2;39697:9;39693:18;39685:26;;39757:9;39751:4;39747:20;39743:1;39732:9;39728:17;39721:47;39785:131;39911:4;39785:131;:::i;:::-;39777:139;;39504:419;;;:::o;39929:242::-;40098:66;40093:3;40086:79;39929:242;:::o;40201:874::-;40304:3;40341:5;40335:12;40370:36;40396:9;40370:36;:::i;:::-;40422:89;40504:6;40499:3;40422:89;:::i;:::-;40415:96;;40542:1;40531:9;40527:17;40558:1;40553:166;;;;40733:1;40728:341;;;;40520:549;;40553:166;40637:4;40633:9;40622;40618:25;40613:3;40606:38;40699:6;40692:14;40685:22;40677:6;40673:35;40668:3;40664:45;40657:52;;40553:166;;40728:341;40795:38;40827:5;40795:38;:::i;:::-;40855:1;40869:154;40883:6;40880:1;40877:13;40869:154;;;40957:7;40951:14;40947:1;40942:3;40938:11;40931:35;41007:1;40998:7;40994:15;40983:26;;40905:4;40902:1;40898:12;40893:17;;40869:154;;;41052:6;41047:3;41043:16;41036:23;;40735:334;;40520:549;;40308:767;;40201:874;;;;:::o;41081:242::-;41250:66;41245:3;41238:79;41081:242;:::o;41329:241::-;41497:66;41492:3;41485:79;41329:241;:::o;41576:1381::-;42070:3;42092:95;42183:3;42174:6;42092:95;:::i;:::-;42085:102;;42197:138;42331:3;42197:138;:::i;:::-;42360:2;42355:3;42351:12;42344:19;;42380:92;42468:3;42459:6;42380:92;:::i;:::-;42373:99;;42482:138;42616:3;42482:138;:::i;:::-;42645:2;42640:3;42636:12;42629:19;;42665:92;42753:3;42744:6;42665:92;:::i;:::-;42658:99;;42767:137;42900:3;42767:137;:::i;:::-;42929:1;42924:3;42920:11;42913:18;;42948:3;42941:10;;41576:1381;;;;;;:::o;42963:194::-;43003:4;43023:20;43041:1;43023:20;:::i;:::-;43018:25;;43057:20;43075:1;43057:20;:::i;:::-;43052:25;;43101:1;43098;43094:9;43086:17;;43125:1;43119:4;43116:11;43113:37;;;43130:18;;:::i;:::-;43113:37;42963:194;;;;:::o;43163:178::-;43331:3;43326;43319:16;43163:178;:::o;43347:539::-;43569:3;43591:95;43682:3;43673:6;43591:95;:::i;:::-;43584:102;;43696:137;43829:3;43696:137;:::i;:::-;43858:1;43853:3;43849:11;43842:18;;43877:3;43870:10;;43347:539;;;;:::o;43892:178::-;44060:3;44055;44048:16;43892:178;:::o;44076:539::-;44298:3;44320:95;44411:3;44402:6;44320:95;:::i;:::-;44313:102;;44425:137;44558:3;44425:137;:::i;:::-;44587:1;44582:3;44578:11;44571:18;;44606:3;44599:10;;44076:539;;;;:::o

Swarm Source

ipfs://1b57a563f2e6268d98f5f03b8bff4db055758212a7468ee64e3efad2ddfb4f1a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.