Source Code
Overview
APE Balance
0 APE
More Info
ContractCreator
Latest 25 from a total of 26 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Store Traits | 12813591 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813588 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813580 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813579 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813578 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813574 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813571 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813570 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813567 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813566 | 47 days ago | IN | 0 APE | 0.00000241 | ||||
Store Traits | 12813564 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813563 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813562 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813558 | 47 days ago | IN | 0 APE | 0.00001834 | ||||
Store Traits | 12813556 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813551 | 47 days ago | IN | 0 APE | 0.00001834 | ||||
Store Traits | 12813548 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813545 | 47 days ago | IN | 0 APE | 0.00000239 | ||||
Store Traits | 12813543 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813541 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Traits | 12813539 | 47 days ago | IN | 0 APE | 0.0000034 | ||||
Store Pixel Data | 12813536 | 47 days ago | IN | 0 APE | 0.00000241 | ||||
Store Pixel Data | 12813084 | 47 days ago | IN | 0 APE | 0.00001833 | ||||
Store Pixel Data | 12813058 | 47 days ago | IN | 0 APE | 0.00001831 | ||||
Store Pixel Data | 12812991 | 47 days ago | IN | 0 APE | 0.00001833 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GobsDataSource
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at curtis.apescan.io on 2024-11-21 */ /** *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"; 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 == 29 * 29 * 3, "Invalid pixel data length"); gobData[tokenId].pixelData = pixelData; } function storeTraits(uint256 tokenId, Trait[] memory traits) external onlyDeployer { delete gobData[tokenId].traits; // Clear existing traits for (uint256 i = 0; i < traits.length; i++) { gobData[tokenId].traits.push(traits[i]); } } // Retrieve traits for a token function getTraits(uint256 tokenId) external view returns (Trait[] memory) { require(gobData[tokenId].traits.length > 0, "Traits not set"); return gobData[tokenId].traits; } /** * @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 == 29 * 29 * 3, "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; svg = ""; require(pixels.length > 0, "Pixel data not set"); // Pre-allocate space for the SVG (estimate size to reduce reallocations) // string memory svg = string(abi.encodePacked(SVG_HEADER)); bytes memory buffer = new bytes(7); for (uint y = 0; y < 29; y++) { for (uint x = 0; x < 29; x++) { uint p = (y * 29 + x) * 3; if(pixels[p] == 0x00 && pixels[p + 1] == 0x47 && pixels[p + 2] == 0xb1){ continue; } // Convert RGB values to hex buffer[0] = "#"; for (uint 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 the rect element svg = string.concat(svg, '<rect x="', toString(x), '" y="', toString(y), '" width="1" height="1" fill="', string(buffer), '"/>'); } } svg = string.concat(SVG_HEADER,svg,SVG_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) } } }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":[{"components":[{"internalType":"string","name":"traitType","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct GobsDataSource.Trait[]","name":"","type":"tuple[]"}],"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"}]
Contract Creation Code
60806040525f8060146101000a81548160ff0219169083151502179055503480156027575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ed8806100745f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c80633efabdf41461006457806368bd580e14610094578063997c51d21461009e578063b44606f9146100ba578063dcd83a18146100ea578063e1dc076114610106575b5f80fd5b61007e60048036038101906100799190610ee8565b610136565b60405161008b9190610f83565b60405180910390f35b61009c6106aa565b005b6100b860048036038101906100b3919061123e565b6107a2565b005b6100d460048036038101906100cf9190610ee8565b6108ec565b6040516100e191906112ea565b60405180910390f35b61010460048036038101906100ff91906113a8565b610a36565b005b610120600480360381019061011b9190610ee8565b610bc0565b60405161012d9190611546565b60405180910390f35b60606108ae821061017c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610173906115b0565b60405180910390fd5b5f60015f8481526020019081526020015f205f01805461019b906115fb565b80601f01602080910402602001604051908101604052809291908181526020018280546101c7906115fb565b80156102125780601f106101e957610100808354040283529160200191610212565b820191905f5260205f20905b8154815290600101906020018083116101f557829003601f168201915b5050505050905060405180602001604052805f81525091505f81511161026d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026490611675565b60405180910390fd5b5f600767ffffffffffffffff81111561028957610288610fa7565b5b6040519080825280601f01601f1916602001820160405280156102bb5781602001600182028036833780820191505090505b5090505f5b601d81101561062f575f5b601d811015610621575f600382601d856102e591906116c0565b6102ef9190611701565b6102f991906116c0565b90505f60f81b85828151811061031257610311611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561039a5750604760f81b8560018361035a9190611701565b8151811061036b5761036a611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80156103f4575060b160f81b856002836103b49190611701565b815181106103c5576103c4611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156103ff5750610614565b7f2300000000000000000000000000000000000000000000000000000000000000845f8151811061043357610432611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b60038110156105d9575f86828461047a9190611701565b8151811061048b5761048a611734565b5b602001015160f81c60f81b60f81c90507f303132333435363738396162636465660000000000000000000000000000000060048260ff16901c60ff16601081106104d8576104d7611734565b5b1a60f81b866002846104ea91906116c0565b60016104f69190611701565b8151811061050757610506611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f3031323334353637383961626364656600000000000000000000000000000000600f821660ff166010811061056e5761056d611734565b5b1a60f81b8660028461058091906116c0565b600261058c9190611701565b8151811061059d5761059c611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350508080600101915050610463565b50856105e483610da8565b6105ed85610da8565b866040516020016106019493929190611833565b6040516020818303038152906040529550505b80806001019150506102cb565b5080806001019150506102c0565b506040518060c0016040528060938152602001611e1060939139836040518060400160405280600681526020017f3c2f7376673e0000000000000000000000000000000000000000000000000000815250604051602001610692939291906118ac565b60405160208183030381529060405292505050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90611926565b60405180910390fd5b5f60149054906101000a900460ff1615610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d9061198e565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690611926565b60405180910390fd5b60015f8381526020019081526020015f206001015f61084e9190610df7565b5f5b81518110156108e75760015f8481526020019081526020015f206001018282815181106108805761087f611734565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816108c19190611b49565b5060208201518160010190816108d79190611b49565b5050508080600101915050610850565b505050565b60606108ae8210610932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610929906115b0565b60405180910390fd5b6109db60015f8481526020019081526020015f205f018054610953906115fb565b905014610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90611675565b60405180910390fd5b60015f8381526020019081526020015f205f0180546109b3906115fb565b80601f01602080910402602001604051908101604052809291908181526020018280546109df906115fb565b8015610a2a5780601f10610a0157610100808354040283529160200191610a2a565b820191905f5260205f20905b815481529060010190602001808311610a0d57829003601f168201915b50505050509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611926565b60405180910390fd5b5f60149054906101000a900460ff1615610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b099061198e565b60405180910390fd5b6108ae8210610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d906115b0565b60405180910390fd5b6109db815114610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290611c62565b60405180910390fd5b8060015f8481526020019081526020015f205f019081610bbb9190611cd8565b505050565b60605f60015f8481526020019081526020015f206001018054905011610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290611df1565b60405180910390fd5b60015f8381526020019081526020015f20600101805480602002602001604051908101604052809291908181526020015f905b82821015610d9d578382905f5260205f2090600202016040518060400160405290815f82018054610c7e906115fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610caa906115fb565b8015610cf55780601f10610ccc57610100808354040283529160200191610cf5565b820191905f5260205f20905b815481529060010190602001808311610cd857829003601f168201915b50505050508152602001600182018054610d0e906115fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a906115fb565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b50505050508152505081526020019060010190610c4e565b505050509050919050565b60606080604051019050602081016040525f8152805f19835b600115610de2578184019350600a81066030018453600a8104905080610dc1575b50828203602084039350808452505050919050565b5080545f8255600202905f5260205f2090810190610e159190610e18565b50565b5b80821115610e48575f8082015f610e309190610e4c565b600182015f610e3f9190610e4c565b50600201610e19565b5090565b508054610e58906115fb565b5f825580601f10610e695750610e86565b601f0160209004905f5260205f2090810190610e859190610e89565b5b50565b5b80821115610ea0575f815f905550600101610e8a565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b610ec781610eb5565b8114610ed1575f80fd5b50565b5f81359050610ee281610ebe565b92915050565b5f60208284031215610efd57610efc610ead565b5b5f610f0a84828501610ed4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f5582610f13565b610f5f8185610f1d565b9350610f6f818560208601610f2d565b610f7881610f3b565b840191505092915050565b5f6020820190508181035f830152610f9b8184610f4b565b905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610fdd82610f3b565b810181811067ffffffffffffffff82111715610ffc57610ffb610fa7565b5b80604052505050565b5f61100e610ea4565b905061101a8282610fd4565b919050565b5f67ffffffffffffffff82111561103957611038610fa7565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561107457611073610fa7565b5b61107d82610f3b565b9050602081019050919050565b828183375f83830152505050565b5f6110aa6110a58461105a565b611005565b9050828152602081018484840111156110c6576110c5611056565b5b6110d184828561108a565b509392505050565b5f82601f8301126110ed576110ec610fa3565b5b81356110fd848260208601611098565b91505092915050565b5f6040828403121561111b5761111a61104e565b5b6111256040611005565b90505f82013567ffffffffffffffff81111561114457611143611052565b5b611150848285016110d9565b5f83015250602082013567ffffffffffffffff81111561117357611172611052565b5b61117f848285016110d9565b60208301525092915050565b5f61119d6111988461101f565b611005565b905080838252602082019050602084028301858111156111c0576111bf61104a565b5b835b8181101561120757803567ffffffffffffffff8111156111e5576111e4610fa3565b5b8086016111f28982611106565b855260208501945050506020810190506111c2565b5050509392505050565b5f82601f83011261122557611224610fa3565b5b813561123584826020860161118b565b91505092915050565b5f806040838503121561125457611253610ead565b5b5f61126185828601610ed4565b925050602083013567ffffffffffffffff81111561128257611281610eb1565b5b61128e85828601611211565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f6112bc82611298565b6112c681856112a2565b93506112d6818560208601610f2d565b6112df81610f3b565b840191505092915050565b5f6020820190508181035f83015261130281846112b2565b905092915050565b5f67ffffffffffffffff82111561132457611323610fa7565b5b61132d82610f3b565b9050602081019050919050565b5f61134c6113478461130a565b611005565b90508281526020810184848401111561136857611367611056565b5b61137384828561108a565b509392505050565b5f82601f83011261138f5761138e610fa3565b5b813561139f84826020860161133a565b91505092915050565b5f80604083850312156113be576113bd610ead565b5b5f6113cb85828601610ed4565b925050602083013567ffffffffffffffff8111156113ec576113eb610eb1565b5b6113f88582860161137b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61144582610f13565b61144f818561142b565b935061145f818560208601610f2d565b61146881610f3b565b840191505092915050565b5f604083015f8301518482035f86015261148d828261143b565b915050602083015184820360208601526114a7828261143b565b9150508091505092915050565b5f6114bf8383611473565b905092915050565b5f602082019050919050565b5f6114dd82611402565b6114e7818561140c565b9350836020820285016114f98561141c565b805f5b85811015611534578484038952815161151585826114b4565b9450611520836114c7565b925060208a019950506001810190506114fc565b50829750879550505050505092915050565b5f6020820190508181035f83015261155e81846114d3565b905092915050565b7f496e76616c696420746f6b656e496400000000000000000000000000000000005f82015250565b5f61159a600f83610f1d565b91506115a582611566565b602082019050919050565b5f6020820190508181035f8301526115c78161158e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061161257607f821691505b602082108103611625576116246115ce565b5b50919050565b7f506978656c2064617461206e6f742073657400000000000000000000000000005f82015250565b5f61165f601283610f1d565b915061166a8261162b565b602082019050919050565b5f6020820190508181035f83015261168c81611653565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116ca82610eb5565b91506116d583610eb5565b92508282026116e381610eb5565b915082820484148315176116fa576116f9611693565b5b5092915050565b5f61170b82610eb5565b915061171683610eb5565b925082820190508082111561172e5761172d611693565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f61177582610f13565b61177f8185611761565b935061178f818560208601610f2d565b80840191505092915050565b7f3c7265637420783d220000000000000000000000000000000000000000000000815250565b7f2220793d22000000000000000000000000000000000000000000000000000000815250565b7f222077696474683d223122206865696768743d2231222066696c6c3d22000000815250565b7f222f3e0000000000000000000000000000000000000000000000000000000000815250565b5f61183e828761176b565b91506118498261179b565b600982019150611859828661176b565b9150611864826117c1565b600582019150611874828561176b565b915061187f826117e7565b601d8201915061188f828461176b565b915061189a8261180d565b60038201915081905095945050505050565b5f6118b7828661176b565b91506118c3828561176b565b91506118cf828461176b565b9150819050949350505050565b7f4f6e6c79206465706c6f7965722e0000000000000000000000000000000000005f82015250565b5f611910600e83610f1d565b915061191b826118dc565b602082019050919050565b5f6020820190508181035f83015261193d81611904565b9050919050565b7f436f6e7472616374206973207365616c65642e000000000000000000000000005f82015250565b5f611978601383610f1d565b915061198382611944565b602082019050919050565b5f6020820190508181035f8301526119a58161196c565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611a087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826119cd565b611a1286836119cd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611a4d611a48611a4384610eb5565b611a2a565b610eb5565b9050919050565b5f819050919050565b611a6683611a33565b611a7a611a7282611a54565b8484546119d9565b825550505050565b5f90565b611a8e611a82565b611a99818484611a5d565b505050565b5b81811015611abc57611ab15f82611a86565b600181019050611a9f565b5050565b601f821115611b0157611ad2816119ac565b611adb846119be565b81016020851015611aea578190505b611afe611af6856119be565b830182611a9e565b50505b505050565b5f82821c905092915050565b5f611b215f1984600802611b06565b1980831691505092915050565b5f611b398383611b12565b9150826002028217905092915050565b611b5282610f13565b67ffffffffffffffff811115611b6b57611b6a610fa7565b5b611b7582546115fb565b611b80828285611ac0565b5f60209050601f831160018114611bb1575f8415611b9f578287015190505b611ba98582611b2e565b865550611c10565b601f198416611bbf866119ac565b5f5b82811015611be657848901518255600182019150602085019450602081019050611bc1565b86831015611c035784890151611bff601f891682611b12565b8355505b6001600288020188555050505b505050505050565b7f496e76616c696420706978656c2064617461206c656e677468000000000000005f82015250565b5f611c4c601983610f1d565b9150611c5782611c18565b602082019050919050565b5f6020820190508181035f830152611c7981611c40565b9050919050565b5f819050815f5260205f209050919050565b601f821115611cd357611ca481611c80565b611cad846119be565b81016020851015611cbc578190505b611cd0611cc8856119be565b830182611a9e565b50505b505050565b611ce182611298565b67ffffffffffffffff811115611cfa57611cf9610fa7565b5b611d0482546115fb565b611d0f828285611c92565b5f60209050601f831160018114611d40575f8415611d2e578287015190505b611d388582611b2e565b865550611d9f565b601f198416611d4e86611c80565b5f5b82811015611d7557848901518255600182019150602085019450602081019050611d50565b86831015611d925784890151611d8e601f891682611b12565b8355505b6001600288020188555050505b505050505050565b7f547261697473206e6f74207365740000000000000000000000000000000000005f82015250565b5f611ddb600e83610f1d565b9150611de682611da7565b602082019050919050565b5f6020820190508181035f830152611e0881611dcf565b905091905056fe646174613a696d6167652f7376672b786d6c3b757466382c3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030203239203239223e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d2223303034374231222f3ea264697066735822122082c85099a117c70b00808af594efa5d3a3edfb26a136c747883f10c07fdce99c64736f6c634300081a0033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610060575f3560e01c80633efabdf41461006457806368bd580e14610094578063997c51d21461009e578063b44606f9146100ba578063dcd83a18146100ea578063e1dc076114610106575b5f80fd5b61007e60048036038101906100799190610ee8565b610136565b60405161008b9190610f83565b60405180910390f35b61009c6106aa565b005b6100b860048036038101906100b3919061123e565b6107a2565b005b6100d460048036038101906100cf9190610ee8565b6108ec565b6040516100e191906112ea565b60405180910390f35b61010460048036038101906100ff91906113a8565b610a36565b005b610120600480360381019061011b9190610ee8565b610bc0565b60405161012d9190611546565b60405180910390f35b60606108ae821061017c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610173906115b0565b60405180910390fd5b5f60015f8481526020019081526020015f205f01805461019b906115fb565b80601f01602080910402602001604051908101604052809291908181526020018280546101c7906115fb565b80156102125780601f106101e957610100808354040283529160200191610212565b820191905f5260205f20905b8154815290600101906020018083116101f557829003601f168201915b5050505050905060405180602001604052805f81525091505f81511161026d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161026490611675565b60405180910390fd5b5f600767ffffffffffffffff81111561028957610288610fa7565b5b6040519080825280601f01601f1916602001820160405280156102bb5781602001600182028036833780820191505090505b5090505f5b601d81101561062f575f5b601d811015610621575f600382601d856102e591906116c0565b6102ef9190611701565b6102f991906116c0565b90505f60f81b85828151811061031257610311611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561039a5750604760f81b8560018361035a9190611701565b8151811061036b5761036a611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80156103f4575060b160f81b856002836103b49190611701565b815181106103c5576103c4611734565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156103ff5750610614565b7f2300000000000000000000000000000000000000000000000000000000000000845f8151811061043357610432611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b60038110156105d9575f86828461047a9190611701565b8151811061048b5761048a611734565b5b602001015160f81c60f81b60f81c90507f303132333435363738396162636465660000000000000000000000000000000060048260ff16901c60ff16601081106104d8576104d7611734565b5b1a60f81b866002846104ea91906116c0565b60016104f69190611701565b8151811061050757610506611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f3031323334353637383961626364656600000000000000000000000000000000600f821660ff166010811061056e5761056d611734565b5b1a60f81b8660028461058091906116c0565b600261058c9190611701565b8151811061059d5761059c611734565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350508080600101915050610463565b50856105e483610da8565b6105ed85610da8565b866040516020016106019493929190611833565b6040516020818303038152906040529550505b80806001019150506102cb565b5080806001019150506102c0565b506040518060c0016040528060938152602001611e1060939139836040518060400160405280600681526020017f3c2f7376673e0000000000000000000000000000000000000000000000000000815250604051602001610692939291906118ac565b60405160208183030381529060405292505050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90611926565b60405180910390fd5b5f60149054906101000a900460ff1615610786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077d9061198e565b60405180910390fd5b60015f60146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690611926565b60405180910390fd5b60015f8381526020019081526020015f206001015f61084e9190610df7565b5f5b81518110156108e75760015f8481526020019081526020015f206001018282815181106108805761087f611734565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816108c19190611b49565b5060208201518160010190816108d79190611b49565b5050508080600101915050610850565b505050565b60606108ae8210610932576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610929906115b0565b60405180910390fd5b6109db60015f8481526020019081526020015f205f018054610953906115fb565b905014610995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098c90611675565b60405180910390fd5b60015f8381526020019081526020015f205f0180546109b3906115fb565b80601f01602080910402602001604051908101604052809291908181526020018280546109df906115fb565b8015610a2a5780601f10610a0157610100808354040283529160200191610a2a565b820191905f5260205f20905b815481529060010190602001808311610a0d57829003601f168201915b50505050509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aba90611926565b60405180910390fd5b5f60149054906101000a900460ff1615610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b099061198e565b60405180910390fd5b6108ae8210610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d906115b0565b60405180910390fd5b6109db815114610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290611c62565b60405180910390fd5b8060015f8481526020019081526020015f205f019081610bbb9190611cd8565b505050565b60605f60015f8481526020019081526020015f206001018054905011610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290611df1565b60405180910390fd5b60015f8381526020019081526020015f20600101805480602002602001604051908101604052809291908181526020015f905b82821015610d9d578382905f5260205f2090600202016040518060400160405290815f82018054610c7e906115fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610caa906115fb565b8015610cf55780601f10610ccc57610100808354040283529160200191610cf5565b820191905f5260205f20905b815481529060010190602001808311610cd857829003601f168201915b50505050508152602001600182018054610d0e906115fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a906115fb565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b50505050508152505081526020019060010190610c4e565b505050509050919050565b60606080604051019050602081016040525f8152805f19835b600115610de2578184019350600a81066030018453600a8104905080610dc1575b50828203602084039350808452505050919050565b5080545f8255600202905f5260205f2090810190610e159190610e18565b50565b5b80821115610e48575f8082015f610e309190610e4c565b600182015f610e3f9190610e4c565b50600201610e19565b5090565b508054610e58906115fb565b5f825580601f10610e695750610e86565b601f0160209004905f5260205f2090810190610e859190610e89565b5b50565b5b80821115610ea0575f815f905550600101610e8a565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b610ec781610eb5565b8114610ed1575f80fd5b50565b5f81359050610ee281610ebe565b92915050565b5f60208284031215610efd57610efc610ead565b5b5f610f0a84828501610ed4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f5582610f13565b610f5f8185610f1d565b9350610f6f818560208601610f2d565b610f7881610f3b565b840191505092915050565b5f6020820190508181035f830152610f9b8184610f4b565b905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610fdd82610f3b565b810181811067ffffffffffffffff82111715610ffc57610ffb610fa7565b5b80604052505050565b5f61100e610ea4565b905061101a8282610fd4565b919050565b5f67ffffffffffffffff82111561103957611038610fa7565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561107457611073610fa7565b5b61107d82610f3b565b9050602081019050919050565b828183375f83830152505050565b5f6110aa6110a58461105a565b611005565b9050828152602081018484840111156110c6576110c5611056565b5b6110d184828561108a565b509392505050565b5f82601f8301126110ed576110ec610fa3565b5b81356110fd848260208601611098565b91505092915050565b5f6040828403121561111b5761111a61104e565b5b6111256040611005565b90505f82013567ffffffffffffffff81111561114457611143611052565b5b611150848285016110d9565b5f83015250602082013567ffffffffffffffff81111561117357611172611052565b5b61117f848285016110d9565b60208301525092915050565b5f61119d6111988461101f565b611005565b905080838252602082019050602084028301858111156111c0576111bf61104a565b5b835b8181101561120757803567ffffffffffffffff8111156111e5576111e4610fa3565b5b8086016111f28982611106565b855260208501945050506020810190506111c2565b5050509392505050565b5f82601f83011261122557611224610fa3565b5b813561123584826020860161118b565b91505092915050565b5f806040838503121561125457611253610ead565b5b5f61126185828601610ed4565b925050602083013567ffffffffffffffff81111561128257611281610eb1565b5b61128e85828601611211565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f6112bc82611298565b6112c681856112a2565b93506112d6818560208601610f2d565b6112df81610f3b565b840191505092915050565b5f6020820190508181035f83015261130281846112b2565b905092915050565b5f67ffffffffffffffff82111561132457611323610fa7565b5b61132d82610f3b565b9050602081019050919050565b5f61134c6113478461130a565b611005565b90508281526020810184848401111561136857611367611056565b5b61137384828561108a565b509392505050565b5f82601f83011261138f5761138e610fa3565b5b813561139f84826020860161133a565b91505092915050565b5f80604083850312156113be576113bd610ead565b5b5f6113cb85828601610ed4565b925050602083013567ffffffffffffffff8111156113ec576113eb610eb1565b5b6113f88582860161137b565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61144582610f13565b61144f818561142b565b935061145f818560208601610f2d565b61146881610f3b565b840191505092915050565b5f604083015f8301518482035f86015261148d828261143b565b915050602083015184820360208601526114a7828261143b565b9150508091505092915050565b5f6114bf8383611473565b905092915050565b5f602082019050919050565b5f6114dd82611402565b6114e7818561140c565b9350836020820285016114f98561141c565b805f5b85811015611534578484038952815161151585826114b4565b9450611520836114c7565b925060208a019950506001810190506114fc565b50829750879550505050505092915050565b5f6020820190508181035f83015261155e81846114d3565b905092915050565b7f496e76616c696420746f6b656e496400000000000000000000000000000000005f82015250565b5f61159a600f83610f1d565b91506115a582611566565b602082019050919050565b5f6020820190508181035f8301526115c78161158e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061161257607f821691505b602082108103611625576116246115ce565b5b50919050565b7f506978656c2064617461206e6f742073657400000000000000000000000000005f82015250565b5f61165f601283610f1d565b915061166a8261162b565b602082019050919050565b5f6020820190508181035f83015261168c81611653565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116ca82610eb5565b91506116d583610eb5565b92508282026116e381610eb5565b915082820484148315176116fa576116f9611693565b5b5092915050565b5f61170b82610eb5565b915061171683610eb5565b925082820190508082111561172e5761172d611693565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81905092915050565b5f61177582610f13565b61177f8185611761565b935061178f818560208601610f2d565b80840191505092915050565b7f3c7265637420783d220000000000000000000000000000000000000000000000815250565b7f2220793d22000000000000000000000000000000000000000000000000000000815250565b7f222077696474683d223122206865696768743d2231222066696c6c3d22000000815250565b7f222f3e0000000000000000000000000000000000000000000000000000000000815250565b5f61183e828761176b565b91506118498261179b565b600982019150611859828661176b565b9150611864826117c1565b600582019150611874828561176b565b915061187f826117e7565b601d8201915061188f828461176b565b915061189a8261180d565b60038201915081905095945050505050565b5f6118b7828661176b565b91506118c3828561176b565b91506118cf828461176b565b9150819050949350505050565b7f4f6e6c79206465706c6f7965722e0000000000000000000000000000000000005f82015250565b5f611910600e83610f1d565b915061191b826118dc565b602082019050919050565b5f6020820190508181035f83015261193d81611904565b9050919050565b7f436f6e7472616374206973207365616c65642e000000000000000000000000005f82015250565b5f611978601383610f1d565b915061198382611944565b602082019050919050565b5f6020820190508181035f8301526119a58161196c565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302611a087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826119cd565b611a1286836119cd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f611a4d611a48611a4384610eb5565b611a2a565b610eb5565b9050919050565b5f819050919050565b611a6683611a33565b611a7a611a7282611a54565b8484546119d9565b825550505050565b5f90565b611a8e611a82565b611a99818484611a5d565b505050565b5b81811015611abc57611ab15f82611a86565b600181019050611a9f565b5050565b601f821115611b0157611ad2816119ac565b611adb846119be565b81016020851015611aea578190505b611afe611af6856119be565b830182611a9e565b50505b505050565b5f82821c905092915050565b5f611b215f1984600802611b06565b1980831691505092915050565b5f611b398383611b12565b9150826002028217905092915050565b611b5282610f13565b67ffffffffffffffff811115611b6b57611b6a610fa7565b5b611b7582546115fb565b611b80828285611ac0565b5f60209050601f831160018114611bb1575f8415611b9f578287015190505b611ba98582611b2e565b865550611c10565b601f198416611bbf866119ac565b5f5b82811015611be657848901518255600182019150602085019450602081019050611bc1565b86831015611c035784890151611bff601f891682611b12565b8355505b6001600288020188555050505b505050505050565b7f496e76616c696420706978656c2064617461206c656e677468000000000000005f82015250565b5f611c4c601983610f1d565b9150611c5782611c18565b602082019050919050565b5f6020820190508181035f830152611c7981611c40565b9050919050565b5f819050815f5260205f209050919050565b601f821115611cd357611ca481611c80565b611cad846119be565b81016020851015611cbc578190505b611cd0611cc8856119be565b830182611a9e565b50505b505050565b611ce182611298565b67ffffffffffffffff811115611cfa57611cf9610fa7565b5b611d0482546115fb565b611d0f828285611c92565b5f60209050601f831160018114611d40575f8415611d2e578287015190505b611d388582611b2e565b865550611d9f565b601f198416611d4e86611c80565b5f5b82811015611d7557848901518255600182019150602085019450602081019050611d50565b86831015611d925784890151611d8e601f891682611b12565b8355505b6001600288020188555050505b505050505050565b7f547261697473206e6f74207365740000000000000000000000000000000000005f82015250565b5f611ddb600e83610f1d565b9150611de682611da7565b602082019050919050565b5f6020820190508181035f830152611e0881611dcf565b905091905056fe646174613a696d6167652f7376672b786d6c3b757466382c3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030203239203239223e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d2223303034374231222f3ea264697066735822122082c85099a117c70b00808af594efa5d3a3edfb26a136c747883f10c07fdce99c64736f6c634300081a0033
Deployed Bytecode Sourcemap
254:5920:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:1325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1394:95;;;:::i;:::-;;2011:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2689:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1718:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2334:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3095:1325;3154:17;3198:4;3188:7;:14;3180:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;3229:19;3251:7;:16;3259:7;3251:16;;;;;;;;;;;:26;;3229:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3286:8;;;;;;;;;;;;;;3325:1;3309:6;:13;:17;3301:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;3503:19;3535:1;3525:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3503:34;;3551:6;3546:816;3567:2;3563:1;:6;3546:816;;;3592:6;3587:768;3608:2;3604:1;:6;3587:768;;;3632:6;3656:1;3651;3646:2;3642:1;:6;;;;:::i;:::-;:10;;;;:::i;:::-;3641:16;;;;:::i;:::-;3632:25;;3688:4;3675:17;;:6;3682:1;3675:9;;;;;;;;:::i;:::-;;;;;;;;;;:17;;;;:42;;;;;3713:4;3696:21;;:6;3707:1;3703;:5;;;;:::i;:::-;3696:13;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;3675:42;:67;;;;;3738:4;3721:21;;:6;3732:1;3728;:5;;;;:::i;:::-;3721:13;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;3675:67;3672:114;;;3762:8;;;3672:114;3842:15;:6;3849:1;3842:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;3877:6;3872:225;3893:1;3889;:5;3872:225;;;3920:11;3940:6;3951:1;3947;:5;;;;:::i;:::-;3940:13;;;;;;;;:::i;:::-;;;;;;;;;;3934:20;;3920:34;;3993:12;4015:1;4006:5;:10;;;;3993:24;;;;;;;;;:::i;:::-;;;;;3973:6;3988:1;3984;:5;;;;:::i;:::-;3980:1;:9;;;;:::i;:::-;3973:17;;;;;;;;:::i;:::-;;;;;:44;;;;;;;;;;;4056:12;4077:3;4069:5;:11;4056:25;;;;;;;;;:::i;:::-;;;;;4036:6;4051:1;4047;:5;;;;:::i;:::-;4043:1;:9;;;;:::i;:::-;4036:17;;;;;;;;:::i;:::-;;;;;:45;;;;;;;;;;;3901:196;3896:3;;;;;;;3872:225;;;;4171:3;4207:11;4216:1;4207:8;:11::i;:::-;4246;4255:1;4246:8;:11::i;:::-;4316:6;4157:174;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4151:180;;3617:738;3587:768;3612:3;;;;;;;3587:768;;;;3571:3;;;;;;;3546:816;;;;4390:10;;;;;;;;;;;;;;;;;4401:3;4405:10;;;;;;;;;;;;;;;;;4376:40;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4370:46;;3173:1247;;3095:1325;;;:::o;1394:95::-;1076:8;;;;;;;;;;1062:22;;:10;:22;;;1054:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1171:14:::1;;;;;;;;;;;1170:15;1162:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1477:4:::2;1460:14;;:21;;;;;;;;;;;;;;;;;;1394:95::o:0;2011:277::-;1076:8;;;;;;;;;;1062:22;;:10;:22;;;1054:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2112:7:::1;:16;2120:7;2112:16;;;;;;;;;;;:23;;;2105:30;;;;:::i;:::-;2176:9;2171:110;2195:6;:13;2191:1;:17;2171:110;;;2230:7;:16;2238:7;2230:16;;;;;;;;;;;:23;;2259:6;2266:1;2259:9;;;;;;;;:::i;:::-;;;;;;;;2230:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;2210:3;;;;;;;2171:110;;;;2011:277:::0;;:::o;2689:269::-;2749:12;2792:4;2782:7;:14;2774:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;2872:11;2835:7;:16;2843:7;2835:16;;;;;;;;;;;:26;;:33;;;;;:::i;:::-;;;:48;2827:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2924:7;:16;2932:7;2924:16;;;;;;;;;;;:26;;2917:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:269;;;:::o;1718:286::-;1076:8;;;;;;;;;;1062:22;;:10;:22;;;1054:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1171:14:::1;;;;;;;;;;;1170:15;1162:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1843:4:::2;1833:7;:14;1825:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;1906:11;1886:9;:16;:31;1878:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;1987:9;1958:7;:16;1966:7;1958:16;;;;;;;;;;;:26;;:38;;;;;;:::i;:::-;;1718:286:::0;;:::o;2334:196::-;2393:14;2461:1;2428:7;:16;2436:7;2428:16;;;;;;;;;;;:23;;:30;;;;:34;2420:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;2499:7;:16;2507:7;2499:16;;;;;;;;;;;:23;;2492:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2334:196;;;:::o;4495:1676::-;4551:17;5003:4;4996;4990:11;4986:22;4979:29;;5104:4;5099:3;5095:14;5089:4;5082:28;5187:1;5182:3;5175:14;5291:3;5323:1;5319:6;5535:5;5517:410;5543:1;5517:410;;;5583:1;5578:3;5574:11;5567:18;;5772:2;5766:4;5762:13;5758:2;5754:22;5749:3;5741:36;5866:2;5860:4;5856:13;5848:21;;5897:4;5517:410;5887:25;5517:410;5521:21;5966:3;5961;5957:13;6081:4;6076:3;6072:14;6065:21;;6146:6;6141:3;6134:19;4634:1530;;;4495:1676;;;:::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:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:139::-;1394:6;1389:3;1384;1378:23;1435:1;1426:6;1421:3;1417:16;1410:27;1305:139;;;:::o;1450:102::-;1491:6;1542:2;1538:7;1533:2;1526:5;1522:14;1518:28;1508:38;;1450:102;;;:::o;1558:377::-;1646:3;1674:39;1707:5;1674:39;:::i;:::-;1729:71;1793:6;1788:3;1729:71;:::i;:::-;1722:78;;1809:65;1867:6;1862:3;1855:4;1848:5;1844:16;1809:65;:::i;:::-;1899:29;1921:6;1899:29;:::i;:::-;1894:3;1890:39;1883:46;;1650:285;1558:377;;;;:::o;1941:313::-;2054:4;2092:2;2081:9;2077:18;2069:26;;2141:9;2135:4;2131:20;2127:1;2116:9;2112:17;2105:47;2169:78;2242:4;2233:6;2169:78;:::i;:::-;2161:86;;1941:313;;;;:::o;2260:117::-;2369:1;2366;2359:12;2383:180;2431:77;2428:1;2421:88;2528:4;2525:1;2518:15;2552:4;2549:1;2542:15;2569:281;2652:27;2674:4;2652:27;:::i;:::-;2644:6;2640:40;2782:6;2770:10;2767:22;2746:18;2734:10;2731:34;2728:62;2725:88;;;2793:18;;:::i;:::-;2725:88;2833:10;2829:2;2822:22;2612:238;2569:281;;:::o;2856:129::-;2890:6;2917:20;;:::i;:::-;2907:30;;2946:33;2974:4;2966:6;2946:33;:::i;:::-;2856:129;;;:::o;2991:332::-;3089:4;3179:18;3171:6;3168:30;3165:56;;;3201:18;;:::i;:::-;3165:56;3251:4;3243:6;3239:17;3231:25;;3311:4;3305;3301:15;3293:23;;2991:332;;;:::o;3329:117::-;3438:1;3435;3428:12;3452:117;3561:1;3558;3551:12;3575:117;3684:1;3681;3674:12;3698:117;3807:1;3804;3797:12;3821:308;3883:4;3973:18;3965:6;3962:30;3959:56;;;3995:18;;:::i;:::-;3959:56;4033:29;4055:6;4033:29;:::i;:::-;4025:37;;4117:4;4111;4107:15;4099:23;;3821:308;;;:::o;4135:148::-;4233:6;4228:3;4223;4210:30;4274:1;4265:6;4260:3;4256:16;4249:27;4135:148;;;:::o;4289:425::-;4367:5;4392:66;4408:49;4450:6;4408:49;:::i;:::-;4392:66;:::i;:::-;4383:75;;4481:6;4474:5;4467:21;4519:4;4512:5;4508:16;4557:3;4548:6;4543:3;4539:16;4536:25;4533:112;;;4564:79;;:::i;:::-;4533:112;4654:54;4701:6;4696:3;4691;4654:54;:::i;:::-;4373:341;4289:425;;;;;:::o;4734:340::-;4790:5;4839:3;4832:4;4824:6;4820:17;4816:27;4806:122;;4847:79;;:::i;:::-;4806:122;4964:6;4951:20;4989:79;5064:3;5056:6;5049:4;5041:6;5037:17;4989:79;:::i;:::-;4980:88;;4796:278;4734:340;;;;:::o;5115:916::-;5185:5;5229:4;5217:9;5212:3;5208:19;5204:30;5201:117;;;5237:79;;:::i;:::-;5201:117;5336:21;5352:4;5336:21;:::i;:::-;5327:30;;5449:1;5438:9;5434:17;5421:31;5479:18;5471:6;5468:30;5465:117;;;5501:79;;:::i;:::-;5465:117;5621:59;5676:3;5667:6;5656:9;5652:22;5621:59;:::i;:::-;5614:4;5607:5;5603:16;5596:85;5367:325;5780:2;5769:9;5765:18;5752:32;5811:18;5803:6;5800:30;5797:117;;;5833:79;;:::i;:::-;5797:117;5953:59;6008:3;5999:6;5988:9;5984:22;5953:59;:::i;:::-;5946:4;5939:5;5935:16;5928:85;5702:322;5115:916;;;;:::o;6074:978::-;6191:5;6216:102;6232:85;6310:6;6232:85;:::i;:::-;6216:102;:::i;:::-;6207:111;;6338:5;6367:6;6360:5;6353:21;6401:4;6394:5;6390:16;6383:23;;6454:4;6446:6;6442:17;6434:6;6430:30;6483:3;6475:6;6472:15;6469:122;;;6502:79;;:::i;:::-;6469:122;6617:6;6600:446;6634:6;6629:3;6626:15;6600:446;;;6723:3;6710:17;6759:18;6746:11;6743:35;6740:122;;;6781:79;;:::i;:::-;6740:122;6905:11;6897:6;6893:24;6943:58;6997:3;6985:10;6943:58;:::i;:::-;6938:3;6931:71;7031:4;7026:3;7022:14;7015:21;;6676:370;;6660:4;6655:3;6651:14;6644:21;;6600:446;;;6604:21;6197:855;;6074:978;;;;;:::o;7095:412::-;7187:5;7236:3;7229:4;7221:6;7217:17;7213:27;7203:122;;7244:79;;:::i;:::-;7203:122;7361:6;7348:20;7386:115;7497:3;7489:6;7482:4;7474:6;7470:17;7386:115;:::i;:::-;7377:124;;7193:314;7095:412;;;;:::o;7513:726::-;7627:6;7635;7684:2;7672:9;7663:7;7659:23;7655:32;7652:119;;;7690:79;;:::i;:::-;7652:119;7810:1;7835:53;7880:7;7871:6;7860:9;7856:22;7835:53;:::i;:::-;7825:63;;7781:117;7965:2;7954:9;7950:18;7937:32;7996:18;7988:6;7985:30;7982:117;;;8018:79;;:::i;:::-;7982:117;8123:99;8214:7;8205:6;8194:9;8190:22;8123:99;:::i;:::-;8113:109;;7908:324;7513:726;;;;;:::o;8245:98::-;8296:6;8330:5;8324:12;8314:22;;8245:98;;;:::o;8349:168::-;8432:11;8466:6;8461:3;8454:19;8506:4;8501:3;8497:14;8482:29;;8349:168;;;;:::o;8523:373::-;8609:3;8637:38;8669:5;8637:38;:::i;:::-;8691:70;8754:6;8749:3;8691:70;:::i;:::-;8684:77;;8770:65;8828:6;8823:3;8816:4;8809:5;8805:16;8770:65;:::i;:::-;8860:29;8882:6;8860:29;:::i;:::-;8855:3;8851:39;8844:46;;8613:283;8523:373;;;;:::o;8902:309::-;9013:4;9051:2;9040:9;9036:18;9028:26;;9100:9;9094:4;9090:20;9086:1;9075:9;9071:17;9064:47;9128:76;9199:4;9190:6;9128:76;:::i;:::-;9120:84;;8902:309;;;;:::o;9217:307::-;9278:4;9368:18;9360:6;9357:30;9354:56;;;9390:18;;:::i;:::-;9354:56;9428:29;9450:6;9428:29;:::i;:::-;9420:37;;9512:4;9506;9502:15;9494:23;;9217:307;;;:::o;9530:423::-;9607:5;9632:65;9648:48;9689:6;9648:48;:::i;:::-;9632:65;:::i;:::-;9623:74;;9720:6;9713:5;9706:21;9758:4;9751:5;9747:16;9796:3;9787:6;9782:3;9778:16;9775:25;9772:112;;;9803:79;;:::i;:::-;9772:112;9893:54;9940:6;9935:3;9930;9893:54;:::i;:::-;9613:340;9530:423;;;;;:::o;9972:338::-;10027:5;10076:3;10069:4;10061:6;10057:17;10053:27;10043:122;;10084:79;;:::i;:::-;10043:122;10201:6;10188:20;10226:78;10300:3;10292:6;10285:4;10277:6;10273:17;10226:78;:::i;:::-;10217:87;;10033:277;9972:338;;;;:::o;10316:652::-;10393:6;10401;10450:2;10438:9;10429:7;10425:23;10421:32;10418:119;;;10456:79;;:::i;:::-;10418:119;10576:1;10601:53;10646:7;10637:6;10626:9;10622:22;10601:53;:::i;:::-;10591:63;;10547:117;10731:2;10720:9;10716:18;10703:32;10762:18;10754:6;10751:30;10748:117;;;10784:79;;:::i;:::-;10748:117;10889:62;10943:7;10934:6;10923:9;10919:22;10889:62;:::i;:::-;10879:72;;10674:287;10316:652;;;;;:::o;10974:135::-;11062:6;11096:5;11090:12;11080:22;;10974:135;;;:::o;11115:205::-;11235:11;11269:6;11264:3;11257:19;11309:4;11304:3;11300:14;11285:29;;11115:205;;;;:::o;11326:153::-;11414:4;11437:3;11429:11;;11467:4;11462:3;11458:14;11450:22;;11326:153;;;:::o;11485:159::-;11559:11;11593:6;11588:3;11581:19;11633:4;11628:3;11624:14;11609:29;;11485:159;;;;:::o;11650:357::-;11728:3;11756:39;11789:5;11756:39;:::i;:::-;11811:61;11865:6;11860:3;11811:61;:::i;:::-;11804:68;;11881:65;11939:6;11934:3;11927:4;11920:5;11916:16;11881:65;:::i;:::-;11971:29;11993:6;11971:29;:::i;:::-;11966:3;11962:39;11955:46;;11732:275;11650:357;;;;:::o;12079:665::-;12180:3;12216:4;12211:3;12207:14;12308:4;12301:5;12297:16;12291:23;12361:3;12355:4;12351:14;12344:4;12339:3;12335:14;12328:38;12387:73;12455:4;12441:12;12387:73;:::i;:::-;12379:81;;12231:240;12554:4;12547:5;12543:16;12537:23;12607:3;12601:4;12597:14;12590:4;12585:3;12581:14;12574:38;12633:73;12701:4;12687:12;12633:73;:::i;:::-;12625:81;;12481:236;12734:4;12727:11;;12185:559;12079:665;;;;:::o;12750:240::-;12861:10;12896:88;12980:3;12972:6;12896:88;:::i;:::-;12882:102;;12750:240;;;;:::o;12996:134::-;13087:4;13119;13114:3;13110:14;13102:22;;12996:134;;;:::o;13206:1079::-;13367:3;13396:75;13465:5;13396:75;:::i;:::-;13487:107;13587:6;13582:3;13487:107;:::i;:::-;13480:114;;13620:3;13665:4;13657:6;13653:17;13648:3;13644:27;13695:77;13766:5;13695:77;:::i;:::-;13795:7;13826:1;13811:429;13836:6;13833:1;13830:13;13811:429;;;13907:9;13901:4;13897:20;13892:3;13885:33;13958:6;13952:13;13986:106;14087:4;14072:13;13986:106;:::i;:::-;13978:114;;14115:81;14189:6;14115:81;:::i;:::-;14105:91;;14225:4;14220:3;14216:14;14209:21;;13871:369;13858:1;13855;13851:9;13846:14;;13811:429;;;13815:14;14256:4;14249:11;;14276:3;14269:10;;13372:913;;;;;13206:1079;;;;:::o;14291:457::-;14476:4;14514:2;14503:9;14499:18;14491:26;;14563:9;14557:4;14553:20;14549:1;14538:9;14534:17;14527:47;14591:150;14736:4;14727:6;14591:150;:::i;:::-;14583:158;;14291:457;;;;:::o;14754:165::-;14894:17;14890:1;14882:6;14878:14;14871:41;14754:165;:::o;14925:366::-;15067:3;15088:67;15152:2;15147:3;15088:67;:::i;:::-;15081:74;;15164:93;15253:3;15164:93;:::i;:::-;15282:2;15277:3;15273:12;15266:19;;14925:366;;;:::o;15297:419::-;15463:4;15501:2;15490:9;15486:18;15478:26;;15550:9;15544:4;15540:20;15536:1;15525:9;15521:17;15514:47;15578:131;15704:4;15578:131;:::i;:::-;15570:139;;15297:419;;;:::o;15722:180::-;15770:77;15767:1;15760:88;15867:4;15864:1;15857:15;15891:4;15888:1;15881:15;15908:320;15952:6;15989:1;15983:4;15979:12;15969:22;;16036:1;16030:4;16026:12;16057:18;16047:81;;16113:4;16105:6;16101:17;16091:27;;16047:81;16175:2;16167:6;16164:14;16144:18;16141:38;16138:84;;16194:18;;:::i;:::-;16138:84;15959:269;15908:320;;;:::o;16234:168::-;16374:20;16370:1;16362:6;16358:14;16351:44;16234:168;:::o;16408:366::-;16550:3;16571:67;16635:2;16630:3;16571:67;:::i;:::-;16564:74;;16647:93;16736:3;16647:93;:::i;:::-;16765:2;16760:3;16756:12;16749:19;;16408:366;;;:::o;16780:419::-;16946:4;16984:2;16973:9;16969:18;16961:26;;17033:9;17027:4;17023:20;17019:1;17008:9;17004:17;16997:47;17061:131;17187:4;17061:131;:::i;:::-;17053:139;;16780:419;;;:::o;17205:180::-;17253:77;17250:1;17243:88;17350:4;17347:1;17340:15;17374:4;17371:1;17364:15;17391:410;17431:7;17454:20;17472:1;17454:20;:::i;:::-;17449:25;;17488:20;17506:1;17488:20;:::i;:::-;17483:25;;17543:1;17540;17536:9;17565:30;17583:11;17565:30;:::i;:::-;17554:41;;17744:1;17735:7;17731:15;17728:1;17725:22;17705:1;17698:9;17678:83;17655:139;;17774:18;;:::i;:::-;17655:139;17439:362;17391:410;;;;:::o;17807:191::-;17847:3;17866:20;17884:1;17866:20;:::i;:::-;17861:25;;17900:20;17918:1;17900:20;:::i;:::-;17895:25;;17943:1;17940;17936:9;17929:16;;17964:3;17961:1;17958:10;17955:36;;;17971:18;;:::i;:::-;17955:36;17807:191;;;;:::o;18004:180::-;18052:77;18049:1;18042:88;18149:4;18146:1;18139:15;18173:4;18170:1;18163:15;18190:148;18292:11;18329:3;18314:18;;18190:148;;;;:::o;18344:390::-;18450:3;18478:39;18511:5;18478:39;:::i;:::-;18533:89;18615:6;18610:3;18533:89;:::i;:::-;18526:96;;18631:65;18689:6;18684:3;18677:4;18670:5;18666:16;18631:65;:::i;:::-;18721:6;18716:3;18712:16;18705:23;;18454:280;18344:390;;;;:::o;18740:241::-;18908:66;18903:3;18896:79;18740:241;:::o;18987:::-;19155:66;19150:3;19143:79;18987:241;:::o;19234:242::-;19403:66;19398:3;19391:79;19234:242;:::o;19482:241::-;19650:66;19645:3;19638:79;19482:241;:::o;19729:1814::-;20366:3;20388:95;20479:3;20470:6;20388:95;:::i;:::-;20381:102;;20493:137;20626:3;20493:137;:::i;:::-;20655:1;20650:3;20646:11;20639:18;;20674:95;20765:3;20756:6;20674:95;:::i;:::-;20667:102;;20779:137;20912:3;20779:137;:::i;:::-;20941:1;20936:3;20932:11;20925:18;;20960:95;21051:3;21042:6;20960:95;:::i;:::-;20953:102;;21065:138;21199:3;21065:138;:::i;:::-;21228:2;21223:3;21219:12;21212:19;;21248:95;21339:3;21330:6;21248:95;:::i;:::-;21241:102;;21353:137;21486:3;21353:137;:::i;:::-;21515:1;21510:3;21506:11;21499:18;;21534:3;21527:10;;19729:1814;;;;;;;:::o;21549:595::-;21777:3;21799:95;21890:3;21881:6;21799:95;:::i;:::-;21792:102;;21911:95;22002:3;21993:6;21911:95;:::i;:::-;21904:102;;22023:95;22114:3;22105:6;22023:95;:::i;:::-;22016:102;;22135:3;22128:10;;21549:595;;;;;;:::o;22150:164::-;22290:16;22286:1;22278:6;22274:14;22267:40;22150:164;:::o;22320:366::-;22462:3;22483:67;22547:2;22542:3;22483:67;:::i;:::-;22476:74;;22559:93;22648:3;22559:93;:::i;:::-;22677:2;22672:3;22668:12;22661:19;;22320:366;;;:::o;22692:419::-;22858:4;22896:2;22885:9;22881:18;22873:26;;22945:9;22939:4;22935:20;22931:1;22920:9;22916:17;22909:47;22973:131;23099:4;22973:131;:::i;:::-;22965:139;;22692:419;;;:::o;23117:169::-;23257:21;23253:1;23245:6;23241:14;23234:45;23117:169;:::o;23292:366::-;23434:3;23455:67;23519:2;23514:3;23455:67;:::i;:::-;23448:74;;23531:93;23620:3;23531:93;:::i;:::-;23649:2;23644:3;23640:12;23633:19;;23292:366;;;:::o;23664:419::-;23830:4;23868:2;23857:9;23853:18;23845:26;;23917:9;23911:4;23907:20;23903:1;23892:9;23888:17;23881:47;23945:131;24071:4;23945:131;:::i;:::-;23937:139;;23664:419;;;:::o;24089:141::-;24138:4;24161:3;24153:11;;24184:3;24181:1;24174:14;24218:4;24215:1;24205:18;24197:26;;24089:141;;;:::o;24236:93::-;24273:6;24320:2;24315;24308:5;24304:14;24300:23;24290:33;;24236:93;;;:::o;24335:107::-;24379:8;24429:5;24423:4;24419:16;24398:37;;24335:107;;;;:::o;24448:393::-;24517:6;24567:1;24555:10;24551:18;24590:97;24620:66;24609:9;24590:97;:::i;:::-;24708:39;24738:8;24727:9;24708:39;:::i;:::-;24696:51;;24780:4;24776:9;24769:5;24765:21;24756:30;;24829:4;24819:8;24815:19;24808:5;24805:30;24795:40;;24524:317;;24448:393;;;;;:::o;24847:60::-;24875:3;24896:5;24889:12;;24847:60;;;:::o;24913:142::-;24963:9;24996:53;25014:34;25023:24;25041:5;25023:24;:::i;:::-;25014:34;:::i;:::-;24996:53;:::i;:::-;24983:66;;24913:142;;;:::o;25061:75::-;25104:3;25125:5;25118:12;;25061:75;;;:::o;25142:269::-;25252:39;25283:7;25252:39;:::i;:::-;25313:91;25362:41;25386:16;25362:41;:::i;:::-;25354:6;25347:4;25341:11;25313:91;:::i;:::-;25307:4;25300:105;25218:193;25142:269;;;:::o;25417:73::-;25462:3;25417:73;:::o;25496:189::-;25573:32;;:::i;:::-;25614:65;25672:6;25664;25658:4;25614:65;:::i;:::-;25549:136;25496:189;;:::o;25691:186::-;25751:120;25768:3;25761:5;25758:14;25751:120;;;25822:39;25859:1;25852:5;25822:39;:::i;:::-;25795:1;25788:5;25784:13;25775:22;;25751:120;;;25691:186;;:::o;25883:543::-;25984:2;25979:3;25976:11;25973:446;;;26018:38;26050:5;26018:38;:::i;:::-;26102:29;26120:10;26102:29;:::i;:::-;26092:8;26088:44;26285:2;26273:10;26270:18;26267:49;;;26306:8;26291:23;;26267:49;26329:80;26385:22;26403:3;26385:22;:::i;:::-;26375:8;26371:37;26358:11;26329:80;:::i;:::-;25988:431;;25973:446;25883:543;;;:::o;26432:117::-;26486:8;26536:5;26530:4;26526:16;26505:37;;26432:117;;;;:::o;26555:169::-;26599:6;26632:51;26680:1;26676:6;26668:5;26665:1;26661:13;26632:51;:::i;:::-;26628:56;26713:4;26707;26703:15;26693:25;;26606:118;26555:169;;;;:::o;26729:295::-;26805:4;26951:29;26976:3;26970:4;26951:29;:::i;:::-;26943:37;;27013:3;27010:1;27006:11;27000:4;26997:21;26989:29;;26729:295;;;;:::o;27029:1395::-;27146:37;27179:3;27146:37;:::i;:::-;27248:18;27240:6;27237:30;27234:56;;;27270:18;;:::i;:::-;27234:56;27314:38;27346:4;27340:11;27314:38;:::i;:::-;27399:67;27459:6;27451;27445:4;27399:67;:::i;:::-;27493:1;27517:4;27504:17;;27549:2;27541:6;27538:14;27566:1;27561:618;;;;28223:1;28240:6;28237:77;;;28289:9;28284:3;28280:19;28274:26;28265:35;;28237:77;28340:67;28400:6;28393:5;28340:67;:::i;:::-;28334:4;28327:81;28196:222;27531:887;;27561:618;27613:4;27609:9;27601:6;27597:22;27647:37;27679:4;27647:37;:::i;:::-;27706:1;27720:208;27734:7;27731:1;27728:14;27720:208;;;27813:9;27808:3;27804:19;27798:26;27790:6;27783:42;27864:1;27856:6;27852:14;27842:24;;27911:2;27900:9;27896:18;27883:31;;27757:4;27754:1;27750:12;27745:17;;27720:208;;;27956:6;27947:7;27944:19;27941:179;;;28014:9;28009:3;28005:19;27999:26;28057:48;28099:4;28091:6;28087:17;28076:9;28057:48;:::i;:::-;28049:6;28042:64;27964:156;27941:179;28166:1;28162;28154:6;28150:14;28146:22;28140:4;28133:36;27568:611;;;27531:887;;27121:1303;;;27029:1395;;:::o;28430:175::-;28570:27;28566:1;28558:6;28554:14;28547:51;28430:175;:::o;28611:366::-;28753:3;28774:67;28838:2;28833:3;28774:67;:::i;:::-;28767:74;;28850:93;28939:3;28850:93;:::i;:::-;28968:2;28963:3;28959:12;28952:19;;28611:366;;;:::o;28983:419::-;29149:4;29187:2;29176:9;29172:18;29164:26;;29236:9;29230:4;29226:20;29222:1;29211:9;29207:17;29200:47;29264:131;29390:4;29264:131;:::i;:::-;29256:139;;28983:419;;;:::o;29408:140::-;29456:4;29479:3;29471:11;;29502:3;29499:1;29492:14;29536:4;29533:1;29523:18;29515:26;;29408:140;;;:::o;29554:541::-;29654:2;29649:3;29646:11;29643:445;;;29688:37;29719:5;29688:37;:::i;:::-;29771:29;29789:10;29771:29;:::i;:::-;29761:8;29757:44;29954:2;29942:10;29939:18;29936:49;;;29975:8;29960:23;;29936:49;29998:80;30054:22;30072:3;30054:22;:::i;:::-;30044:8;30040:37;30027:11;29998:80;:::i;:::-;29658:430;;29643:445;29554:541;;;:::o;30101:1390::-;30216:36;30248:3;30216:36;:::i;:::-;30317:18;30309:6;30306:30;30303:56;;;30339:18;;:::i;:::-;30303:56;30383:38;30415:4;30409:11;30383:38;:::i;:::-;30468:66;30527:6;30519;30513:4;30468:66;:::i;:::-;30561:1;30585:4;30572:17;;30617:2;30609:6;30606:14;30634:1;30629:617;;;;31290:1;31307:6;31304:77;;;31356:9;31351:3;31347:19;31341:26;31332:35;;31304:77;31407:67;31467:6;31460:5;31407:67;:::i;:::-;31401:4;31394:81;31263:222;30599:886;;30629:617;30681:4;30677:9;30669:6;30665:22;30715:36;30746:4;30715:36;:::i;:::-;30773:1;30787:208;30801:7;30798:1;30795:14;30787:208;;;30880:9;30875:3;30871:19;30865:26;30857:6;30850:42;30931:1;30923:6;30919:14;30909:24;;30978:2;30967:9;30963:18;30950:31;;30824:4;30821:1;30817:12;30812:17;;30787:208;;;31023:6;31014:7;31011:19;31008:179;;;31081:9;31076:3;31072:19;31066:26;31124:48;31166:4;31158:6;31154:17;31143:9;31124:48;:::i;:::-;31116:6;31109:64;31031:156;31008:179;31233:1;31229;31221:6;31217:14;31213:22;31207:4;31200:36;30636:610;;;30599:886;;30191:1300;;;30101:1390;;:::o;31497:164::-;31637:16;31633:1;31625:6;31621:14;31614:40;31497:164;:::o;31667:366::-;31809:3;31830:67;31894:2;31889:3;31830:67;:::i;:::-;31823:74;;31906:93;31995:3;31906:93;:::i;:::-;32024:2;32019:3;32015:12;32008:19;;31667:366;;;:::o;32039:419::-;32205:4;32243:2;32232:9;32228:18;32220:26;;32292:9;32286:4;32282:20;32278:1;32267:9;32263:17;32256:47;32320:131;32446:4;32320:131;:::i;:::-;32312:139;;32039:419;;;:::o
Swarm Source
ipfs://82c85099a117c70b00808af594efa5d3a3edfb26a136c747883f10c07fdce99c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.