Overview
APE Balance
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ProjectNineData
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2025-02-24 */ /** * _ _ _ _ _ _ _ _ * /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ /\ \ / /\ * / \ \ / \ \ / \ \ \ \ \ / \ \ / \ \ \_\ \ / / \ * / /\ \ \ / /\ \ \ / /\ \ \ /\ \_\ / /\ \ \ / /\ \ \ /\__ \ / / /\ \ * / / /\ \_\ / / /\ \_\ / / /\ \ \ / /\/_// / /\ \_\ / / /\ \ \ / /_ \ \ /_/ /\ \ \ * / / /_/ / // / /_/ / / / / / \ \_\ _ / / / / /_/_ \/_/ / / / \ \_\ / / /\ \ \ \ \ \_\ \ \ * / / /__\/ // / /__\/ / / / / / / //\ \ / / / / /____/\ / / / \/_/ / / / \/_/ \ \/__\ \ \ * / / /_____// / /_____/ / / / / / / \ \_\ / / / / /\____\/ / / / / / / \_____\ \ \ * / / / / / /\ \ \ / / /___/ / / / / /_/ / / / / /______ / / /________ / / / \ \ \ * / / / / / / \ \ \/ / /____\/ / / / /__\/ / / / /_______\/ / /_________\/_/ / \ \ \ * \/_/ \/_/ \_\/\/_________/ \/_______/ \/__________/\/____________/\_\/ \_\/ * * On-chain Project-9 NFT, by SoftWave. **/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract ProjectNineData { address payable internal deployer; address payable public nftContract; bool private contractLocked = false; uint256 private constant CANVAS_SIZE = 24; uint256 private constant PIXEL_DATA_SIZE = CANVAS_SIZE * CANVAS_SIZE * 3; uint256 public constant MAX_LIMIT = 2222; Coordination public updateCoord; struct Trait { string traitType; string value; } struct Coordination { uint256 startX; uint256 startY; uint256 width; uint256 height; } struct NineData { bytes pixelData; Trait[] traits; bytes equippedWeapon; uint256 xp; } mapping(uint256 => NineData) private nineData; modifier onlyNFTContract() { require(msg.sender == nftContract, "Only NFTContract."); _; } modifier onlyDeployer() { require(msg.sender == deployer, "Only deployer."); _; } modifier unlocked() { require(!contractLocked, "Contract is locked."); _; } constructor() { deployer = payable(msg.sender); } function setNFTContract(address contractAddress) external onlyDeployer { nftContract = payable(contractAddress); } function setUpdateCoordination( uint256 startX, uint256 startY, uint256 width, uint256 height ) external onlyDeployer { require(startX + width <= CANVAS_SIZE, "Width out of bounds"); require(startY + height <= CANVAS_SIZE, "Height out of bounds"); updateCoord = Coordination(startX, startY, width, height); } function lockContract() external onlyDeployer unlocked { contractLocked = true; } function storePixelData(uint256 tokenId, bytes memory pixelData) external onlyDeployer unlocked { require(tokenId < MAX_LIMIT, "Invalid tokenId"); require( pixelData.length == PIXEL_DATA_SIZE, "Invalid pixel data length" ); nineData[tokenId].pixelData = pixelData; } function batchStorePixelData( uint256[] memory tokenIds, bytes[] memory pixelDataArray ) external onlyDeployer unlocked { 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 < MAX_LIMIT, "Invalid tokenId"); require( pixelData.length == PIXEL_DATA_SIZE, "Invalid pixel data length" ); nineData[tokenId].pixelData = pixelData; } } function storeTraits(uint256 tokenId, Trait[] memory traits) external onlyDeployer unlocked { require(traits.length > 0, "Traits cannot be empty"); delete nineData[tokenId].traits; for (uint256 i = 0; i < traits.length; i++) { nineData[tokenId].traits.push(traits[i]); } } function batchStoreTraits( uint256[] memory tokenIds, Trait[][] memory traitsArray ) external onlyDeployer unlocked { 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 nineData[tokenId].traits; for (uint256 j = 0; j < traits.length; j++) { nineData[tokenId].traits.push(traits[j]); } } } function getTraits(uint256 tokenId) external view returns (string memory) { require(nineData[tokenId].traits.length > 0, "Traits not set"); string memory jsonTraits = "["; for (uint256 i = 0; i < nineData[tokenId].traits.length; i++) { jsonTraits = string.concat( jsonTraits, '{"trait_type": "', nineData[tokenId].traits[i].traitType, '", "value": "', nineData[tokenId].traits[i].value, '"}' ); if (i < nineData[tokenId].traits.length - 1) { jsonTraits = string.concat(jsonTraits, ","); } } jsonTraits = string.concat(jsonTraits, "]"); return jsonTraits; } function getNineData(uint256 tokenId) external view returns (bytes memory) { require(tokenId < MAX_LIMIT, "Invalid tokenId"); require( nineData[tokenId].pixelData.length == PIXEL_DATA_SIZE, "Pixel data not set" ); return nineData[tokenId].pixelData; } function updateWeapon(uint256 tokenId, bytes memory colors) external onlyNFTContract { uint256 area = updateCoord.width * updateCoord.height; require(colors.length == area * 3, "Colors array length mismatch"); bytes storage weapon = nineData[tokenId].equippedWeapon; for (uint256 row = 0; row < updateCoord.height; row++) { for (uint256 col = 0; col < updateCoord.width; col++) { uint256 x = updateCoord.startX + col; uint256 y = updateCoord.startY + row; uint256 pixelIndex = (y * 24 + x) * 3; uint256 colorIndex = (row * updateCoord.width + col) * 3; weapon[pixelIndex] = colors[colorIndex]; weapon[pixelIndex + 1] = colors[colorIndex + 1]; weapon[pixelIndex + 2] = colors[colorIndex + 2]; } } if(nineData[tokenId].xp < 3) nineData[tokenId].xp += 1; } function updateTrait(uint256 tokenId, string memory traitType, string memory value) external onlyNFTContract { Trait[] storage traits = nineData[tokenId].traits; for (uint256 i = 0; i < traits.length; i++) { if (keccak256(bytes(traits[i].traitType)) == keccak256(bytes(traitType))) { traits[i].value = value; return; } } traits.push(Trait(traitType, value)); } function getEquippedWeapon(uint256 tokenId) external view returns (bytes memory) { return nineData[tokenId].equippedWeapon; } function train(uint256 tokenId) external onlyNFTContract { if(nineData[tokenId].xp < 3) nineData[tokenId].xp += 1; } function exercise(uint256 tokenId) external onlyNFTContract { if(nineData[tokenId].xp < 3) nineData[tokenId].xp += 1; } function getXP(uint256 tokenId) external view returns (uint256) { return nineData[tokenId].xp; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"MAX_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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 ProjectNineData.Trait[][]","name":"traitsArray","type":"tuple[][]"}],"name":"batchStoreTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exercise","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getEquippedWeapon","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getNineData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getTraits","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getXP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setNFTContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startX","type":"uint256"},{"internalType":"uint256","name":"startY","type":"uint256"},{"internalType":"uint256","name":"width","type":"uint256"},{"internalType":"uint256","name":"height","type":"uint256"}],"name":"setUpdateCoordination","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 ProjectNineData.Trait[]","name":"traits","type":"tuple[]"}],"name":"storeTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"train","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateCoord","outputs":[{"internalType":"uint256","name":"startX","type":"uint256"},{"internalType":"uint256","name":"startY","type":"uint256"},{"internalType":"uint256","name":"width","type":"uint256"},{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"traitType","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"updateTrait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"colors","type":"bytes"}],"name":"updateWeapon","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040525f600160146101000a81548160ff0219169083151502179055503480156028575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061326d806100755f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063b96a367c116100a0578063d5f087771161006f578063d5f08777146102a3578063dcd83a18146102bf578063e1dc0761146102db578063f6e002ac1461030b578063f80e53ab1461032757610114565b8063b96a367c14610218578063d4cae94514610239578063d56d229d14610269578063d5b959f41461028757610114565b8063753868e3116100e7578063753868e31461019e578063997c51d2146101a8578063a7ccabdf146101c4578063b07f0a41146101e0578063b456666d146101fc57610114565b806302be09cb14610118578063114cccd214610134578063368004ed146101525780633eacc12b1461016e575b5f80fd5b610132600480360381019061012d9190611ddc565b610357565b005b61013c610593565b6040516101499190611e61565b60405180910390f35b61016c60048036038101906101679190611e7a565b610599565b005b61018860048036038101906101839190611e7a565b610674565b6040516101959190611f05565b60405180910390f35b6101a6610718565b005b6101c260048036038101906101bd919061212e565b610811565b005b6101de60048036038101906101d991906121e2565b6109ee565b005b6101fa60048036038101906101f59190611e7a565b610abe565b005b6102166004803603810190610211919061220d565b610b99565b005b610220610d16565b6040516102309493929190612271565b60405180910390f35b610253600480360381019061024e9190611e7a565b610d33565b6040516102609190611e61565b60405180910390f35b610271610d50565b60405161027e91906122d4565b60405180910390f35b6102a1600480360381019061029c91906122ed565b610d75565b005b6102bd60048036038101906102b89190612425565b611163565b005b6102d960048036038101906102d491906122ed565b611398565b005b6102f560048036038101906102f09190611e7a565b611539565b60405161030291906124ed565b60405180910390f35b6103256004803603810190610320919061250d565b611702565b005b610341600480360381019061033c9190611e7a565b6118ad565b60405161034e9190611f05565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103db906125df565b60405180910390fd5b600160149054906101000a900460ff1615610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90612647565b60405180910390fd5b8051825114610478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046f906126af565b60405180910390fd5b5f5b825181101561058e575f838281518110610497576104966126cd565b5b602002602001015190505f8383815181106104b5576104b46126cd565b5b602002602001015190506108ae8210610503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fa90612744565b60405180910390fd5b6003601880610512919061278f565b61051c919061278f565b81511461055e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105559061281a565b60405180910390fd5b8060065f8481526020019081526020015f205f01908161057e9190612a32565b505050808060010191505061047a565b505050565b6108ae81565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061f90612b4b565b60405180910390fd5b600360065f8381526020019081526020015f2060030154101561067157600160065f8381526020019081526020015f206003015f8282546106699190612b69565b925050819055505b50565b606060065f8381526020019081526020015f20600201805461069590612865565b80601f01602080910402602001604051908101604052809291908181526020018280546106c190612865565b801561070c5780601f106106e35761010080835404028352916020019161070c565b820191905f5260205f20905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c906125df565b60405180910390fd5b600160149054906101000a900460ff16156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90612647565b60405180910390fd5b60018060146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610895906125df565b60405180910390fd5b600160149054906101000a900460ff16156108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612647565b60405180910390fd5b5f815111610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890612be6565b60405180910390fd5b60065f8381526020019081526020015f206001015f6109509190611a0d565b5f5b81518110156109e95760065f8481526020019081526020015f20600101828281518110610982576109816126cd565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816109c39190612c5c565b5060208201518160010190816109d99190612c5c565b5050508080600101915050610952565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906125df565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490612b4b565b60405180910390fd5b600360065f8381526020019081526020015f20600301541015610b9657600160065f8381526020019081526020015f206003015f828254610b8e9190612b69565b925050819055505b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906125df565b60405180910390fd5b60188285610c349190612b69565b1115610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90612d75565b60405180910390fd5b60188184610c839190612b69565b1115610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612ddd565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060025f820151815f015560208201518160010155604082015181600201556060820151816003015590505050505050565b6002805f0154908060010154908060020154908060030154905084565b5f60065f8381526020019081526020015f20600301549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90612b4b565b60405180910390fd5b5f6002600301546002800154610e1a919061278f565b9050600381610e29919061278f565b825114610e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6290612e45565b60405180910390fd5b5f60065f8581526020019081526020015f2060020190505f5b600260030154811015611113575f5b6002800154811015611105575f8160025f0154610eb09190612b69565b90505f83600260010154610ec49190612b69565b90505f600383601884610ed7919061278f565b610ee19190612b69565b610eeb919061278f565b90505f600385600280015488610f01919061278f565b610f0b9190612b69565b610f15919061278f565b9050888181518110610f2a57610f296126cd565b5b602001015160f81c60f81b87838154610f4290612865565b8110610f5157610f506126cd565b5b815460011615610f6e57905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555088600182610fb49190612b69565b81518110610fc557610fc46126cd565b5b602001015160f81c60f81b87600184610fde9190612b69565b8154610fe990612865565b8110610ff857610ff76126cd565b5b81546001161561101557905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055508860028261105b9190612b69565b8151811061106c5761106b6126cd565b5b602001015160f81c60f81b876002846110859190612b69565b815461109090612865565b811061109f5761109e6126cd565b5b8154600116156110bc57905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f010000000000000000000000000000000000000000000000000000000000000084040217905550505050508080600101915050610e93565b508080600101915050610e84565b50600360065f8681526020019081526020015f2060030154101561115d57600160065f8681526020019081526020015f206003015f8282546111559190612b69565b925050819055505b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e7906125df565b60405180910390fd5b600160149054906101000a900460ff1615611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790612647565b60405180910390fd5b8051825114611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906126af565b60405180910390fd5b5f5b8251811015611393575f8382815181106112a3576112a26126cd565b5b602002602001015190505f8383815181106112c1576112c06126cd565b5b6020026020010151905060065f8381526020019081526020015f206001015f6112ea9190611a0d565b5f5b81518110156113835760065f8481526020019081526020015f2060010182828151811061131c5761131b6126cd565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161135d9190612c5c565b5060208201518160010190816113739190612c5c565b50505080806001019150506112ec565b5050508080600101915050611286565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906125df565b60405180910390fd5b600160149054906101000a900460ff1615611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90612647565b60405180910390fd5b6108ae82106114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090612744565b60405180910390fd5b60036018806114c8919061278f565b6114d2919061278f565b815114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b9061281a565b60405180910390fd5b8060065f8481526020019081526020015f205f0190816115349190612a32565b505050565b60605f60065f8481526020019081526020015f206001018054905011611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612ead565b60405180910390fd5b5f6040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090505f5b60065f8581526020019081526020015f20600101805490508110156116d6578160065f8681526020019081526020015f206001018281548110611615576116146126cd565b5b905f5260205f2090600202015f0160065f8781526020019081526020015f206001018381548110611649576116486126cd565b5b905f5260205f20906002020160010160405160200161166a93929190612ff7565b6040516020818303038152906040529150600160065f8681526020019081526020015f206001018054905061169f9190613054565b8110156116c957816040516020016116b791906130ad565b60405160208183030381529060405291505b80806001019150506115cf565b50806040516020016116e891906130f8565b604051602081830303815290604052905080915050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890612b4b565b60405180910390fd5b5f60065f8581526020019081526020015f2060010190505f5b818054905081101561183d5783805190602001208282815481106117d1576117d06126cd565b5b905f5260205f2090600202015f016040516117ec91906131b9565b604051809103902003611830578282828154811061180d5761180c6126cd565b5b905f5260205f20906002020160010190816118289190612c5c565b5050506118a8565b80806001019150506117aa565b5080604051806040016040528085815260200184815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161188d9190612c5c565b5060208201518160010190816118a39190612c5c565b505050505b505050565b60606108ae82106118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90612744565b60405180910390fd5b6003601880611902919061278f565b61190c919061278f565b60065f8481526020019081526020015f205f01805461192a90612865565b90501461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613219565b60405180910390fd5b60065f8381526020019081526020015f205f01805461198a90612865565b80601f01602080910402602001604051908101604052809291908181526020018280546119b690612865565b8015611a015780601f106119d857610100808354040283529160200191611a01565b820191905f5260205f20905b8154815290600101906020018083116119e457829003601f168201915b50505050509050919050565b5080545f8255600202905f5260205f2090810190611a2b9190611a2e565b50565b5b80821115611a5e575f8082015f611a469190611a62565b600182015f611a559190611a62565b50600201611a2f565b5090565b508054611a6e90612865565b5f825580601f10611a7f5750611a9c565b601f0160209004905f5260205f2090810190611a9b9190611a9f565b5b50565b5b80821115611ab6575f815f905550600101611aa0565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b1582611acf565b810181811067ffffffffffffffff82111715611b3457611b33611adf565b5b80604052505050565b5f611b46611aba565b9050611b528282611b0c565b919050565b5f67ffffffffffffffff821115611b7157611b70611adf565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b611b9881611b86565b8114611ba2575f80fd5b50565b5f81359050611bb381611b8f565b92915050565b5f611bcb611bc684611b57565b611b3d565b90508083825260208201905060208402830185811115611bee57611bed611b82565b5b835b81811015611c175780611c038882611ba5565b845260208401935050602081019050611bf0565b5050509392505050565b5f82601f830112611c3557611c34611acb565b5b8135611c45848260208601611bb9565b91505092915050565b5f67ffffffffffffffff821115611c6857611c67611adf565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff821115611c9757611c96611adf565b5b611ca082611acf565b9050602081019050919050565b828183375f83830152505050565b5f611ccd611cc884611c7d565b611b3d565b905082815260208101848484011115611ce957611ce8611c79565b5b611cf4848285611cad565b509392505050565b5f82601f830112611d1057611d0f611acb565b5b8135611d20848260208601611cbb565b91505092915050565b5f611d3b611d3684611c4e565b611b3d565b90508083825260208201905060208402830185811115611d5e57611d5d611b82565b5b835b81811015611da557803567ffffffffffffffff811115611d8357611d82611acb565b5b808601611d908982611cfc565b85526020850194505050602081019050611d60565b5050509392505050565b5f82601f830112611dc357611dc2611acb565b5b8135611dd3848260208601611d29565b91505092915050565b5f8060408385031215611df257611df1611ac3565b5b5f83013567ffffffffffffffff811115611e0f57611e0e611ac7565b5b611e1b85828601611c21565b925050602083013567ffffffffffffffff811115611e3c57611e3b611ac7565b5b611e4885828601611daf565b9150509250929050565b611e5b81611b86565b82525050565b5f602082019050611e745f830184611e52565b92915050565b5f60208284031215611e8f57611e8e611ac3565b5b5f611e9c84828501611ba5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611ed782611ea5565b611ee18185611eaf565b9350611ef1818560208601611ebf565b611efa81611acf565b840191505092915050565b5f6020820190508181035f830152611f1d8184611ecd565b905092915050565b5f67ffffffffffffffff821115611f3f57611f3e611adf565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611f7257611f71611adf565b5b611f7b82611acf565b9050602081019050919050565b5f611f9a611f9584611f58565b611b3d565b905082815260208101848484011115611fb657611fb5611c79565b5b611fc1848285611cad565b509392505050565b5f82601f830112611fdd57611fdc611acb565b5b8135611fed848260208601611f88565b91505092915050565b5f6040828403121561200b5761200a611f50565b5b6120156040611b3d565b90505f82013567ffffffffffffffff81111561203457612033611f54565b5b61204084828501611fc9565b5f83015250602082013567ffffffffffffffff81111561206357612062611f54565b5b61206f84828501611fc9565b60208301525092915050565b5f61208d61208884611f25565b611b3d565b905080838252602082019050602084028301858111156120b0576120af611b82565b5b835b818110156120f757803567ffffffffffffffff8111156120d5576120d4611acb565b5b8086016120e28982611ff6565b855260208501945050506020810190506120b2565b5050509392505050565b5f82601f83011261211557612114611acb565b5b813561212584826020860161207b565b91505092915050565b5f806040838503121561214457612143611ac3565b5b5f61215185828601611ba5565b925050602083013567ffffffffffffffff81111561217257612171611ac7565b5b61217e85828601612101565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121b182612188565b9050919050565b6121c1816121a7565b81146121cb575f80fd5b50565b5f813590506121dc816121b8565b92915050565b5f602082840312156121f7576121f6611ac3565b5b5f612204848285016121ce565b91505092915050565b5f805f806080858703121561222557612224611ac3565b5b5f61223287828801611ba5565b945050602061224387828801611ba5565b935050604061225487828801611ba5565b925050606061226587828801611ba5565b91505092959194509250565b5f6080820190506122845f830187611e52565b6122916020830186611e52565b61229e6040830185611e52565b6122ab6060830184611e52565b95945050505050565b5f6122be82612188565b9050919050565b6122ce816122b4565b82525050565b5f6020820190506122e75f8301846122c5565b92915050565b5f806040838503121561230357612302611ac3565b5b5f61231085828601611ba5565b925050602083013567ffffffffffffffff81111561233157612330611ac7565b5b61233d85828601611cfc565b9150509250929050565b5f67ffffffffffffffff82111561236157612360611adf565b5b602082029050602081019050919050565b5f61238461237f84612347565b611b3d565b905080838252602082019050602084028301858111156123a7576123a6611b82565b5b835b818110156123ee57803567ffffffffffffffff8111156123cc576123cb611acb565b5b8086016123d98982612101565b855260208501945050506020810190506123a9565b5050509392505050565b5f82601f83011261240c5761240b611acb565b5b813561241c848260208601612372565b91505092915050565b5f806040838503121561243b5761243a611ac3565b5b5f83013567ffffffffffffffff81111561245857612457611ac7565b5b61246485828601611c21565b925050602083013567ffffffffffffffff81111561248557612484611ac7565b5b612491858286016123f8565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f6124bf8261249b565b6124c981856124a5565b93506124d9818560208601611ebf565b6124e281611acf565b840191505092915050565b5f6020820190508181035f83015261250581846124b5565b905092915050565b5f805f6060848603121561252457612523611ac3565b5b5f61253186828701611ba5565b935050602084013567ffffffffffffffff81111561255257612551611ac7565b5b61255e86828701611fc9565b925050604084013567ffffffffffffffff81111561257f5761257e611ac7565b5b61258b86828701611fc9565b9150509250925092565b7f4f6e6c79206465706c6f7965722e0000000000000000000000000000000000005f82015250565b5f6125c9600e836124a5565b91506125d482612595565b602082019050919050565b5f6020820190508181035f8301526125f6816125bd565b9050919050565b7f436f6e7472616374206973206c6f636b65642e000000000000000000000000005f82015250565b5f6126316013836124a5565b915061263c826125fd565b602082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b7f4d69736d617463686564206172726179730000000000000000000000000000005f82015250565b5f6126996011836124a5565b91506126a482612665565b602082019050919050565b5f6020820190508181035f8301526126c68161268d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420746f6b656e496400000000000000000000000000000000005f82015250565b5f61272e600f836124a5565b9150612739826126fa565b602082019050919050565b5f6020820190508181035f83015261275b81612722565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61279982611b86565b91506127a483611b86565b92508282026127b281611b86565b915082820484148315176127c9576127c8612762565b5b5092915050565b7f496e76616c696420706978656c2064617461206c656e677468000000000000005f82015250565b5f6128046019836124a5565b915061280f826127d0565b602082019050919050565b5f6020820190508181035f830152612831816127f8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061287c57607f821691505b60208210810361288f5761288e612838565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826128b6565b6128fb86836128b6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61293661293161292c84611b86565b612913565b611b86565b9050919050565b5f819050919050565b61294f8361291c565b61296361295b8261293d565b8484546128c2565b825550505050565b5f90565b61297761296b565b612982818484612946565b505050565b5b818110156129a55761299a5f8261296f565b600181019050612988565b5050565b601f8211156129ea576129bb81612895565b6129c4846128a7565b810160208510156129d3578190505b6129e76129df856128a7565b830182612987565b50505b505050565b5f82821c905092915050565b5f612a0a5f19846008026129ef565b1980831691505092915050565b5f612a2283836129fb565b9150826002028217905092915050565b612a3b82611ea5565b67ffffffffffffffff811115612a5457612a53611adf565b5b612a5e8254612865565b612a698282856129a9565b5f60209050601f831160018114612a9a575f8415612a88578287015190505b612a928582612a17565b865550612af9565b601f198416612aa886612895565b5f5b82811015612acf57848901518255600182019150602085019450602081019050612aaa565b86831015612aec5784890151612ae8601f8916826129fb565b8355505b6001600288020188555050505b505050505050565b7f4f6e6c79204e4654436f6e74726163742e0000000000000000000000000000005f82015250565b5f612b356011836124a5565b9150612b4082612b01565b602082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b5f612b7382611b86565b9150612b7e83611b86565b9250828201905080821115612b9657612b95612762565b5b92915050565b7f5472616974732063616e6e6f7420626520656d707479000000000000000000005f82015250565b5f612bd06016836124a5565b9150612bdb82612b9c565b602082019050919050565b5f6020820190508181035f830152612bfd81612bc4565b9050919050565b5f819050815f5260205f209050919050565b601f821115612c5757612c2881612c04565b612c31846128a7565b81016020851015612c40578190505b612c54612c4c856128a7565b830182612987565b50505b505050565b612c658261249b565b67ffffffffffffffff811115612c7e57612c7d611adf565b5b612c888254612865565b612c93828285612c16565b5f60209050601f831160018114612cc4575f8415612cb2578287015190505b612cbc8582612a17565b865550612d23565b601f198416612cd286612c04565b5f5b82811015612cf957848901518255600182019150602085019450602081019050612cd4565b86831015612d165784890151612d12601f8916826129fb565b8355505b6001600288020188555050505b505050505050565b7f5769647468206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f612d5f6013836124a5565b9150612d6a82612d2b565b602082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f486569676874206f7574206f6620626f756e64730000000000000000000000005f82015250565b5f612dc76014836124a5565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b7f436f6c6f7273206172726179206c656e677468206d69736d61746368000000005f82015250565b5f612e2f601c836124a5565b9150612e3a82612dfb565b602082019050919050565b5f6020820190508181035f830152612e5c81612e23565b9050919050565b7f547261697473206e6f74207365740000000000000000000000000000000000005f82015250565b5f612e97600e836124a5565b9150612ea282612e63565b602082019050919050565b5f6020820190508181035f830152612ec481612e8b565b9050919050565b5f81905092915050565b5f612edf8261249b565b612ee98185612ecb565b9350612ef9818560208601611ebf565b80840191505092915050565b7f7b2274726169745f74797065223a202200000000000000000000000000000000815250565b5f8154612f3781612865565b612f418186612ecb565b9450600182165f8114612f5b5760018114612f7057612fa2565b60ff1983168652811515820286019350612fa2565b612f7985612c04565b5f5b83811015612f9a57815481890152600182019150602081019050612f7b565b838801955050505b50505092915050565b7f222c202276616c7565223a202200000000000000000000000000000000000000815250565b7f227d000000000000000000000000000000000000000000000000000000000000815250565b5f6130028286612ed5565b915061300d82612f05565b60108201915061301d8285612f2b565b915061302882612fab565b600d820191506130388284612f2b565b915061304382612fd1565b600282019150819050949350505050565b5f61305e82611b86565b915061306983611b86565b925082820390508181111561308157613080612762565b5b92915050565b7f2c00000000000000000000000000000000000000000000000000000000000000815250565b5f6130b88284612ed5565b91506130c382613087565b60018201915081905092915050565b7f5d00000000000000000000000000000000000000000000000000000000000000815250565b5f6131038284612ed5565b915061310e826130d2565b60018201915081905092915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461314581612865565b61314f818661311d565b9450600182165f8114613169576001811461317e576131b0565b60ff19831686528115158202860193506131b0565b61318785613127565b5f5b838110156131a857815481890152600182019150602081019050613189565b838801955050505b50505092915050565b5f6131c48284613139565b915081905092915050565b7f506978656c2064617461206e6f742073657400000000000000000000000000005f82015250565b5f6132036012836124a5565b915061320e826131cf565b602082019050919050565b5f6020820190508181035f830152613230816131f7565b905091905056fea26469706673582212201c7d0eb9d48a6e024ca562971d157d2e244f5965ea2fd118b475317ca450c4bb64736f6c634300081a0033
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063b96a367c116100a0578063d5f087771161006f578063d5f08777146102a3578063dcd83a18146102bf578063e1dc0761146102db578063f6e002ac1461030b578063f80e53ab1461032757610114565b8063b96a367c14610218578063d4cae94514610239578063d56d229d14610269578063d5b959f41461028757610114565b8063753868e3116100e7578063753868e31461019e578063997c51d2146101a8578063a7ccabdf146101c4578063b07f0a41146101e0578063b456666d146101fc57610114565b806302be09cb14610118578063114cccd214610134578063368004ed146101525780633eacc12b1461016e575b5f80fd5b610132600480360381019061012d9190611ddc565b610357565b005b61013c610593565b6040516101499190611e61565b60405180910390f35b61016c60048036038101906101679190611e7a565b610599565b005b61018860048036038101906101839190611e7a565b610674565b6040516101959190611f05565b60405180910390f35b6101a6610718565b005b6101c260048036038101906101bd919061212e565b610811565b005b6101de60048036038101906101d991906121e2565b6109ee565b005b6101fa60048036038101906101f59190611e7a565b610abe565b005b6102166004803603810190610211919061220d565b610b99565b005b610220610d16565b6040516102309493929190612271565b60405180910390f35b610253600480360381019061024e9190611e7a565b610d33565b6040516102609190611e61565b60405180910390f35b610271610d50565b60405161027e91906122d4565b60405180910390f35b6102a1600480360381019061029c91906122ed565b610d75565b005b6102bd60048036038101906102b89190612425565b611163565b005b6102d960048036038101906102d491906122ed565b611398565b005b6102f560048036038101906102f09190611e7a565b611539565b60405161030291906124ed565b60405180910390f35b6103256004803603810190610320919061250d565b611702565b005b610341600480360381019061033c9190611e7a565b6118ad565b60405161034e9190611f05565b60405180910390f35b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103db906125df565b60405180910390fd5b600160149054906101000a900460ff1615610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042b90612647565b60405180910390fd5b8051825114610478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046f906126af565b60405180910390fd5b5f5b825181101561058e575f838281518110610497576104966126cd565b5b602002602001015190505f8383815181106104b5576104b46126cd565b5b602002602001015190506108ae8210610503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fa90612744565b60405180910390fd5b6003601880610512919061278f565b61051c919061278f565b81511461055e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105559061281a565b60405180910390fd5b8060065f8481526020019081526020015f205f01908161057e9190612a32565b505050808060010191505061047a565b505050565b6108ae81565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061f90612b4b565b60405180910390fd5b600360065f8381526020019081526020015f2060030154101561067157600160065f8381526020019081526020015f206003015f8282546106699190612b69565b925050819055505b50565b606060065f8381526020019081526020015f20600201805461069590612865565b80601f01602080910402602001604051908101604052809291908181526020018280546106c190612865565b801561070c5780601f106106e35761010080835404028352916020019161070c565b820191905f5260205f20905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c906125df565b60405180910390fd5b600160149054906101000a900460ff16156107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90612647565b60405180910390fd5b60018060146101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610895906125df565b60405180910390fd5b600160149054906101000a900460ff16156108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612647565b60405180910390fd5b5f815111610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890612be6565b60405180910390fd5b60065f8381526020019081526020015f206001015f6109509190611a0d565b5f5b81518110156109e95760065f8481526020019081526020015f20600101828281518110610982576109816126cd565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0190816109c39190612c5c565b5060208201518160010190816109d99190612c5c565b5050508080600101915050610952565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a72906125df565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4490612b4b565b60405180910390fd5b600360065f8381526020019081526020015f20600301541015610b9657600160065f8381526020019081526020015f206003015f828254610b8e9190612b69565b925050819055505b50565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d906125df565b60405180910390fd5b60188285610c349190612b69565b1115610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90612d75565b60405180910390fd5b60188184610c839190612b69565b1115610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612ddd565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060025f820151815f015560208201518160010155604082015181600201556060820151816003015590505050505050565b6002805f0154908060010154908060020154908060030154905084565b5f60065f8381526020019081526020015f20600301549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90612b4b565b60405180910390fd5b5f6002600301546002800154610e1a919061278f565b9050600381610e29919061278f565b825114610e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6290612e45565b60405180910390fd5b5f60065f8581526020019081526020015f2060020190505f5b600260030154811015611113575f5b6002800154811015611105575f8160025f0154610eb09190612b69565b90505f83600260010154610ec49190612b69565b90505f600383601884610ed7919061278f565b610ee19190612b69565b610eeb919061278f565b90505f600385600280015488610f01919061278f565b610f0b9190612b69565b610f15919061278f565b9050888181518110610f2a57610f296126cd565b5b602001015160f81c60f81b87838154610f4290612865565b8110610f5157610f506126cd565b5b815460011615610f6e57905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f01000000000000000000000000000000000000000000000000000000000000008404021790555088600182610fb49190612b69565b81518110610fc557610fc46126cd565b5b602001015160f81c60f81b87600184610fde9190612b69565b8154610fe990612865565b8110610ff857610ff76126cd565b5b81546001161561101557905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f0100000000000000000000000000000000000000000000000000000000000000840402179055508860028261105b9190612b69565b8151811061106c5761106b6126cd565b5b602001015160f81c60f81b876002846110859190612b69565b815461109090612865565b811061109f5761109e6126cd565b5b8154600116156110bc57905f5260205f2090602091828204019190065b601f036101000a81548160ff021916907f010000000000000000000000000000000000000000000000000000000000000084040217905550505050508080600101915050610e93565b508080600101915050610e84565b50600360065f8681526020019081526020015f2060030154101561115d57600160065f8681526020019081526020015f206003015f8282546111559190612b69565b925050819055505b50505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e7906125df565b60405180910390fd5b600160149054906101000a900460ff1615611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123790612647565b60405180910390fd5b8051825114611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b906126af565b60405180910390fd5b5f5b8251811015611393575f8382815181106112a3576112a26126cd565b5b602002602001015190505f8383815181106112c1576112c06126cd565b5b6020026020010151905060065f8381526020019081526020015f206001015f6112ea9190611a0d565b5f5b81518110156113835760065f8481526020019081526020015f2060010182828151811061131c5761131b6126cd565b5b6020026020010151908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161135d9190612c5c565b5060208201518160010190816113739190612c5c565b50505080806001019150506112ec565b5050508080600101915050611286565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141c906125df565b60405180910390fd5b600160149054906101000a900460ff1615611475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146c90612647565b60405180910390fd5b6108ae82106114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b090612744565b60405180910390fd5b60036018806114c8919061278f565b6114d2919061278f565b815114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150b9061281a565b60405180910390fd5b8060065f8481526020019081526020015f205f0190816115349190612a32565b505050565b60605f60065f8481526020019081526020015f206001018054905011611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b90612ead565b60405180910390fd5b5f6040518060400160405280600181526020017f5b0000000000000000000000000000000000000000000000000000000000000081525090505f5b60065f8581526020019081526020015f20600101805490508110156116d6578160065f8681526020019081526020015f206001018281548110611615576116146126cd565b5b905f5260205f2090600202015f0160065f8781526020019081526020015f206001018381548110611649576116486126cd565b5b905f5260205f20906002020160010160405160200161166a93929190612ff7565b6040516020818303038152906040529150600160065f8681526020019081526020015f206001018054905061169f9190613054565b8110156116c957816040516020016116b791906130ad565b60405160208183030381529060405291505b80806001019150506115cf565b50806040516020016116e891906130f8565b604051602081830303815290604052905080915050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890612b4b565b60405180910390fd5b5f60065f8581526020019081526020015f2060010190505f5b818054905081101561183d5783805190602001208282815481106117d1576117d06126cd565b5b905f5260205f2090600202015f016040516117ec91906131b9565b604051809103902003611830578282828154811061180d5761180c6126cd565b5b905f5260205f20906002020160010190816118289190612c5c565b5050506118a8565b80806001019150506117aa565b5080604051806040016040528085815260200184815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f01908161188d9190612c5c565b5060208201518160010190816118a39190612c5c565b505050505b505050565b60606108ae82106118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90612744565b60405180910390fd5b6003601880611902919061278f565b61190c919061278f565b60065f8481526020019081526020015f205f01805461192a90612865565b90501461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613219565b60405180910390fd5b60065f8381526020019081526020015f205f01805461198a90612865565b80601f01602080910402602001604051908101604052809291908181526020018280546119b690612865565b8015611a015780601f106119d857610100808354040283529160200191611a01565b820191905f5260205f20905b8154815290600101906020018083116119e457829003601f168201915b50505050509050919050565b5080545f8255600202905f5260205f2090810190611a2b9190611a2e565b50565b5b80821115611a5e575f8082015f611a469190611a62565b600182015f611a559190611a62565b50600201611a2f565b5090565b508054611a6e90612865565b5f825580601f10611a7f5750611a9c565b601f0160209004905f5260205f2090810190611a9b9190611a9f565b5b50565b5b80821115611ab6575f815f905550600101611aa0565b5090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b1582611acf565b810181811067ffffffffffffffff82111715611b3457611b33611adf565b5b80604052505050565b5f611b46611aba565b9050611b528282611b0c565b919050565b5f67ffffffffffffffff821115611b7157611b70611adf565b5b602082029050602081019050919050565b5f80fd5b5f819050919050565b611b9881611b86565b8114611ba2575f80fd5b50565b5f81359050611bb381611b8f565b92915050565b5f611bcb611bc684611b57565b611b3d565b90508083825260208201905060208402830185811115611bee57611bed611b82565b5b835b81811015611c175780611c038882611ba5565b845260208401935050602081019050611bf0565b5050509392505050565b5f82601f830112611c3557611c34611acb565b5b8135611c45848260208601611bb9565b91505092915050565b5f67ffffffffffffffff821115611c6857611c67611adf565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff821115611c9757611c96611adf565b5b611ca082611acf565b9050602081019050919050565b828183375f83830152505050565b5f611ccd611cc884611c7d565b611b3d565b905082815260208101848484011115611ce957611ce8611c79565b5b611cf4848285611cad565b509392505050565b5f82601f830112611d1057611d0f611acb565b5b8135611d20848260208601611cbb565b91505092915050565b5f611d3b611d3684611c4e565b611b3d565b90508083825260208201905060208402830185811115611d5e57611d5d611b82565b5b835b81811015611da557803567ffffffffffffffff811115611d8357611d82611acb565b5b808601611d908982611cfc565b85526020850194505050602081019050611d60565b5050509392505050565b5f82601f830112611dc357611dc2611acb565b5b8135611dd3848260208601611d29565b91505092915050565b5f8060408385031215611df257611df1611ac3565b5b5f83013567ffffffffffffffff811115611e0f57611e0e611ac7565b5b611e1b85828601611c21565b925050602083013567ffffffffffffffff811115611e3c57611e3b611ac7565b5b611e4885828601611daf565b9150509250929050565b611e5b81611b86565b82525050565b5f602082019050611e745f830184611e52565b92915050565b5f60208284031215611e8f57611e8e611ac3565b5b5f611e9c84828501611ba5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f611ed782611ea5565b611ee18185611eaf565b9350611ef1818560208601611ebf565b611efa81611acf565b840191505092915050565b5f6020820190508181035f830152611f1d8184611ecd565b905092915050565b5f67ffffffffffffffff821115611f3f57611f3e611adf565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff821115611f7257611f71611adf565b5b611f7b82611acf565b9050602081019050919050565b5f611f9a611f9584611f58565b611b3d565b905082815260208101848484011115611fb657611fb5611c79565b5b611fc1848285611cad565b509392505050565b5f82601f830112611fdd57611fdc611acb565b5b8135611fed848260208601611f88565b91505092915050565b5f6040828403121561200b5761200a611f50565b5b6120156040611b3d565b90505f82013567ffffffffffffffff81111561203457612033611f54565b5b61204084828501611fc9565b5f83015250602082013567ffffffffffffffff81111561206357612062611f54565b5b61206f84828501611fc9565b60208301525092915050565b5f61208d61208884611f25565b611b3d565b905080838252602082019050602084028301858111156120b0576120af611b82565b5b835b818110156120f757803567ffffffffffffffff8111156120d5576120d4611acb565b5b8086016120e28982611ff6565b855260208501945050506020810190506120b2565b5050509392505050565b5f82601f83011261211557612114611acb565b5b813561212584826020860161207b565b91505092915050565b5f806040838503121561214457612143611ac3565b5b5f61215185828601611ba5565b925050602083013567ffffffffffffffff81111561217257612171611ac7565b5b61217e85828601612101565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121b182612188565b9050919050565b6121c1816121a7565b81146121cb575f80fd5b50565b5f813590506121dc816121b8565b92915050565b5f602082840312156121f7576121f6611ac3565b5b5f612204848285016121ce565b91505092915050565b5f805f806080858703121561222557612224611ac3565b5b5f61223287828801611ba5565b945050602061224387828801611ba5565b935050604061225487828801611ba5565b925050606061226587828801611ba5565b91505092959194509250565b5f6080820190506122845f830187611e52565b6122916020830186611e52565b61229e6040830185611e52565b6122ab6060830184611e52565b95945050505050565b5f6122be82612188565b9050919050565b6122ce816122b4565b82525050565b5f6020820190506122e75f8301846122c5565b92915050565b5f806040838503121561230357612302611ac3565b5b5f61231085828601611ba5565b925050602083013567ffffffffffffffff81111561233157612330611ac7565b5b61233d85828601611cfc565b9150509250929050565b5f67ffffffffffffffff82111561236157612360611adf565b5b602082029050602081019050919050565b5f61238461237f84612347565b611b3d565b905080838252602082019050602084028301858111156123a7576123a6611b82565b5b835b818110156123ee57803567ffffffffffffffff8111156123cc576123cb611acb565b5b8086016123d98982612101565b855260208501945050506020810190506123a9565b5050509392505050565b5f82601f83011261240c5761240b611acb565b5b813561241c848260208601612372565b91505092915050565b5f806040838503121561243b5761243a611ac3565b5b5f83013567ffffffffffffffff81111561245857612457611ac7565b5b61246485828601611c21565b925050602083013567ffffffffffffffff81111561248557612484611ac7565b5b612491858286016123f8565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f6124bf8261249b565b6124c981856124a5565b93506124d9818560208601611ebf565b6124e281611acf565b840191505092915050565b5f6020820190508181035f83015261250581846124b5565b905092915050565b5f805f6060848603121561252457612523611ac3565b5b5f61253186828701611ba5565b935050602084013567ffffffffffffffff81111561255257612551611ac7565b5b61255e86828701611fc9565b925050604084013567ffffffffffffffff81111561257f5761257e611ac7565b5b61258b86828701611fc9565b9150509250925092565b7f4f6e6c79206465706c6f7965722e0000000000000000000000000000000000005f82015250565b5f6125c9600e836124a5565b91506125d482612595565b602082019050919050565b5f6020820190508181035f8301526125f6816125bd565b9050919050565b7f436f6e7472616374206973206c6f636b65642e000000000000000000000000005f82015250565b5f6126316013836124a5565b915061263c826125fd565b602082019050919050565b5f6020820190508181035f83015261265e81612625565b9050919050565b7f4d69736d617463686564206172726179730000000000000000000000000000005f82015250565b5f6126996011836124a5565b91506126a482612665565b602082019050919050565b5f6020820190508181035f8301526126c68161268d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420746f6b656e496400000000000000000000000000000000005f82015250565b5f61272e600f836124a5565b9150612739826126fa565b602082019050919050565b5f6020820190508181035f83015261275b81612722565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61279982611b86565b91506127a483611b86565b92508282026127b281611b86565b915082820484148315176127c9576127c8612762565b5b5092915050565b7f496e76616c696420706978656c2064617461206c656e677468000000000000005f82015250565b5f6128046019836124a5565b915061280f826127d0565b602082019050919050565b5f6020820190508181035f830152612831816127f8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061287c57607f821691505b60208210810361288f5761288e612838565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026128f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826128b6565b6128fb86836128b6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61293661293161292c84611b86565b612913565b611b86565b9050919050565b5f819050919050565b61294f8361291c565b61296361295b8261293d565b8484546128c2565b825550505050565b5f90565b61297761296b565b612982818484612946565b505050565b5b818110156129a55761299a5f8261296f565b600181019050612988565b5050565b601f8211156129ea576129bb81612895565b6129c4846128a7565b810160208510156129d3578190505b6129e76129df856128a7565b830182612987565b50505b505050565b5f82821c905092915050565b5f612a0a5f19846008026129ef565b1980831691505092915050565b5f612a2283836129fb565b9150826002028217905092915050565b612a3b82611ea5565b67ffffffffffffffff811115612a5457612a53611adf565b5b612a5e8254612865565b612a698282856129a9565b5f60209050601f831160018114612a9a575f8415612a88578287015190505b612a928582612a17565b865550612af9565b601f198416612aa886612895565b5f5b82811015612acf57848901518255600182019150602085019450602081019050612aaa565b86831015612aec5784890151612ae8601f8916826129fb565b8355505b6001600288020188555050505b505050505050565b7f4f6e6c79204e4654436f6e74726163742e0000000000000000000000000000005f82015250565b5f612b356011836124a5565b9150612b4082612b01565b602082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b5f612b7382611b86565b9150612b7e83611b86565b9250828201905080821115612b9657612b95612762565b5b92915050565b7f5472616974732063616e6e6f7420626520656d707479000000000000000000005f82015250565b5f612bd06016836124a5565b9150612bdb82612b9c565b602082019050919050565b5f6020820190508181035f830152612bfd81612bc4565b9050919050565b5f819050815f5260205f209050919050565b601f821115612c5757612c2881612c04565b612c31846128a7565b81016020851015612c40578190505b612c54612c4c856128a7565b830182612987565b50505b505050565b612c658261249b565b67ffffffffffffffff811115612c7e57612c7d611adf565b5b612c888254612865565b612c93828285612c16565b5f60209050601f831160018114612cc4575f8415612cb2578287015190505b612cbc8582612a17565b865550612d23565b601f198416612cd286612c04565b5f5b82811015612cf957848901518255600182019150602085019450602081019050612cd4565b86831015612d165784890151612d12601f8916826129fb565b8355505b6001600288020188555050505b505050505050565b7f5769647468206f7574206f6620626f756e6473000000000000000000000000005f82015250565b5f612d5f6013836124a5565b9150612d6a82612d2b565b602082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b7f486569676874206f7574206f6620626f756e64730000000000000000000000005f82015250565b5f612dc76014836124a5565b9150612dd282612d93565b602082019050919050565b5f6020820190508181035f830152612df481612dbb565b9050919050565b7f436f6c6f7273206172726179206c656e677468206d69736d61746368000000005f82015250565b5f612e2f601c836124a5565b9150612e3a82612dfb565b602082019050919050565b5f6020820190508181035f830152612e5c81612e23565b9050919050565b7f547261697473206e6f74207365740000000000000000000000000000000000005f82015250565b5f612e97600e836124a5565b9150612ea282612e63565b602082019050919050565b5f6020820190508181035f830152612ec481612e8b565b9050919050565b5f81905092915050565b5f612edf8261249b565b612ee98185612ecb565b9350612ef9818560208601611ebf565b80840191505092915050565b7f7b2274726169745f74797065223a202200000000000000000000000000000000815250565b5f8154612f3781612865565b612f418186612ecb565b9450600182165f8114612f5b5760018114612f7057612fa2565b60ff1983168652811515820286019350612fa2565b612f7985612c04565b5f5b83811015612f9a57815481890152600182019150602081019050612f7b565b838801955050505b50505092915050565b7f222c202276616c7565223a202200000000000000000000000000000000000000815250565b7f227d000000000000000000000000000000000000000000000000000000000000815250565b5f6130028286612ed5565b915061300d82612f05565b60108201915061301d8285612f2b565b915061302882612fab565b600d820191506130388284612f2b565b915061304382612fd1565b600282019150819050949350505050565b5f61305e82611b86565b915061306983611b86565b925082820390508181111561308157613080612762565b5b92915050565b7f2c00000000000000000000000000000000000000000000000000000000000000815250565b5f6130b88284612ed5565b91506130c382613087565b60018201915081905092915050565b7f5d00000000000000000000000000000000000000000000000000000000000000815250565b5f6131038284612ed5565b915061310e826130d2565b60018201915081905092915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f815461314581612865565b61314f818661311d565b9450600182165f8114613169576001811461317e576131b0565b60ff19831686528115158202860193506131b0565b61318785613127565b5f5b838110156131a857815481890152600182019150602081019050613189565b838801955050505b50505092915050565b5f6131c48284613139565b915081905092915050565b7f506978656c2064617461206e6f742073657400000000000000000000000000005f82015250565b5f6132036012836124a5565b915061320e826131cf565b602082019050919050565b5f6020820190508181035f830152613230816131f7565b905091905056fea26469706673582212201c7d0eb9d48a6e024ca562971d157d2e244f5965ea2fd118b475317ca450c4bb64736f6c634300081a0033
Deployed Bytecode Sourcemap
1339:6870:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3525:654;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1623:40;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7790:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7643:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3049:95;;;:::i;:::-;;4187:358;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2524:128;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7941:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2660:381;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1670:31;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;8096:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1411:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:915;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4553:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3152:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5130:786;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7172:461;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5924:318;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3525:654;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:14:::1;;;;;;;;;;;2386:15;2378:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3706:14:::2;:21;3687:8;:15;:40;3679:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3765:9;3760:412;3784:8;:15;3780:1;:19;3760:412;;;3821:15;3839:8;3848:1;3839:11;;;;;;;;:::i;:::-;;;;;;;;3821:29;;3865:22;3890:14;3905:1;3890:17;;;;;;;;:::i;:::-;;;;;;;;3865:42;;1659:4;3930:7;:19;3922:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1615:1;1535:2;::::0;1587:25:::2;;;;:::i;:::-;:29;;;;:::i;:::-;4010:9;:16;:35;3984:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;4151:9;4121:8;:17;4130:7;4121:17;;;;;;;;;;;:27;;:39;;;;;;:::i;:::-;;3806:366;;3801:3;;;;;;;3760:412;;;;3525:654:::0;;:::o;1623:40::-;1659:4;1623:40;:::o;7790:143::-;2174:11;;;;;;;;;;;2160:25;;:10;:25;;;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7884:1:::1;7861:8;:17;7870:7;7861:17;;;;;;;;;;;:20;;;:24;7858:67;;;7924:1;7900:8;:17;7909:7;7900:17;;;;;;;;;;;:20;;;:25;;;;;;;:::i;:::-;;;;;;;;7858:67;7790:143:::0;:::o;7643:139::-;7710:12;7742:8;:17;7751:7;7742:17;;;;;;;;;;;:32;;7735:39;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7643:139;;;:::o;3049:95::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:14:::1;;;;;;;;;;;2386:15;2378:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;3132:4:::2;3115:14:::0;::::2;:21;;;;;;;;;;;;;;;;;;3049:95::o:0;4187:358::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:14:::1;;;;;;;;;;;2386:15;2378:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;4346:1:::2;4330:6;:13;:17;4322:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;4392:8;:17;4401:7;4392:17;;;;;;;;;;;:24;;;4385:31;;;;:::i;:::-;4432:9;4427:111;4451:6;:13;4447:1;:17;4427:111;;;4486:8;:17;4495:7;4486:17;;;;;;;;;;;:24;;4516:6;4523:1;4516:9;;;;;;;;:::i;:::-;;;;;;;;4486:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;4466:3;;;;;;;4427:111;;;;4187:358:::0;;:::o;2524:128::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2628:15:::1;2606:11;;:38;;;;;;;;;;;;;;;;;;2524:128:::0;:::o;7941:147::-;2174:11;;;;;;;;;;;2160:25;;:10;:25;;;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;8039:1:::1;8016:8;:17;8025:7;8016:17;;;;;;;;;;;:20;;;:24;8013:67;;;8079:1;8055:8;:17;8064:7;8055:17;;;;;;;;;;;:20;;;:25;;;;;;;:::i;:::-;;;;;;;;8013:67;7941:147:::0;:::o;2660:381::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1535:2:::1;2847:5;2838:6;:14;;;;:::i;:::-;:29;;2830:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;1535:2;2919:6;2910;:15;;;;:::i;:::-;:30;;2902:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;2990:43;;;;;;;;3003:6;2990:43;;;;3011:6;2990:43;;;;3019:5;2990:43;;;;3026:6;2990:43;;::::0;2976:11:::1;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2660:381:::0;;;;:::o;1670:31::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8096:110::-;8151:7;8178:8;:17;8187:7;8178:17;;;;;;;;;;;:20;;;8171:27;;8096:110;;;:::o;1411:34::-;;;;;;;;;;;;;:::o;6249:915::-;2174:11;;;;;;;;;;;2160:25;;:10;:25;;;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6341:12:::1;6376:11;:18;;;6356:11;:17:::0;::::1;;:38;;;;:::i;:::-;6341:53;;6433:1;6426:4;:8;;;;:::i;:::-;6409:6;:13;:25;6401:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6476:20;6499:8;:17;6508:7;6499:17;;;;;;;;;;;:32;;6476:55;;6545:11;6540:544;6568:11;:18;;;6562:3;:24;6540:544;;;6611:11;6606:471;6634:11;:17:::0;::::1;;6628:3;:23;6606:471;;;6675:9;6708:3;6687:11;:18;;;:24;;;;:::i;:::-;6675:36;;6726:9;6759:3;6738:11;:18;;;:24;;;;:::i;:::-;6726:36;;6777:18;6813:1;6808;6803:2;6799:1;:6;;;;:::i;:::-;:10;;;;:::i;:::-;6798:16;;;;:::i;:::-;6777:37;;6829:18;6884:1;6877:3;6857:11;:17:::0;::::1;;6851:3;:23;;;;:::i;:::-;:29;;;;:::i;:::-;6850:35;;;;:::i;:::-;6829:56;;6923:6;6930:10;6923:18;;;;;;;;:::i;:::-;;;;;;;;;;6902:6;6909:10;6902:18;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;6981:6;7001:1;6988:10;:14;;;;:::i;:::-;6981:22;;;;;;;;:::i;:::-;;;;;;;;;;6956:6;6976:1;6963:10;:14;;;;:::i;:::-;6956:22;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;;;7043:6;7063:1;7050:10;:14;;;;:::i;:::-;7043:22;;;;;;;;:::i;:::-;;;;;;;;;;7018:6;7038:1;7025:10;:14;;;;:::i;:::-;7018:22;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;;;6660:417;;;;6653:5;;;;;;;6606:471;;;;6588:5;;;;;;;6540:544;;;;7119:1;7096:8;:17;7105:7;7096:17;;;;;;;;;;;:20;;;:24;7093:67;;;7159:1;7135:8;:17;7144:7;7135:17;;;;;;;;;;;:20;;;:25;;;;;;;:::i;:::-;;;;;;;;7093:67;6334:830;;6249:915:::0;;:::o;4553:569::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:14:::1;;;;;;;;;;;2386:15;2378:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;4730:11:::2;:18;4711:8;:15;:37;4703:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4786:9;4781:334;4805:8;:15;4801:1;:19;4781:334;;;4842:15;4860:8;4869:1;4860:11;;;;;;;;:::i;:::-;;;;;;;;4842:29;;4886:21;4910:11;4922:1;4910:14;;;;;;;;:::i;:::-;;;;;;;;4886:38;;4946:8;:17;4955:7;4946:17;;;;;;;;;;;:24;;;4939:31;;;;:::i;:::-;4990:9;4985:119;5009:6;:13;5005:1;:17;4985:119;;;5048:8;:17;5057:7;5048:17;;;;;;;;;;;:24;;5078:6;5085:1;5078:9;;;;;;;;:::i;:::-;;;;;;;;5048:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;5024:3;;;;;;;4985:119;;;;4827:288;;4822:3;;;;;;;4781:334;;;;4553:569:::0;;:::o;3152:365::-;2292:8;;;;;;;;;;2278:22;;:10;:22;;;2270:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2387:14:::1;;;;;;;;;;;2386:15;2378:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1659:4:::2;3299:7;:19;3291:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1615:1;1535:2;::::0;1587:25:::2;;;;:::i;:::-;:29;;;;:::i;:::-;3371:9;:16;:35;3349:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3500:9;3470:8;:17;3479:7;3470:17;;;;;;;;;;;:27;;:39;;;;;;:::i;:::-;;3152:365:::0;;:::o;5130:786::-;5189:13;5257:1;5223:8;:17;5232:7;5223:17;;;;;;;;;;;:24;;:31;;;;:35;5215:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5288:24;:30;;;;;;;;;;;;;;;;;;;5334:9;5329:498;5353:8;:17;5362:7;5353:17;;;;;;;;;;;:24;;:31;;;;5349:1;:35;5329:498;;;5451:10;5517:8;:17;5526:7;5517:17;;;;;;;;;;;:24;;5542:1;5517:27;;;;;;;;:::i;:::-;;;;;;;;;;;;:37;;5607:8;:17;5616:7;5607:17;;;;;;;;;;;:24;;5632:1;5607:27;;;;;;;;:::i;:::-;;;;;;;;;;;;:33;;5419:259;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5406:272;;5735:1;5701:8;:17;5710:7;5701:17;;;;;;;;;;;:24;;:31;;;;:35;;;;:::i;:::-;5697:1;:39;5693:123;;;5784:10;5770:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;5757:43;;5693:123;5386:3;;;;;;;5329:498;;;;5864:10;5850:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;5837:43;;5898:10;5891:17;;;5130:786;;;:::o;7172:461::-;2174:11;;;;;;;;;;;2160:25;;:10;:25;;;2152:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;7292:22:::1;7317:8;:17;7326:7;7317:17;;;;;;;;;;;:24;;7292:49;;7357:9;7352:227;7376:6;:13;;;;7372:1;:17;7352:227;;;7472:9;7456:27;;;;;;7431:6;7438:1;7431:9;;;;;;;;:::i;:::-;;;;;;;;;;;;:19;;7415:37;;;;;;:::i;:::-;;;;;;;;:68:::0;7411:157:::1;;7522:5;7504:6;7511:1;7504:9;;;;;;;;:::i;:::-;;;;;;;;;;;;:15;;:23;;;;;;:::i;:::-;;7546:7;;;;7411:157;7391:3;;;;;;;7352:227;;;;7589:6;7601:23;;;;;;;;7607:9;7601:23;;;;7618:5;7601:23;;::::0;7589:36:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;7281:352;2218:1;7172:461:::0;;;:::o;5924:318::-;5985:12;1659:4;6018:7;:19;6010:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;1615:1;1535:2;;1587:25;;;;:::i;:::-;:29;;;;:::i;:::-;6090:8;:17;6099:7;6090:17;;;;;;;;;;;:27;;:34;;;;;:::i;:::-;;;:53;6068:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;6207:8;:17;6216:7;6207:17;;;;;;;;;;;:27;;6200:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5924:318;;;:::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:118::-;7174:24;7192:5;7174:24;:::i;:::-;7169:3;7162:37;7087:118;;:::o;7211:222::-;7304:4;7342:2;7331:9;7327:18;7319:26;;7355:71;7423:1;7412:9;7408:17;7399:6;7355:71;:::i;:::-;7211:222;;;;:::o;7439:329::-;7498:6;7547:2;7535:9;7526:7;7522:23;7518:32;7515:119;;;7553:79;;:::i;:::-;7515:119;7673:1;7698:53;7743:7;7734:6;7723:9;7719:22;7698:53;:::i;:::-;7688:63;;7644:117;7439:329;;;;:::o;7774:98::-;7825:6;7859:5;7853:12;7843:22;;7774:98;;;:::o;7878:168::-;7961:11;7995:6;7990:3;7983:19;8035:4;8030:3;8026:14;8011:29;;7878:168;;;;:::o;8052:139::-;8141:6;8136:3;8131;8125:23;8182:1;8173:6;8168:3;8164:16;8157:27;8052:139;;;:::o;8197:373::-;8283:3;8311:38;8343:5;8311:38;:::i;:::-;8365:70;8428:6;8423:3;8365:70;:::i;:::-;8358:77;;8444:65;8502:6;8497:3;8490:4;8483:5;8479:16;8444:65;:::i;:::-;8534:29;8556:6;8534:29;:::i;:::-;8529:3;8525:39;8518:46;;8287:283;8197:373;;;;:::o;8576:309::-;8687:4;8725:2;8714:9;8710:18;8702:26;;8774:9;8768:4;8764:20;8760:1;8749:9;8745:17;8738:47;8802:76;8873:4;8864:6;8802:76;:::i;:::-;8794:84;;8576:309;;;;:::o;8891:332::-;8989:4;9079:18;9071:6;9068:30;9065:56;;;9101:18;;:::i;:::-;9065:56;9151:4;9143:6;9139:17;9131:25;;9211:4;9205;9201:15;9193:23;;8891:332;;;:::o;9229:117::-;9338:1;9335;9328:12;9352:117;9461:1;9458;9451:12;9475:308;9537:4;9627:18;9619:6;9616:30;9613:56;;;9649:18;;:::i;:::-;9613:56;9687:29;9709:6;9687:29;:::i;:::-;9679:37;;9771:4;9765;9761:15;9753:23;;9475:308;;;:::o;9789:425::-;9867:5;9892:66;9908:49;9950:6;9908:49;:::i;:::-;9892:66;:::i;:::-;9883:75;;9981:6;9974:5;9967:21;10019:4;10012:5;10008:16;10057:3;10048:6;10043:3;10039:16;10036:25;10033:112;;;10064:79;;:::i;:::-;10033:112;10154:54;10201:6;10196:3;10191;10154:54;:::i;:::-;9873:341;9789:425;;;;;:::o;10234:340::-;10290:5;10339:3;10332:4;10324:6;10320:17;10316:27;10306:122;;10347:79;;:::i;:::-;10306:122;10464:6;10451:20;10489:79;10564:3;10556:6;10549:4;10541:6;10537:17;10489:79;:::i;:::-;10480:88;;10296:278;10234:340;;;;:::o;10616:916::-;10686:5;10730:4;10718:9;10713:3;10709:19;10705:30;10702:117;;;10738:79;;:::i;:::-;10702:117;10837:21;10853:4;10837:21;:::i;:::-;10828:30;;10950:1;10939:9;10935:17;10922:31;10980:18;10972:6;10969:30;10966:117;;;11002:79;;:::i;:::-;10966:117;11122:59;11177:3;11168:6;11157:9;11153:22;11122:59;:::i;:::-;11115:4;11108:5;11104:16;11097:85;10868:325;11281:2;11270:9;11266:18;11253:32;11312:18;11304:6;11301:30;11298:117;;;11334:79;;:::i;:::-;11298:117;11454:59;11509:3;11500:6;11489:9;11485:22;11454:59;:::i;:::-;11447:4;11440:5;11436:16;11429:85;11203:322;10616:916;;;;:::o;11576:978::-;11693:5;11718:102;11734:85;11812:6;11734:85;:::i;:::-;11718:102;:::i;:::-;11709:111;;11840:5;11869:6;11862:5;11855:21;11903:4;11896:5;11892:16;11885:23;;11956:4;11948:6;11944:17;11936:6;11932:30;11985:3;11977:6;11974:15;11971:122;;;12004:79;;:::i;:::-;11971:122;12119:6;12102:446;12136:6;12131:3;12128:15;12102:446;;;12225:3;12212:17;12261:18;12248:11;12245:35;12242:122;;;12283:79;;:::i;:::-;12242:122;12407:11;12399:6;12395:24;12445:58;12499:3;12487:10;12445:58;:::i;:::-;12440:3;12433:71;12533:4;12528:3;12524:14;12517:21;;12178:370;;12162:4;12157:3;12153:14;12146:21;;12102:446;;;12106:21;11699:855;;11576:978;;;;;:::o;12598:412::-;12690:5;12739:3;12732:4;12724:6;12720:17;12716:27;12706:122;;12747:79;;:::i;:::-;12706:122;12864:6;12851:20;12889:115;13000:3;12992:6;12985:4;12977:6;12973:17;12889:115;:::i;:::-;12880:124;;12696:314;12598:412;;;;:::o;13016:726::-;13130:6;13138;13187:2;13175:9;13166:7;13162:23;13158:32;13155:119;;;13193:79;;:::i;:::-;13155:119;13313:1;13338:53;13383:7;13374:6;13363:9;13359:22;13338:53;:::i;:::-;13328:63;;13284:117;13468:2;13457:9;13453:18;13440:32;13499:18;13491:6;13488:30;13485:117;;;13521:79;;:::i;:::-;13485:117;13626:99;13717:7;13708:6;13697:9;13693:22;13626:99;:::i;:::-;13616:109;;13411:324;13016:726;;;;;:::o;13748:126::-;13785:7;13825:42;13818:5;13814:54;13803:65;;13748:126;;;:::o;13880:96::-;13917:7;13946:24;13964:5;13946:24;:::i;:::-;13935:35;;13880:96;;;:::o;13982:122::-;14055:24;14073:5;14055:24;:::i;:::-;14048:5;14045:35;14035:63;;14094:1;14091;14084:12;14035:63;13982:122;:::o;14110:139::-;14156:5;14194:6;14181:20;14172:29;;14210:33;14237:5;14210:33;:::i;:::-;14110:139;;;;:::o;14255:329::-;14314:6;14363:2;14351:9;14342:7;14338:23;14334:32;14331:119;;;14369:79;;:::i;:::-;14331:119;14489:1;14514:53;14559:7;14550:6;14539:9;14535:22;14514:53;:::i;:::-;14504:63;;14460:117;14255:329;;;;:::o;14590:765::-;14676:6;14684;14692;14700;14749:3;14737:9;14728:7;14724:23;14720:33;14717:120;;;14756:79;;:::i;:::-;14717:120;14876:1;14901:53;14946:7;14937:6;14926:9;14922:22;14901:53;:::i;:::-;14891:63;;14847:117;15003:2;15029:53;15074:7;15065:6;15054:9;15050:22;15029:53;:::i;:::-;15019:63;;14974:118;15131:2;15157:53;15202:7;15193:6;15182:9;15178:22;15157:53;:::i;:::-;15147:63;;15102:118;15259:2;15285:53;15330:7;15321:6;15310:9;15306:22;15285:53;:::i;:::-;15275:63;;15230:118;14590:765;;;;;;;:::o;15361:553::-;15538:4;15576:3;15565:9;15561:19;15553:27;;15590:71;15658:1;15647:9;15643:17;15634:6;15590:71;:::i;:::-;15671:72;15739:2;15728:9;15724:18;15715:6;15671:72;:::i;:::-;15753;15821:2;15810:9;15806:18;15797:6;15753:72;:::i;:::-;15835;15903:2;15892:9;15888:18;15879:6;15835:72;:::i;:::-;15361:553;;;;;;;:::o;15920:104::-;15965:7;15994:24;16012:5;15994:24;:::i;:::-;15983:35;;15920:104;;;:::o;16030:142::-;16133:32;16159:5;16133:32;:::i;:::-;16128:3;16121:45;16030:142;;:::o;16178:254::-;16287:4;16325:2;16314:9;16310:18;16302:26;;16338:87;16422:1;16411:9;16407:17;16398:6;16338:87;:::i;:::-;16178:254;;;;:::o;16438:652::-;16515:6;16523;16572:2;16560:9;16551:7;16547:23;16543:32;16540:119;;;16578:79;;:::i;:::-;16540:119;16698:1;16723:53;16768:7;16759:6;16748:9;16744:22;16723:53;:::i;:::-;16713:63;;16669:117;16853:2;16842:9;16838:18;16825:32;16884:18;16876:6;16873:30;16870:117;;;16906:79;;:::i;:::-;16870:117;17011:62;17065:7;17056:6;17045:9;17041:22;17011:62;:::i;:::-;17001:72;;16796:287;16438:652;;;;;:::o;17096:357::-;17219:4;17309:18;17301:6;17298:30;17295:56;;;17331:18;;:::i;:::-;17295:56;17381:4;17373:6;17369:17;17361:25;;17441:4;17435;17431:15;17423:23;;17096:357;;;:::o;17499:1053::-;17641:5;17666:127;17682:110;17785:6;17682:110;:::i;:::-;17666:127;:::i;:::-;17657:136;;17813:5;17842:6;17835:5;17828:21;17876:4;17869:5;17865:16;17858:23;;17929:4;17921:6;17917:17;17909:6;17905:30;17958:3;17950:6;17947:15;17944:122;;;17977:79;;:::i;:::-;17944:122;18092:6;18075:471;18109:6;18104:3;18101:15;18075:471;;;18198:3;18185:17;18234:18;18221:11;18218:35;18215:122;;;18256:79;;:::i;:::-;18215:122;18380:11;18372:6;18368:24;18418:83;18497:3;18485:10;18418:83;:::i;:::-;18413:3;18406:96;18531:4;18526:3;18522:14;18515:21;;18151:395;;18135:4;18130:3;18126:14;18119:21;;18075:471;;;18079:21;17647:905;;17499:1053;;;;;:::o;18598:462::-;18715:5;18764:3;18757:4;18749:6;18745:17;18741:27;18731:122;;18772:79;;:::i;:::-;18731:122;18889:6;18876:20;18914:140;19050:3;19042:6;19035:4;19027:6;19023:17;18914:140;:::i;:::-;18905:149;;18721:339;18598:462;;;;:::o;19066:986::-;19230:6;19238;19287:2;19275:9;19266:7;19262:23;19258:32;19255:119;;;19293:79;;:::i;:::-;19255:119;19441:1;19430:9;19426:17;19413:31;19471:18;19463:6;19460:30;19457:117;;;19493:79;;:::i;:::-;19457:117;19598:78;19668:7;19659:6;19648:9;19644:22;19598:78;:::i;:::-;19588:88;;19384:302;19753:2;19742:9;19738:18;19725:32;19784:18;19776:6;19773:30;19770:117;;;19806:79;;:::i;:::-;19770:117;19911:124;20027:7;20018:6;20007:9;20003:22;19911:124;:::i;:::-;19901:134;;19696:349;19066:986;;;;;:::o;20058:99::-;20110:6;20144:5;20138:12;20128:22;;20058:99;;;:::o;20163:169::-;20247:11;20281:6;20276:3;20269:19;20321:4;20316:3;20312:14;20297:29;;20163:169;;;;:::o;20338:377::-;20426:3;20454:39;20487:5;20454:39;:::i;:::-;20509:71;20573:6;20568:3;20509:71;:::i;:::-;20502:78;;20589:65;20647:6;20642:3;20635:4;20628:5;20624:16;20589:65;:::i;:::-;20679:29;20701:6;20679:29;:::i;:::-;20674:3;20670:39;20663:46;;20430:285;20338:377;;;;:::o;20721:313::-;20834:4;20872:2;20861:9;20857:18;20849:26;;20921:9;20915:4;20911:20;20907:1;20896:9;20892:17;20885:47;20949:78;21022:4;21013:6;20949:78;:::i;:::-;20941:86;;20721:313;;;;:::o;21040:979::-;21137:6;21145;21153;21202:2;21190:9;21181:7;21177:23;21173:32;21170:119;;;21208:79;;:::i;:::-;21170:119;21328:1;21353:53;21398:7;21389:6;21378:9;21374:22;21353:53;:::i;:::-;21343:63;;21299:117;21483:2;21472:9;21468:18;21455:32;21514:18;21506:6;21503:30;21500:117;;;21536:79;;:::i;:::-;21500:117;21641:63;21696:7;21687:6;21676:9;21672:22;21641:63;:::i;:::-;21631:73;;21426:288;21781:2;21770:9;21766:18;21753:32;21812:18;21804:6;21801:30;21798:117;;;21834:79;;:::i;:::-;21798:117;21939:63;21994:7;21985:6;21974:9;21970:22;21939:63;:::i;:::-;21929:73;;21724:288;21040:979;;;;;:::o;22025:164::-;22165:16;22161:1;22153:6;22149:14;22142:40;22025:164;:::o;22195:366::-;22337:3;22358:67;22422:2;22417:3;22358:67;:::i;:::-;22351:74;;22434:93;22523:3;22434:93;:::i;:::-;22552:2;22547:3;22543:12;22536:19;;22195:366;;;:::o;22567:419::-;22733:4;22771:2;22760:9;22756:18;22748:26;;22820:9;22814:4;22810:20;22806:1;22795:9;22791:17;22784:47;22848:131;22974:4;22848:131;:::i;:::-;22840:139;;22567:419;;;:::o;22992:169::-;23132:21;23128:1;23120:6;23116:14;23109:45;22992:169;:::o;23167:366::-;23309:3;23330:67;23394:2;23389:3;23330:67;:::i;:::-;23323:74;;23406:93;23495:3;23406:93;:::i;:::-;23524:2;23519:3;23515:12;23508:19;;23167:366;;;:::o;23539:419::-;23705:4;23743:2;23732:9;23728:18;23720:26;;23792:9;23786:4;23782:20;23778:1;23767:9;23763:17;23756:47;23820:131;23946:4;23820:131;:::i;:::-;23812:139;;23539:419;;;:::o;23964:167::-;24104:19;24100:1;24092:6;24088:14;24081:43;23964:167;:::o;24137:366::-;24279:3;24300:67;24364:2;24359:3;24300:67;:::i;:::-;24293:74;;24376:93;24465:3;24376:93;:::i;:::-;24494:2;24489:3;24485:12;24478:19;;24137:366;;;:::o;24509:419::-;24675:4;24713:2;24702:9;24698:18;24690:26;;24762:9;24756:4;24752:20;24748:1;24737:9;24733:17;24726:47;24790:131;24916:4;24790:131;:::i;:::-;24782:139;;24509:419;;;:::o;24934:180::-;24982:77;24979:1;24972:88;25079:4;25076:1;25069:15;25103:4;25100:1;25093:15;25120:165;25260:17;25256:1;25248:6;25244:14;25237:41;25120:165;:::o;25291:366::-;25433:3;25454:67;25518:2;25513:3;25454:67;:::i;:::-;25447:74;;25530:93;25619:3;25530:93;:::i;:::-;25648:2;25643:3;25639:12;25632:19;;25291:366;;;:::o;25663:419::-;25829:4;25867:2;25856:9;25852:18;25844:26;;25916:9;25910:4;25906:20;25902:1;25891:9;25887:17;25880:47;25944:131;26070:4;25944:131;:::i;:::-;25936:139;;25663:419;;;:::o;26088:180::-;26136:77;26133:1;26126:88;26233:4;26230:1;26223:15;26257:4;26254:1;26247:15;26274:410;26314:7;26337:20;26355:1;26337:20;:::i;:::-;26332:25;;26371:20;26389:1;26371:20;:::i;:::-;26366:25;;26426:1;26423;26419:9;26448:30;26466:11;26448:30;:::i;:::-;26437:41;;26627:1;26618:7;26614:15;26611:1;26608:22;26588:1;26581:9;26561:83;26538:139;;26657:18;;:::i;:::-;26538:139;26322:362;26274:410;;;;:::o;26690:175::-;26830:27;26826:1;26818:6;26814:14;26807:51;26690:175;:::o;26871:366::-;27013:3;27034:67;27098:2;27093:3;27034:67;:::i;:::-;27027:74;;27110:93;27199:3;27110:93;:::i;:::-;27228:2;27223:3;27219:12;27212:19;;26871:366;;;:::o;27243:419::-;27409:4;27447:2;27436:9;27432:18;27424:26;;27496:9;27490:4;27486:20;27482:1;27471:9;27467:17;27460:47;27524:131;27650:4;27524:131;:::i;:::-;27516:139;;27243:419;;;:::o;27668:180::-;27716:77;27713:1;27706:88;27813:4;27810:1;27803:15;27837:4;27834:1;27827:15;27854:320;27898:6;27935:1;27929:4;27925:12;27915:22;;27982:1;27976:4;27972:12;28003:18;27993:81;;28059:4;28051:6;28047:17;28037:27;;27993:81;28121:2;28113:6;28110:14;28090:18;28087:38;28084:84;;28140:18;;:::i;:::-;28084:84;27905:269;27854:320;;;:::o;28180:140::-;28228:4;28251:3;28243:11;;28274:3;28271:1;28264:14;28308:4;28305:1;28295:18;28287:26;;28180:140;;;:::o;28326:93::-;28363:6;28410:2;28405;28398:5;28394:14;28390:23;28380:33;;28326:93;;;:::o;28425:107::-;28469:8;28519:5;28513:4;28509:16;28488:37;;28425:107;;;;:::o;28538:393::-;28607:6;28657:1;28645:10;28641:18;28680:97;28710:66;28699:9;28680:97;:::i;:::-;28798:39;28828:8;28817:9;28798:39;:::i;:::-;28786:51;;28870:4;28866:9;28859:5;28855:21;28846:30;;28919:4;28909:8;28905:19;28898:5;28895:30;28885:40;;28614:317;;28538:393;;;;;:::o;28937:60::-;28965:3;28986:5;28979:12;;28937:60;;;:::o;29003:142::-;29053:9;29086:53;29104:34;29113:24;29131:5;29113:24;:::i;:::-;29104:34;:::i;:::-;29086:53;:::i;:::-;29073:66;;29003:142;;;:::o;29151:75::-;29194:3;29215:5;29208:12;;29151:75;;;:::o;29232:269::-;29342:39;29373:7;29342:39;:::i;:::-;29403:91;29452:41;29476:16;29452:41;:::i;:::-;29444:6;29437:4;29431:11;29403:91;:::i;:::-;29397:4;29390:105;29308:193;29232:269;;;:::o;29507:73::-;29552:3;29507:73;:::o;29586:189::-;29663:32;;:::i;:::-;29704:65;29762:6;29754;29748:4;29704:65;:::i;:::-;29639:136;29586:189;;:::o;29781:186::-;29841:120;29858:3;29851:5;29848:14;29841:120;;;29912:39;29949:1;29942:5;29912:39;:::i;:::-;29885:1;29878:5;29874:13;29865:22;;29841:120;;;29781:186;;:::o;29973:541::-;30073:2;30068:3;30065:11;30062:445;;;30107:37;30138:5;30107:37;:::i;:::-;30190:29;30208:10;30190:29;:::i;:::-;30180:8;30176:44;30373:2;30361:10;30358:18;30355:49;;;30394:8;30379:23;;30355:49;30417:80;30473:22;30491:3;30473:22;:::i;:::-;30463:8;30459:37;30446:11;30417:80;:::i;:::-;30077:430;;30062:445;29973:541;;;:::o;30520:117::-;30574:8;30624:5;30618:4;30614:16;30593:37;;30520:117;;;;:::o;30643:169::-;30687:6;30720:51;30768:1;30764:6;30756:5;30753:1;30749:13;30720:51;:::i;:::-;30716:56;30801:4;30795;30791:15;30781:25;;30694:118;30643:169;;;;:::o;30817:295::-;30893:4;31039:29;31064:3;31058:4;31039:29;:::i;:::-;31031:37;;31101:3;31098:1;31094:11;31088:4;31085:21;31077:29;;30817:295;;;;:::o;31117:1390::-;31232:36;31264:3;31232:36;:::i;:::-;31333:18;31325:6;31322:30;31319:56;;;31355:18;;:::i;:::-;31319:56;31399:38;31431:4;31425:11;31399:38;:::i;:::-;31484:66;31543:6;31535;31529:4;31484:66;:::i;:::-;31577:1;31601:4;31588:17;;31633:2;31625:6;31622:14;31650:1;31645:617;;;;32306:1;32323:6;32320:77;;;32372:9;32367:3;32363:19;32357:26;32348:35;;32320:77;32423:67;32483:6;32476:5;32423:67;:::i;:::-;32417:4;32410:81;32279:222;31615:886;;31645:617;31697:4;31693:9;31685:6;31681:22;31731:36;31762:4;31731:36;:::i;:::-;31789:1;31803:208;31817:7;31814:1;31811:14;31803:208;;;31896:9;31891:3;31887:19;31881:26;31873:6;31866:42;31947:1;31939:6;31935:14;31925:24;;31994:2;31983:9;31979:18;31966:31;;31840:4;31837:1;31833:12;31828:17;;31803:208;;;32039:6;32030:7;32027:19;32024:179;;;32097:9;32092:3;32088:19;32082:26;32140:48;32182:4;32174:6;32170:17;32159:9;32140:48;:::i;:::-;32132:6;32125:64;32047:156;32024:179;32249:1;32245;32237:6;32233:14;32229:22;32223:4;32216:36;31652:610;;;31615:886;;31207:1300;;;31117:1390;;:::o;32513:167::-;32653:19;32649:1;32641:6;32637:14;32630:43;32513:167;:::o;32686:366::-;32828:3;32849:67;32913:2;32908:3;32849:67;:::i;:::-;32842:74;;32925:93;33014:3;32925:93;:::i;:::-;33043:2;33038:3;33034:12;33027:19;;32686:366;;;:::o;33058:419::-;33224:4;33262:2;33251:9;33247:18;33239:26;;33311:9;33305:4;33301:20;33297:1;33286:9;33282:17;33275:47;33339:131;33465:4;33339:131;:::i;:::-;33331:139;;33058:419;;;:::o;33483:191::-;33523:3;33542:20;33560:1;33542:20;:::i;:::-;33537:25;;33576:20;33594:1;33576:20;:::i;:::-;33571:25;;33619:1;33616;33612:9;33605:16;;33640:3;33637:1;33634:10;33631:36;;;33647:18;;:::i;:::-;33631:36;33483:191;;;;:::o;33680:172::-;33820:24;33816:1;33808:6;33804:14;33797:48;33680:172;:::o;33858:366::-;34000:3;34021:67;34085:2;34080:3;34021:67;:::i;:::-;34014:74;;34097:93;34186:3;34097:93;:::i;:::-;34215:2;34210:3;34206:12;34199:19;;33858:366;;;:::o;34230:419::-;34396:4;34434:2;34423:9;34419:18;34411:26;;34483:9;34477:4;34473:20;34469:1;34458:9;34454:17;34447:47;34511:131;34637:4;34511:131;:::i;:::-;34503:139;;34230:419;;;:::o;34655:141::-;34704:4;34727:3;34719:11;;34750:3;34747:1;34740:14;34784:4;34781:1;34771:18;34763:26;;34655:141;;;:::o;34802:543::-;34903:2;34898:3;34895:11;34892:446;;;34937:38;34969:5;34937:38;:::i;:::-;35021:29;35039:10;35021:29;:::i;:::-;35011:8;35007:44;35204:2;35192:10;35189:18;35186:49;;;35225:8;35210:23;;35186:49;35248:80;35304:22;35322:3;35304:22;:::i;:::-;35294:8;35290:37;35277:11;35248:80;:::i;:::-;34907:431;;34892:446;34802:543;;;:::o;35351:1395::-;35468:37;35501:3;35468:37;:::i;:::-;35570:18;35562:6;35559:30;35556:56;;;35592:18;;:::i;:::-;35556:56;35636:38;35668:4;35662:11;35636:38;:::i;:::-;35721:67;35781:6;35773;35767:4;35721:67;:::i;:::-;35815:1;35839:4;35826:17;;35871:2;35863:6;35860:14;35888:1;35883:618;;;;36545:1;36562:6;36559:77;;;36611:9;36606:3;36602:19;36596:26;36587:35;;36559:77;36662:67;36722:6;36715:5;36662:67;:::i;:::-;36656:4;36649:81;36518:222;35853:887;;35883:618;35935:4;35931:9;35923:6;35919:22;35969:37;36001:4;35969:37;:::i;:::-;36028:1;36042:208;36056:7;36053:1;36050:14;36042:208;;;36135:9;36130:3;36126:19;36120:26;36112:6;36105:42;36186:1;36178:6;36174:14;36164:24;;36233:2;36222:9;36218:18;36205:31;;36079:4;36076:1;36072:12;36067:17;;36042:208;;;36278:6;36269:7;36266:19;36263:179;;;36336:9;36331:3;36327:19;36321:26;36379:48;36421:4;36413:6;36409:17;36398:9;36379:48;:::i;:::-;36371:6;36364:64;36286:156;36263:179;36488:1;36484;36476:6;36472:14;36468:22;36462:4;36455:36;35890:611;;;35853:887;;35443:1303;;;35351:1395;;:::o;36752:169::-;36892:21;36888:1;36880:6;36876:14;36869:45;36752:169;:::o;36927:366::-;37069:3;37090:67;37154:2;37149:3;37090:67;:::i;:::-;37083:74;;37166:93;37255:3;37166:93;:::i;:::-;37284:2;37279:3;37275:12;37268:19;;36927:366;;;:::o;37299:419::-;37465:4;37503:2;37492:9;37488:18;37480:26;;37552:9;37546:4;37542:20;37538:1;37527:9;37523:17;37516:47;37580:131;37706:4;37580:131;:::i;:::-;37572:139;;37299:419;;;:::o;37724:170::-;37864:22;37860:1;37852:6;37848:14;37841:46;37724:170;:::o;37900:366::-;38042:3;38063:67;38127:2;38122:3;38063:67;:::i;:::-;38056:74;;38139:93;38228:3;38139:93;:::i;:::-;38257:2;38252:3;38248:12;38241:19;;37900:366;;;:::o;38272:419::-;38438:4;38476:2;38465:9;38461:18;38453:26;;38525:9;38519:4;38515:20;38511:1;38500:9;38496:17;38489:47;38553:131;38679:4;38553:131;:::i;:::-;38545:139;;38272:419;;;:::o;38697:178::-;38837:30;38833:1;38825:6;38821:14;38814:54;38697:178;:::o;38881:366::-;39023:3;39044:67;39108:2;39103:3;39044:67;:::i;:::-;39037:74;;39120:93;39209:3;39120:93;:::i;:::-;39238:2;39233:3;39229:12;39222:19;;38881:366;;;:::o;39253:419::-;39419:4;39457:2;39446:9;39442:18;39434:26;;39506:9;39500:4;39496:20;39492:1;39481:9;39477:17;39470:47;39534:131;39660:4;39534:131;:::i;:::-;39526:139;;39253:419;;;:::o;39678:164::-;39818:16;39814:1;39806:6;39802:14;39795:40;39678:164;:::o;39848:366::-;39990:3;40011:67;40075:2;40070:3;40011:67;:::i;:::-;40004:74;;40087:93;40176:3;40087:93;:::i;:::-;40205:2;40200:3;40196:12;40189:19;;39848:366;;;:::o;40220:419::-;40386:4;40424:2;40413:9;40409:18;40401:26;;40473:9;40467:4;40463:20;40459:1;40448:9;40444:17;40437:47;40501:131;40627:4;40501:131;:::i;:::-;40493:139;;40220:419;;;:::o;40645:148::-;40747:11;40784:3;40769:18;;40645:148;;;;:::o;40799:390::-;40905:3;40933:39;40966:5;40933:39;:::i;:::-;40988:89;41070:6;41065:3;40988:89;:::i;:::-;40981:96;;41086:65;41144:6;41139:3;41132:4;41125:5;41121:16;41086:65;:::i;:::-;41176:6;41171:3;41167:16;41160:23;;40909:280;40799:390;;;;:::o;41195:242::-;41364:66;41359:3;41352:79;41195:242;:::o;41467:874::-;41570:3;41607:5;41601:12;41636:36;41662:9;41636:36;:::i;:::-;41688:89;41770:6;41765:3;41688:89;:::i;:::-;41681:96;;41808:1;41797:9;41793:17;41824:1;41819:166;;;;41999:1;41994:341;;;;41786:549;;41819:166;41903:4;41899:9;41888;41884:25;41879:3;41872:38;41965:6;41958:14;41951:22;41943:6;41939:35;41934:3;41930:45;41923:52;;41819:166;;41994:341;42061:38;42093:5;42061:38;:::i;:::-;42121:1;42135:154;42149:6;42146:1;42143:13;42135:154;;;42223:7;42217:14;42213:1;42208:3;42204:11;42197:35;42273:1;42264:7;42260:15;42249:26;;42171:4;42168:1;42164:12;42159:17;;42135:154;;;42318:6;42313:3;42309:16;42302:23;;42001:334;;41786:549;;41574:767;;41467:874;;;;:::o;42347:242::-;42516:66;42511:3;42504:79;42347:242;:::o;42595:241::-;42763:66;42758:3;42751:79;42595:241;:::o;42842:1381::-;43336:3;43358:95;43449:3;43440:6;43358:95;:::i;:::-;43351:102;;43463:138;43597:3;43463:138;:::i;:::-;43626:2;43621:3;43617:12;43610:19;;43646:92;43734:3;43725:6;43646:92;:::i;:::-;43639:99;;43748:138;43882:3;43748:138;:::i;:::-;43911:2;43906:3;43902:12;43895:19;;43931:92;44019:3;44010:6;43931:92;:::i;:::-;43924:99;;44033:137;44166:3;44033:137;:::i;:::-;44195:1;44190:3;44186:11;44179:18;;44214:3;44207:10;;42842:1381;;;;;;:::o;44229:194::-;44269:4;44289:20;44307:1;44289:20;:::i;:::-;44284:25;;44323:20;44341:1;44323:20;:::i;:::-;44318:25;;44367:1;44364;44360:9;44352:17;;44391:1;44385:4;44382:11;44379:37;;;44396:18;;:::i;:::-;44379:37;44229:194;;;;:::o;44429:178::-;44597:3;44592;44585:16;44429:178;:::o;44613:539::-;44835:3;44857:95;44948:3;44939:6;44857:95;:::i;:::-;44850:102;;44962:137;45095:3;44962:137;:::i;:::-;45124:1;45119:3;45115:11;45108:18;;45143:3;45136:10;;44613:539;;;;:::o;45158:178::-;45326:3;45321;45314:16;45158:178;:::o;45342:539::-;45564:3;45586:95;45677:3;45668:6;45586:95;:::i;:::-;45579:102;;45691:137;45824:3;45691:137;:::i;:::-;45853:1;45848:3;45844:11;45837:18;;45872:3;45865:10;;45342:539;;;;:::o;45887:147::-;45988:11;46025:3;46010:18;;45887:147;;;;:::o;46040:144::-;46092:4;46115:3;46107:11;;46138:3;46135:1;46128:14;46172:4;46169:1;46159:18;46151:26;;46040:144;;;:::o;46212:878::-;46317:3;46354:5;46348:12;46383:36;46409:9;46383:36;:::i;:::-;46435:88;46516:6;46511:3;46435:88;:::i;:::-;46428:95;;46554:1;46543:9;46539:17;46570:1;46565:166;;;;46745:1;46740:344;;;;46532:552;;46565:166;46649:4;46645:9;46634;46630:25;46625:3;46618:38;46711:6;46704:14;46697:22;46689:6;46685:35;46680:3;46676:45;46669:52;;46565:166;;46740:344;46807:41;46842:5;46807:41;:::i;:::-;46870:1;46884:154;46898:6;46895:1;46892:13;46884:154;;;46972:7;46966:14;46962:1;46957:3;46953:11;46946:35;47022:1;47013:7;47009:15;46998:26;;46920:4;46917:1;46913:12;46908:17;;46884:154;;;47067:6;47062:3;47058:16;47051:23;;46747:337;;46532:552;;46321:769;;46212:878;;;;:::o;47096:273::-;47227:3;47249:94;47339:3;47330:6;47249:94;:::i;:::-;47242:101;;47360:3;47353:10;;47096:273;;;;:::o;47375:168::-;47515:20;47511:1;47503:6;47499:14;47492:44;47375:168;:::o;47549:366::-;47691:3;47712:67;47776:2;47771:3;47712:67;:::i;:::-;47705:74;;47788:93;47877:3;47788:93;:::i;:::-;47906:2;47901:3;47897:12;47890:19;;47549:366;;;:::o;47921:419::-;48087:4;48125:2;48114:9;48110:18;48102:26;;48174:9;48168:4;48164:20;48160:1;48149:9;48145:17;48138:47;48202:131;48328:4;48202:131;:::i;:::-;48194:139;;47921:419;;;:::o
Swarm Source
ipfs://1c7d0eb9d48a6e024ca562971d157d2e244f5965ea2fd118b475317ca450c4bb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.