diff --git a/models/DeployedTokenContractModel.ts b/models/DeployedTokenContractModel.ts index 98a2973..7ba5b3b 100644 --- a/models/DeployedTokenContractModel.ts +++ b/models/DeployedTokenContractModel.ts @@ -25,4 +25,5 @@ DeployedTokenContractSchema.set('toJSON', { } }); -export const DeployedTokenContractModel = mongoose.model('DeployedTokenContract', DeployedTokenContractSchema); +export const DeployedShareableTokenContractModel = mongoose.model('DeployedTokenContract', DeployedTokenContractSchema); +export const DeployedEndorseTokenContractModel = mongoose.model('DeployedEndorseTokenContract', DeployedTokenContractSchema); diff --git a/services/metadataService.ts b/services/metadataService.ts index 5bba4a2..aad7226 100644 --- a/services/metadataService.ts +++ b/services/metadataService.ts @@ -1,10 +1,10 @@ -import { DeployedTokenContractDocument, DeployedTokenContractModel } from '../models/DeployedTokenContractModel'; +import { DeployedTokenContractDocument, DeployedShareableTokenContractModel, DeployedEndorseTokenContractModel } from '../models/DeployedTokenContractModel'; import { StoredMetadataModel } from '../models/StoredMetadataModel'; import { StoredPendingMetadata, StoredPendingMetadataModel } from '../models/StoredPendingMetadataModel'; import { GET_ALL_PROJECTS } from '../subgraph/queries/queries'; -import { ProjectDetailsQuery } from '../subgraph/queries/types-thegraph/ProjectDetailsQuery'; +import { ProjectDetailsQuery, ProjectDetailsQuery_projects } from '../subgraph/queries/types-thegraph/ProjectDetailsQuery'; import { theGraphApolloClient } from '../subgraph/theGraphApolloClient'; -import { ShareableERC721__factory } from '../typechain-types'; +import { EndorseERC721__factory, ShareableERC721__factory } from '../typechain-types'; import { TransferEvent } from '../typechain-types/ERC721Upgradeable'; import { Result } from '../types'; import { verifyMessageSafe } from '../utils/cryptography'; @@ -32,17 +32,33 @@ const addMissingContractsFromSubgraph = async () => { const result = await theGraphApolloClient.query({ query: GET_ALL_PROJECTS }); const addMissingContractsPromises = result.data.projects.map ( async project => { - const contractAddress = project.shareableContractAddress as string; - const foundContracts = await DeployedTokenContractModel.find({ address: contractAddress }); - if (foundContracts.length === 0 && thisIsNotAJestTest()) { - console.log('Adding new share contract at ', contractAddress); - await new DeployedTokenContractModel({ address: contractAddress }).save(); - } + await addMissingShareableContractsFromSubgraph(project); + await addMissingEndorseContractsFromSubgraph(project); }); await Promise.all(addMissingContractsPromises); }; +const addMissingShareableContractsFromSubgraph = async (project: ProjectDetailsQuery_projects) => { + const shareableContractAddress = project.shareableContractAddress as string; + const foundContracts = await DeployedShareableTokenContractModel.find({ address: shareableContractAddress }); + if (foundContracts.length === 0 && thisIsNotAJestTest()) { + console.log('Adding new share contract at ', shareableContractAddress); + await new DeployedShareableTokenContractModel({ address: shareableContractAddress }).save(); + } +}; + +const addMissingEndorseContractsFromSubgraph = async (project: ProjectDetailsQuery_projects) => { + if (project.endorseContractAddress) { + const endorseContractAddress = project.endorseContractAddress as string; + const foundContracts = await DeployedEndorseTokenContractModel.find({ address: endorseContractAddress }); + if (foundContracts.length === 0 && thisIsNotAJestTest()) { + console.log('Adding new endorse contract at ', endorseContractAddress); + await new DeployedEndorseTokenContractModel({ address: endorseContractAddress }).save(); + } + } +}; + let checkEventsInProgress = false; export const checkLatestEventsAndPostMetadata = async () => { @@ -56,21 +72,64 @@ export const checkLatestEventsAndPostMetadata = async () => { checkEventsInProgress = true; try { - const deployedContractDocuments = await DeployedTokenContractModel.find({}); + const deployedContractDocuments = await DeployedShareableTokenContractModel.find({}); + + const contractWorkPromises = deployedContractDocuments.map(async contractDocument => { + await checkEventsForShareableContract(contractDocument); + }); + await Promise.all(contractWorkPromises); + } catch (error) { + console.error('error when checking latest shareable contract events', error); + } + + try { + const deployedContractDocuments = await DeployedEndorseTokenContractModel.find({}); const contractWorkPromises = deployedContractDocuments.map(async contractDocument => { - await checkEventsForContract(contractDocument); + await checkEventsForEndorseContract(contractDocument); }); await Promise.all(contractWorkPromises); } catch (error) { - console.error('error when checking latest contract events', error); + console.error('error when checking latest shareable contract events', error); } checkEventsInProgress = false; }; -const checkEventsForContract = async (contractDocument: DeployedTokenContractDocument & { _id: any; }) => { - const contract = loadContract(contractDocument.address); +const checkEventsForShareableContract = async (contractDocument: DeployedTokenContractDocument & { _id: any; }) => { + const contract = loadShareableContract(contractDocument.address); + + console.log('polling events from ' + contract.address); + + const filter = contract.filters.Transfer();//Transfer event is emited when new Token is minted + const latestBlock = await web3provider.getBlockNumber(); + let lastCheckedBlockNumber = contractDocument.lastCheckedBlockNumber; + let checkUpToBlock = latestBlock; + console.log('blockheight on chain ', latestBlock); + console.log('latest blocknumber in metadata db', lastCheckedBlockNumber); + + do { + checkUpToBlock = latestBlock; + + if ((checkUpToBlock - lastCheckedBlockNumber) > MAX_BLOCKS_IN_ONE_QUERY) { + checkUpToBlock = lastCheckedBlockNumber + MAX_BLOCKS_IN_ONE_QUERY; + } + + console.log('checking from', getNextStartBlockNumberToCheck(lastCheckedBlockNumber)); + console.log(' ...to ', checkUpToBlock); + const events = await contract.queryFilter(filter, getNextStartBlockNumberToCheck(lastCheckedBlockNumber), checkUpToBlock); + await processEventsForNewlyMintedTokens(events); + + lastCheckedBlockNumber = checkUpToBlock; + + } while (checkUpToBlock < latestBlock); + + contractDocument.lastCheckedBlockNumber = Number(lastCheckedBlockNumber); + await contractDocument.save(); +}; + +const checkEventsForEndorseContract = async (contractDocument: DeployedTokenContractDocument & { _id: any; }) => { + const contract = loadEndorseContract(contractDocument.address); console.log('polling events from ' + contract.address); @@ -106,11 +165,16 @@ const getNextStartBlockNumberToCheck = (lastCheckBlockNumber: number) => { return Math.max(nextBlockToCheck, 0); }; -const loadContract = (address: string) => { +const loadShareableContract = (address: string) => { const contract = ShareableERC721__factory.connect(address, web3provider); return contract; }; +const loadEndorseContract = (address: string) => { + const contract = EndorseERC721__factory.connect(address, web3provider); + return contract; +}; + const processEventsForNewlyMintedTokens = async (events: TransferEvent[]) => { const promises = events.map( async (event) => { const transactionReceipt = await web3provider.getTransactionReceipt(event.transactionHash); diff --git a/subgraph/queries/queries.ts b/subgraph/queries/queries.ts index ca9353d..ad029a6 100644 --- a/subgraph/queries/queries.ts +++ b/subgraph/queries/queries.ts @@ -7,5 +7,6 @@ query ProjectDetailsQuery { operators shareableContractAddress likeContractAddress + endorseContractAddress } }`; \ No newline at end of file diff --git a/subgraph/queries/types-thegraph/ProjectDetailsQuery.ts b/subgraph/queries/types-thegraph/ProjectDetailsQuery.ts index cf80c86..ac2e30b 100644 --- a/subgraph/queries/types-thegraph/ProjectDetailsQuery.ts +++ b/subgraph/queries/types-thegraph/ProjectDetailsQuery.ts @@ -13,6 +13,7 @@ export interface ProjectDetailsQuery_projects { operators: any[]; shareableContractAddress: any | null; likeContractAddress: any | null; + endorseContractAddress: any | null; } export interface ProjectDetailsQuery { diff --git a/tests/services/metadataServiceEventsCheck.test.ts b/tests/services/metadataServiceEventsCheck.test.ts index d7ed9cc..0a39543 100644 --- a/tests/services/metadataServiceEventsCheck.test.ts +++ b/tests/services/metadataServiceEventsCheck.test.ts @@ -1,6 +1,6 @@ import 'jest'; import { initMongoose, shutdownMongoose } from '../../app'; -import { DeployedTokenContractModel } from '../../models/DeployedTokenContractModel'; +import { DeployedEndorseTokenContractModel, DeployedShareableTokenContractModel } from '../../models/DeployedTokenContractModel'; import { StoredMetadataModel } from '../../models/StoredMetadataModel'; import { StoredPendingMetadataModel } from '../../models/StoredPendingMetadataModel'; import { checkLatestEventsAndPostMetadata } from '../../services/metadataService'; @@ -19,13 +19,16 @@ describe('metadata update on share event', () => { await StoredPendingMetadataModel.deleteMany({}); await StoredMetadataModel.deleteMany({}); - await DeployedTokenContractModel.deleteMany({}); - await new DeployedTokenContractModel({ address: '0x3f537f5e581e11c89c0e023bc430a626c2227961', lastCheckedBlockNumber: '7843117' } ).save(); //Streamr demo project - await new DeployedTokenContractModel({ address: '0xc2a2f67444ea2600f5dc671935bc647f9910098d', lastCheckedBlockNumber: '7843117' } ).save(); //Connecta demo project + await DeployedShareableTokenContractModel.deleteMany({}); + await new DeployedShareableTokenContractModel({ address: '0x3f537f5e581e11c89c0e023bc430a626c2227961', lastCheckedBlockNumber: '7843117' } ).save(); //Streamr demo project + await new DeployedShareableTokenContractModel({ address: '0xc2a2f67444ea2600f5dc671935bc647f9910098d', lastCheckedBlockNumber: '7843117' } ).save(); //Connecta demo project + + await DeployedEndorseTokenContractModel.deleteMany({}); + await new DeployedEndorseTokenContractModel({ address: '0xf8c45bee6284c1f1c3a6738c1c9128ad73368649', lastCheckedBlockNumber: '8127213' } ).save(); //Streamr demo project }); afterAll(async () => { - await DeployedTokenContractModel.deleteMany({}); + await DeployedShareableTokenContractModel.deleteMany({}); await shutdownMongoose(); }); diff --git a/thegraph-graphql-schema.json b/thegraph-graphql-schema.json index c36b3c7..24afb88 100644 --- a/thegraph-graphql-schema.json +++ b/thegraph-graphql-schema.json @@ -2460,6 +2460,22 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "isOriginalOrShared", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "isLikeToken", "description": null, @@ -2476,6 +2492,22 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "isEndorseToken", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "tokenId", "description": null, @@ -2694,6 +2726,115 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "endorsedParentToken", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "Token", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "endorseTokens", + "description": null, + "args": [ + { + "name": "skip", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": "0", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "first", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + }, + "defaultValue": "100", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderBy", + "description": null, + "type": { + "kind": "ENUM", + "name": "Token_orderBy", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "orderDirection", + "description": null, + "type": { + "kind": "ENUM", + "name": "OrderDirection", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "where", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "Token_filter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "Token", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "endorseTokenReceiverAddress", + "description": null, + "args": [], + "type": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "category", "description": null, @@ -2709,6 +2850,38 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "isBurned", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -3664,7 +3837,7 @@ "deprecationReason": null }, { - "name": "isLikeToken", + "name": "isOriginalOrShared", "description": null, "type": { "kind": "SCALAR", @@ -3676,7 +3849,7 @@ "deprecationReason": null }, { - "name": "isLikeToken_not", + "name": "isOriginalOrShared_not", "description": null, "type": { "kind": "SCALAR", @@ -3688,7 +3861,7 @@ "deprecationReason": null }, { - "name": "isLikeToken_in", + "name": "isOriginalOrShared_in", "description": null, "type": { "kind": "LIST", @@ -3708,7 +3881,7 @@ "deprecationReason": null }, { - "name": "isLikeToken_not_in", + "name": "isOriginalOrShared_not_in", "description": null, "type": { "kind": "LIST", @@ -3728,11 +3901,11 @@ "deprecationReason": null }, { - "name": "tokenId", + "name": "isLikeToken", "description": null, "type": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null }, "defaultValue": null, @@ -3740,11 +3913,11 @@ "deprecationReason": null }, { - "name": "tokenId_not", + "name": "isLikeToken_not", "description": null, "type": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null }, "defaultValue": null, @@ -3752,35 +3925,51 @@ "deprecationReason": null }, { - "name": "tokenId_gt", + "name": "isLikeToken_in", "description": null, "type": { - "kind": "SCALAR", - "name": "BigInt", - "ofType": null + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + } }, "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "tokenId_lt", + "name": "isLikeToken_not_in", "description": null, "type": { - "kind": "SCALAR", - "name": "BigInt", - "ofType": null + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + } }, "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "tokenId_gte", + "name": "isEndorseToken", "description": null, "type": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null }, "defaultValue": null, @@ -3788,11 +3977,11 @@ "deprecationReason": null }, { - "name": "tokenId_lte", + "name": "isEndorseToken_not", "description": null, "type": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null }, "defaultValue": null, @@ -3800,7 +3989,7 @@ "deprecationReason": null }, { - "name": "tokenId_in", + "name": "isEndorseToken_in", "description": null, "type": { "kind": "LIST", @@ -3810,7 +3999,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null } } @@ -3820,7 +4009,7 @@ "deprecationReason": null }, { - "name": "tokenId_not_in", + "name": "isEndorseToken_not_in", "description": null, "type": { "kind": "LIST", @@ -3830,7 +4019,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "BigInt", + "name": "Boolean", "ofType": null } } @@ -3840,7 +4029,7 @@ "deprecationReason": null }, { - "name": "parentTokenId", + "name": "tokenId", "description": null, "type": { "kind": "SCALAR", @@ -3852,7 +4041,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_not", + "name": "tokenId_not", "description": null, "type": { "kind": "SCALAR", @@ -3864,7 +4053,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_gt", + "name": "tokenId_gt", "description": null, "type": { "kind": "SCALAR", @@ -3876,7 +4065,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_lt", + "name": "tokenId_lt", "description": null, "type": { "kind": "SCALAR", @@ -3888,7 +4077,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_gte", + "name": "tokenId_gte", "description": null, "type": { "kind": "SCALAR", @@ -3900,7 +4089,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_lte", + "name": "tokenId_lte", "description": null, "type": { "kind": "SCALAR", @@ -3912,7 +4101,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_in", + "name": "tokenId_in", "description": null, "type": { "kind": "LIST", @@ -3932,7 +4121,7 @@ "deprecationReason": null }, { - "name": "parentTokenId_not_in", + "name": "tokenId_not_in", "description": null, "type": { "kind": "LIST", @@ -3952,11 +4141,11 @@ "deprecationReason": null }, { - "name": "parentToken", + "name": "parentTokenId", "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "BigInt", "ofType": null }, "defaultValue": null, @@ -3964,11 +4153,11 @@ "deprecationReason": null }, { - "name": "parentToken_not", + "name": "parentTokenId_not", "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "BigInt", "ofType": null }, "defaultValue": null, @@ -3976,11 +4165,11 @@ "deprecationReason": null }, { - "name": "parentToken_gt", + "name": "parentTokenId_gt", "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "BigInt", "ofType": null }, "defaultValue": null, @@ -3988,11 +4177,11 @@ "deprecationReason": null }, { - "name": "parentToken_lt", + "name": "parentTokenId_lt", "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "BigInt", "ofType": null }, "defaultValue": null, @@ -4000,11 +4189,123 @@ "deprecationReason": null }, { - "name": "parentToken_gte", + "name": "parentTokenId_gte", "description": null, "type": { "kind": "SCALAR", - "name": "String", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentTokenId_lte", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentTokenId_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentTokenId_not_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken_not", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken_gt", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken_lt", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken_gte", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", "ofType": null }, "defaultValue": null, @@ -4512,7 +4813,7 @@ "deprecationReason": null }, { - "name": "category", + "name": "endorsedParentToken", "description": null, "type": { "kind": "SCALAR", @@ -4524,7 +4825,7 @@ "deprecationReason": null }, { - "name": "category_not", + "name": "endorsedParentToken_not", "description": null, "type": { "kind": "SCALAR", @@ -4536,7 +4837,7 @@ "deprecationReason": null }, { - "name": "category_gt", + "name": "endorsedParentToken_gt", "description": null, "type": { "kind": "SCALAR", @@ -4548,7 +4849,7 @@ "deprecationReason": null }, { - "name": "category_lt", + "name": "endorsedParentToken_lt", "description": null, "type": { "kind": "SCALAR", @@ -4560,7 +4861,7 @@ "deprecationReason": null }, { - "name": "category_gte", + "name": "endorsedParentToken_gte", "description": null, "type": { "kind": "SCALAR", @@ -4572,7 +4873,7 @@ "deprecationReason": null }, { - "name": "category_lte", + "name": "endorsedParentToken_lte", "description": null, "type": { "kind": "SCALAR", @@ -4584,7 +4885,7 @@ "deprecationReason": null }, { - "name": "category_in", + "name": "endorsedParentToken_in", "description": null, "type": { "kind": "LIST", @@ -4604,7 +4905,7 @@ "deprecationReason": null }, { - "name": "category_not_in", + "name": "endorsedParentToken_not_in", "description": null, "type": { "kind": "LIST", @@ -4624,7 +4925,7 @@ "deprecationReason": null }, { - "name": "category_contains", + "name": "endorsedParentToken_contains", "description": null, "type": { "kind": "SCALAR", @@ -4636,7 +4937,7 @@ "deprecationReason": null }, { - "name": "category_contains_nocase", + "name": "endorsedParentToken_contains_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4648,7 +4949,7 @@ "deprecationReason": null }, { - "name": "category_not_contains", + "name": "endorsedParentToken_not_contains", "description": null, "type": { "kind": "SCALAR", @@ -4660,7 +4961,7 @@ "deprecationReason": null }, { - "name": "category_not_contains_nocase", + "name": "endorsedParentToken_not_contains_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4672,7 +4973,7 @@ "deprecationReason": null }, { - "name": "category_starts_with", + "name": "endorsedParentToken_starts_with", "description": null, "type": { "kind": "SCALAR", @@ -4684,7 +4985,7 @@ "deprecationReason": null }, { - "name": "category_starts_with_nocase", + "name": "endorsedParentToken_starts_with_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4696,7 +4997,7 @@ "deprecationReason": null }, { - "name": "category_not_starts_with", + "name": "endorsedParentToken_not_starts_with", "description": null, "type": { "kind": "SCALAR", @@ -4708,7 +5009,7 @@ "deprecationReason": null }, { - "name": "category_not_starts_with_nocase", + "name": "endorsedParentToken_not_starts_with_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4720,7 +5021,7 @@ "deprecationReason": null }, { - "name": "category_ends_with", + "name": "endorsedParentToken_ends_with", "description": null, "type": { "kind": "SCALAR", @@ -4732,7 +5033,7 @@ "deprecationReason": null }, { - "name": "category_ends_with_nocase", + "name": "endorsedParentToken_ends_with_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4744,7 +5045,7 @@ "deprecationReason": null }, { - "name": "category_not_ends_with", + "name": "endorsedParentToken_not_ends_with", "description": null, "type": { "kind": "SCALAR", @@ -4756,7 +5057,7 @@ "deprecationReason": null }, { - "name": "category_not_ends_with_nocase", + "name": "endorsedParentToken_not_ends_with_nocase", "description": null, "type": { "kind": "SCALAR", @@ -4768,11 +5069,11 @@ "deprecationReason": null }, { - "name": "category_", + "name": "endorsedParentToken_", "description": null, "type": { "kind": "INPUT_OBJECT", - "name": "Category_filter", + "name": "Token_filter", "ofType": null }, "defaultValue": null, @@ -4780,99 +5081,655 @@ "deprecationReason": null }, { - "name": "_change_block", - "description": "Filter for the block changed event.", + "name": "endorseTokens_", + "description": null, "type": { "kind": "INPUT_OBJECT", - "name": "BlockChangedFilter", + "name": "Token_filter", "ofType": null }, "defaultValue": null, "isDeprecated": false, "deprecationReason": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "Token_orderBy", - "description": null, - "specifiedByUrl": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ + }, { - "name": "id", + "name": "endorseTokenReceiverAddress", "description": null, + "type": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ownerAddress", + "name": "endorseTokenReceiverAddress_not", "description": null, + "type": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "contractAddress", + "name": "endorseTokenReceiverAddress_in", "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + } + } + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "metadataUri", + "name": "endorseTokenReceiverAddress_not_in", "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + } + } + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "project", + "name": "endorseTokenReceiverAddress_contains", "description": null, + "type": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "isOriginal", + "name": "endorseTokenReceiverAddress_not_contains", "description": null, + "type": { + "kind": "SCALAR", + "name": "Bytes", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "isSharedInstance", + "name": "category", "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "isLikeToken", + "name": "category_not", "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "tokenId", + "name": "category_gt", "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "parentTokenId", + "name": "category_lt", "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "parentToken", + "name": "category_gte", "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "sharedChildTokens", + "name": "category_lte", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_contains", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_contains_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_contains", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_contains_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_starts_with", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_starts_with_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_starts_with", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_starts_with_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_ends_with", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_ends_with_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_ends_with", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_not_ends_with_nocase", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "category_", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "Category_filter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isBurned", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isBurned_not", + "description": null, + "type": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isBurned_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isBurned_not_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Boolean", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_not", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_gt", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_lt", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_gte", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_lte", + "description": null, + "type": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock_not_in", + "description": null, + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "BigInt", + "ofType": null + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "_change_block", + "description": "Filter for the block changed event.", + "type": { + "kind": "INPUT_OBJECT", + "name": "BlockChangedFilter", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "ENUM", + "name": "Token_orderBy", + "description": null, + "specifiedByUrl": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "id", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ownerAddress", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "contractAddress", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "metadataUri", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "project", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isOriginal", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isSharedInstance", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isOriginalOrShared", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isLikeToken", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isEndorseToken", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "tokenId", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentTokenId", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "parentToken", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "sharedChildTokens", "description": null, "isDeprecated": false, "deprecationReason": null @@ -4889,11 +5746,41 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "endorsedParentToken", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "endorseTokens", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "endorseTokenReceiverAddress", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "category", "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "isBurned", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "mintBlock", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -4934,11 +5821,11 @@ }, { "name": "timestamp", - "description": "Timestamp of the block if available, format depends on the chain", + "description": "Integer representation of the timestamp stored in blocks for the chain", "args": [], "type": { "kind": "SCALAR", - "name": "String", + "name": "Int", "ofType": null }, "isDeprecated": false, diff --git a/typechain-types/ShareableERC721.ts b/typechain-types/ShareableERC721.ts index 35aea93..8af3c0d 100644 --- a/typechain-types/ShareableERC721.ts +++ b/typechain-types/ShareableERC721.ts @@ -26,6 +26,7 @@ export interface ShareableERC721Interface extends utils.Interface { "addOperator(address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; + "burn(uint256)": FunctionFragment; "getApproved(uint256)": FunctionFragment; "getIndex()": FunctionFragment; "getRoleAdmin(bytes32)": FunctionFragment; @@ -33,6 +34,8 @@ export interface ShareableERC721Interface extends utils.Interface { "hasRole(bytes32,address)": FunctionFragment; "initialize(string,string,address)": FunctionFragment; "isApprovedForAll(address,address)": FunctionFragment; + "isDerivedFrom(uint256)": FunctionFragment; + "isOriginalToken(uint256)": FunctionFragment; "mint(address,string)": FunctionFragment; "name()": FunctionFragment; "ownerOf(uint256)": FunctionFragment; @@ -66,6 +69,7 @@ export interface ShareableERC721Interface extends utils.Interface { values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; encodeFunctionData( functionFragment: "getApproved", values: [BigNumberish] @@ -91,6 +95,14 @@ export interface ShareableERC721Interface extends utils.Interface { functionFragment: "isApprovedForAll", values: [string, string] ): string; + encodeFunctionData( + functionFragment: "isDerivedFrom", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isOriginalToken", + values: [BigNumberish] + ): string; encodeFunctionData( functionFragment: "mint", values: [string, string] @@ -159,6 +171,7 @@ export interface ShareableERC721Interface extends utils.Interface { ): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; decodeFunctionResult( functionFragment: "getApproved", data: BytesLike @@ -175,6 +188,14 @@ export interface ShareableERC721Interface extends utils.Interface { functionFragment: "isApprovedForAll", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "isDerivedFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isOriginalToken", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; @@ -355,6 +376,11 @@ export interface ShareableERC721 extends BaseContract { balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + burn( + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + getApproved( tokenId: BigNumberish, overrides?: CallOverrides @@ -389,6 +415,16 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise<[boolean]>; + isDerivedFrom( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + isOriginalToken( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[boolean]>; + mint( account: string, category: string, @@ -503,6 +539,11 @@ export interface ShareableERC721 extends BaseContract { balanceOf(owner: string, overrides?: CallOverrides): Promise; + burn( + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + getApproved( tokenId: BigNumberish, overrides?: CallOverrides @@ -537,6 +578,16 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise; + isDerivedFrom( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isOriginalToken( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + mint( account: string, category: string, @@ -639,6 +690,8 @@ export interface ShareableERC721 extends BaseContract { balanceOf(owner: string, overrides?: CallOverrides): Promise; + burn(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + getApproved( tokenId: BigNumberish, overrides?: CallOverrides @@ -673,6 +726,16 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise; + isDerivedFrom( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isOriginalToken( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + mint( account: string, category: string, @@ -870,6 +933,11 @@ export interface ShareableERC721 extends BaseContract { balanceOf(owner: string, overrides?: CallOverrides): Promise; + burn( + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + getApproved( tokenId: BigNumberish, overrides?: CallOverrides @@ -907,6 +975,16 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise; + isDerivedFrom( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isOriginalToken( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + mint( account: string, category: string, @@ -1027,6 +1105,11 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise; + burn( + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + getApproved( tokenId: BigNumberish, overrides?: CallOverrides @@ -1064,6 +1147,16 @@ export interface ShareableERC721 extends BaseContract { overrides?: CallOverrides ): Promise; + isDerivedFrom( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isOriginalToken( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + mint( account: string, category: string, diff --git a/typechain-types/factories/EndorseERC721__factory.ts b/typechain-types/factories/EndorseERC721__factory.ts index 1fb14b5..98a3861 100644 --- a/typechain-types/factories/EndorseERC721__factory.ts +++ b/typechain-types/factories/EndorseERC721__factory.ts @@ -751,7 +751,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506139d9806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063ac8a584a116100a2578063d547741f11610071578063d547741f14610588578063e985e9c5146105a4578063f5b541a6146105d4578063fce0f928146105f2576101e5565b8063ac8a584a14610502578063b88d4fde1461051e578063c87b56dd1461053a578063d47f4d2a1461056a576101e5565b80639870d7fe116100de5780639870d7fe14610490578063a0712d68146104ac578063a217fddf146104c8578063a22cb465146104e6576101e5565b806370a08231146103f457806381045ead1461042457806391d148541461044257806395d89b4114610472576101e5565b8063248a9ca31161018757806342842e0e1161015657806342842e0e1461037057806342966c681461038c5780636352211e146103a857806370480275146103d8576101e5565b8063248a9ca3146102d857806327f51a91146103085780632f2ff15d1461033857806336568abe14610354576101e5565b8063081812fc116101c3578063081812fc14610254578063095ea7b3146102845780631785f53c146102a057806323b872dd146102bc576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063077f224a14610238575b600080fd5b61020460048036038101906101ff919061249c565b610622565b60405161021191906124e4565b60405180910390f35b610222610634565b60405161022f9190612598565b60405180910390f35b610252600480360381019061024d919061274d565b6106c6565b005b61026e6004803603810190610269919061280e565b610848565b60405161027b919061284a565b60405180910390f35b61029e60048036038101906102999190612865565b61088e565b005b6102ba60048036038101906102b591906128a5565b6109a6565b005b6102d660048036038101906102d191906128d2565b6109c4565b005b6102f260048036038101906102ed919061295b565b6109ff565b6040516102ff9190612997565b60405180910390f35b610322600480360381019061031d9190612865565b610a1f565b60405161032f91906124e4565b60405180910390f35b610352600480360381019061034d91906129b2565b610a8e565b005b61036e600480360381019061036991906129b2565b610aaf565b005b61038a600480360381019061038591906128d2565b610b32565b005b6103a660048036038101906103a1919061280e565b610b6d565b005b6103c260048036038101906103bd919061280e565b610c58565b6040516103cf919061284a565b60405180910390f35b6103f260048036038101906103ed91906128a5565b610d0a565b005b61040e600480360381019061040991906128a5565b610d28565b60405161041b9190612a01565b60405180910390f35b61042c610de0565b6040516104399190612a01565b60405180910390f35b61045c600480360381019061045791906129b2565b610dea565b60405161046991906124e4565b60405180910390f35b61047a610e55565b6040516104879190612598565b60405180910390f35b6104aa60048036038101906104a591906128a5565b610ee7565b005b6104c660048036038101906104c1919061280e565b610f22565b005b6104d0611331565b6040516104dd9190612997565b60405180910390f35b61050060048036038101906104fb9190612a48565b611338565b005b61051c600480360381019061051791906128a5565b61134e565b005b61053860048036038101906105339190612b29565b611389565b005b610554600480360381019061054f919061280e565b6113c4565b6040516105619190612598565b60405180910390f35b610572611487565b60405161057f919061284a565b60405180910390f35b6105a2600480360381019061059d91906129b2565b6114b1565b005b6105be60048036038101906105b99190612bac565b6114d2565b6040516105cb91906124e4565b60405180910390f35b6105dc611566565b6040516105e99190612997565b60405180910390f35b61060c60048036038101906106079190612c2a565b61158a565b604051610619919061284a565b60405180910390f35b600061062d82611622565b9050919050565b60606065805461064390612c86565b80601f016020809104026020016040519081016040528092919081815260200182805461066f90612c86565b80156106bc5780601f10610691576101008083540402835291602001916106bc565b820191906000526020600020905b81548152906001019060200180831161069f57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f75750600160008054906101000a900460ff1660ff16105b8061072457506107063061169c565b1580156107235750600160008054906101000a900460ff1660ff16145b5b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612d2a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156107a0576001600060016101000a81548160ff0219169083151502179055505b6107aa84846116bf565b600060c9819055506107bf6000801b8361171c565b6107e97f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361171c565b80156108425760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108399190612d9c565b60405180910390a15b50505050565b60006108538261172a565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089982610c58565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090190612e29565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610929611775565b73ffffffffffffffffffffffffffffffffffffffff161480610958575061095781610952611775565b6114d2565b5b610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612ebb565b60405180910390fd5b6109a1838361177d565b505050565b6000801b6109b381611836565b6109c06000801b8361184a565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612f27565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b60006001151560cb600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514905092915050565b610a97826109ff565b610aa081611836565b610aaa838361192c565b505050565b610ab7611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90612fb9565b60405180910390fd5b610b2e828261184a565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612f27565b60405180910390fd5b610b7681610c58565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda9061304b565b60405180910390fd5b610bec81611a0d565b600060cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf8906130b7565b60405180910390fd5b80915050919050565b6000801b610d1781611836565b610d246000801b8361192c565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613149565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060c954905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e6490612c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9090612c86565b8015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b5050505050905090565b6000801b610ef481611836565b610f1e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361192c565b5050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662923f9e826040518263ffffffff1660e01b8152600401610f7c9190612a01565b602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd919061317e565b610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff3906131f7565b60405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611059919061284a565b602060405180830381865afa158015611076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109a919061322c565b116110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d1906132f1565b60405180910390fd5b6000151560cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461117e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117590613383565b60405180910390fd5b61118a3360c954611b2a565b600160cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060cc600060c954815260200190815260200160002081905550600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161126a9190612a01565b602060405180830381865afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab91906133b8565b905060c9548173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f356571a6ca8e1a8f7edf47ba7ce9380ec968da38147ce468113dc66d6120e5578560405161130d9190612a01565b60405180910390a460c9600081548092919061132890613414565b91905055505050565b6000801b81565b61134a611343611775565b8383611d04565b5050565b6000801b61135b81611836565b6113857f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361184a565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90612f27565b60405180910390fd5b6060600060cc600084815260200190815260200160002054905060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016114399190612a01565b600060405180830381865afa158015611456573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061147f91906134cd565b915050919050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114ba826109ff565b6114c381611836565b6114cd838361184a565b505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296115b681611836565b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611695575061169482611e71565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613588565b60405180910390fd5b6117188282611f53565b5050565b611726828261192c565b5050565b61173381611fd4565b611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906130b7565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166117f083610c58565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61184781611842611775565b612040565b50565b6118548282610dea565b156119285760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118cd611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6119368282610dea565b611a095760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119ae611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611a1882610c58565b9050611a26816000846120dd565b611a3160008361177d565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8191906135a8565b925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b26816000846120e2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613628565b60405180910390fd5b611ba381611fd4565b15611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613694565b60405180910390fd5b611bef600083836120dd565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c3f91906136b4565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d00600083836120e2565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a90613756565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e6491906124e4565b60405180910390a3505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f3c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f4c5750611f4b826120e7565b5b9050919050565b600060019054906101000a900460ff16611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613588565b60405180910390fd5b8160659080519060200190611fb892919061238d565b508060669080519060200190611fcf92919061238d565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61204a8282610dea565b6120d95761206f8173ffffffffffffffffffffffffffffffffffffffff166014612151565b61207d8360001c6020612151565b60405160200161208e92919061384a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612598565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600060028360026121649190613884565b61216e91906136b4565b67ffffffffffffffff811115612187576121866125c4565b5b6040519080825280601f01601f1916602001820160405280156121b95781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121f1576121f06138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612255576122546138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026122959190613884565b61229f91906136b4565b90505b600181111561233f577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122e1576122e06138de565b5b1a60f81b8282815181106122f8576122f76138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806123389061390d565b90506122a2565b5060008414612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237a90613983565b60405180910390fd5b8091505092915050565b82805461239990612c86565b90600052602060002090601f0160209004810192826123bb5760008555612402565b82601f106123d457805160ff1916838001178555612402565b82800160010185558215612402579182015b828111156124015782518255916020019190600101906123e6565b5b50905061240f9190612413565b5090565b5b8082111561242c576000816000905550600101612414565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61247981612444565b811461248457600080fd5b50565b60008135905061249681612470565b92915050565b6000602082840312156124b2576124b161243a565b5b60006124c084828501612487565b91505092915050565b60008115159050919050565b6124de816124c9565b82525050565b60006020820190506124f960008301846124d5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253957808201518184015260208101905061251e565b83811115612548576000848401525b50505050565b6000601f19601f8301169050919050565b600061256a826124ff565b612574818561250a565b935061258481856020860161251b565b61258d8161254e565b840191505092915050565b600060208201905081810360008301526125b2818461255f565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125fc8261254e565b810181811067ffffffffffffffff8211171561261b5761261a6125c4565b5b80604052505050565b600061262e612430565b905061263a82826125f3565b919050565b600067ffffffffffffffff82111561265a576126596125c4565b5b6126638261254e565b9050602081019050919050565b82818337600083830152505050565b600061269261268d8461263f565b612624565b9050828152602081018484840111156126ae576126ad6125bf565b5b6126b9848285612670565b509392505050565b600082601f8301126126d6576126d56125ba565b5b81356126e684826020860161267f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061271a826126ef565b9050919050565b61272a8161270f565b811461273557600080fd5b50565b60008135905061274781612721565b92915050565b6000806000606084860312156127665761276561243a565b5b600084013567ffffffffffffffff8111156127845761278361243f565b5b612790868287016126c1565b935050602084013567ffffffffffffffff8111156127b1576127b061243f565b5b6127bd868287016126c1565b92505060406127ce86828701612738565b9150509250925092565b6000819050919050565b6127eb816127d8565b81146127f657600080fd5b50565b600081359050612808816127e2565b92915050565b6000602082840312156128245761282361243a565b5b6000612832848285016127f9565b91505092915050565b6128448161270f565b82525050565b600060208201905061285f600083018461283b565b92915050565b6000806040838503121561287c5761287b61243a565b5b600061288a85828601612738565b925050602061289b858286016127f9565b9150509250929050565b6000602082840312156128bb576128ba61243a565b5b60006128c984828501612738565b91505092915050565b6000806000606084860312156128eb576128ea61243a565b5b60006128f986828701612738565b935050602061290a86828701612738565b925050604061291b868287016127f9565b9150509250925092565b6000819050919050565b61293881612925565b811461294357600080fd5b50565b6000813590506129558161292f565b92915050565b6000602082840312156129715761297061243a565b5b600061297f84828501612946565b91505092915050565b61299181612925565b82525050565b60006020820190506129ac6000830184612988565b92915050565b600080604083850312156129c9576129c861243a565b5b60006129d785828601612946565b92505060206129e885828601612738565b9150509250929050565b6129fb816127d8565b82525050565b6000602082019050612a1660008301846129f2565b92915050565b612a25816124c9565b8114612a3057600080fd5b50565b600081359050612a4281612a1c565b92915050565b60008060408385031215612a5f57612a5e61243a565b5b6000612a6d85828601612738565b9250506020612a7e85828601612a33565b9150509250929050565b600067ffffffffffffffff821115612aa357612aa26125c4565b5b612aac8261254e565b9050602081019050919050565b6000612acc612ac784612a88565b612624565b905082815260208101848484011115612ae857612ae76125bf565b5b612af3848285612670565b509392505050565b600082601f830112612b1057612b0f6125ba565b5b8135612b20848260208601612ab9565b91505092915050565b60008060008060808587031215612b4357612b4261243a565b5b6000612b5187828801612738565b9450506020612b6287828801612738565b9350506040612b73878288016127f9565b925050606085013567ffffffffffffffff811115612b9457612b9361243f565b5b612ba087828801612afb565b91505092959194509250565b60008060408385031215612bc357612bc261243a565b5b6000612bd185828601612738565b9250506020612be285828601612738565b9150509250929050565b6000612bf78261270f565b9050919050565b612c0781612bec565b8114612c1257600080fd5b50565b600081359050612c2481612bfe565b92915050565b600060208284031215612c4057612c3f61243a565b5b6000612c4e84828501612c15565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c9e57607f821691505b60208210811415612cb257612cb1612c57565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612d14602e8361250a565b9150612d1f82612cb8565b604082019050919050565b60006020820190508181036000830152612d4381612d07565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612d86612d81612d7c84612d4a565b612d61565b612d54565b9050919050565b612d9681612d6b565b82525050565b6000602082019050612db16000830184612d8d565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1360218361250a565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612ea5603e8361250a565b9150612eb082612e49565b604082019050919050565b60006020820190508181036000830152612ed481612e98565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612f11601c8361250a565b9150612f1c82612edb565b602082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612fa3602f8361250a565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f4d757374206265206f776e6572206f6620746f6b656e20746f2062652061626c60008201527f6520746f206275726e2069740000000000000000000000000000000000000000602082015250565b6000613035602c8361250a565b915061304082612fd9565b604082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006130a160188361250a565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061313360298361250a565b915061313e826130d7565b604082019050919050565b6000602082019050818103600083015261316281613126565b9050919050565b60008151905061317881612a1c565b92915050565b6000602082840312156131945761319361243a565b5b60006131a284828501613169565b91505092915050565b7f436f6e747269627574696f6e20746f6b656e206d757374206578697374000000600082015250565b60006131e1601d8361250a565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b600081519050613226816127e2565b92915050565b6000602082840312156132425761324161243a565b5b600061325084828501613217565b91505092915050565b7f43616e6e6f7420656e646f72736520776974686f757420616e7920636f6e747260008201527f69627574696f6e73206177617264656420666f722074686973206163636f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b60006132db60428361250a565b91506132e682613259565b606082019050919050565b6000602082019050818103600083015261330a816132ce565b9050919050565b7f436f6e747269627574696f6e732063616e6e6f7420626520656e646f7273656460008201527f2074776963650000000000000000000000000000000000000000000000000000602082015250565b600061336d60268361250a565b915061337882613311565b604082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b6000815190506133b281612721565b92915050565b6000602082840312156133ce576133cd61243a565b5b60006133dc848285016133a3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341f826127d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613452576134516133e5565b5b600182019050919050565b600061347061346b8461263f565b612624565b90508281526020810184848401111561348c5761348b6125bf565b5b61349784828561251b565b509392505050565b600082601f8301126134b4576134b36125ba565b5b81516134c484826020860161345d565b91505092915050565b6000602082840312156134e3576134e261243a565b5b600082015167ffffffffffffffff8111156135015761350061243f565b5b61350d8482850161349f565b91505092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613572602b8361250a565b915061357d82613516565b604082019050919050565b600060208201905081810360008301526135a181613565565b9050919050565b60006135b3826127d8565b91506135be836127d8565b9250828210156135d1576135d06133e5565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061361260208361250a565b915061361d826135dc565b602082019050919050565b6000602082019050818103600083015261364181613605565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061367e601c8361250a565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b60006136bf826127d8565b91506136ca836127d8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136ff576136fe6133e5565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061374060198361250a565b915061374b8261370a565b602082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006137b7601783613776565b91506137c282613781565b601782019050919050565b60006137d8826124ff565b6137e28185613776565b93506137f281856020860161251b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613834601183613776565b915061383f826137fe565b601182019050919050565b6000613855826137aa565b915061386182856137cd565b915061386c82613827565b915061387882846137cd565b91508190509392505050565b600061388f826127d8565b915061389a836127d8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138d3576138d26133e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613918826127d8565b9150600082141561392c5761392b6133e5565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061396d60208361250a565b915061397882613937565b602082019050919050565b6000602082019050818103600083015261399c81613960565b905091905056fea26469706673582212202c5a9d0447fd3f1c3bdf456abdafe546da9b73a998f84f15a889dfd5c289adeb64736f6c634300080c0033"; + "0x608060405234801561001057600080fd5b506139d9806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063ac8a584a116100a2578063d547741f11610071578063d547741f14610588578063e985e9c5146105a4578063f5b541a6146105d4578063fce0f928146105f2576101e5565b8063ac8a584a14610502578063b88d4fde1461051e578063c87b56dd1461053a578063d47f4d2a1461056a576101e5565b80639870d7fe116100de5780639870d7fe14610490578063a0712d68146104ac578063a217fddf146104c8578063a22cb465146104e6576101e5565b806370a08231146103f457806381045ead1461042457806391d148541461044257806395d89b4114610472576101e5565b8063248a9ca31161018757806342842e0e1161015657806342842e0e1461037057806342966c681461038c5780636352211e146103a857806370480275146103d8576101e5565b8063248a9ca3146102d857806327f51a91146103085780632f2ff15d1461033857806336568abe14610354576101e5565b8063081812fc116101c3578063081812fc14610254578063095ea7b3146102845780631785f53c146102a057806323b872dd146102bc576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063077f224a14610238575b600080fd5b61020460048036038101906101ff919061249c565b610622565b60405161021191906124e4565b60405180910390f35b610222610634565b60405161022f9190612598565b60405180910390f35b610252600480360381019061024d919061274d565b6106c6565b005b61026e6004803603810190610269919061280e565b610848565b60405161027b919061284a565b60405180910390f35b61029e60048036038101906102999190612865565b61088e565b005b6102ba60048036038101906102b591906128a5565b6109a6565b005b6102d660048036038101906102d191906128d2565b6109c4565b005b6102f260048036038101906102ed919061295b565b6109ff565b6040516102ff9190612997565b60405180910390f35b610322600480360381019061031d9190612865565b610a1f565b60405161032f91906124e4565b60405180910390f35b610352600480360381019061034d91906129b2565b610a8e565b005b61036e600480360381019061036991906129b2565b610aaf565b005b61038a600480360381019061038591906128d2565b610b32565b005b6103a660048036038101906103a1919061280e565b610b6d565b005b6103c260048036038101906103bd919061280e565b610c58565b6040516103cf919061284a565b60405180910390f35b6103f260048036038101906103ed91906128a5565b610d0a565b005b61040e600480360381019061040991906128a5565b610d28565b60405161041b9190612a01565b60405180910390f35b61042c610de0565b6040516104399190612a01565b60405180910390f35b61045c600480360381019061045791906129b2565b610dea565b60405161046991906124e4565b60405180910390f35b61047a610e55565b6040516104879190612598565b60405180910390f35b6104aa60048036038101906104a591906128a5565b610ee7565b005b6104c660048036038101906104c1919061280e565b610f22565b005b6104d0611331565b6040516104dd9190612997565b60405180910390f35b61050060048036038101906104fb9190612a48565b611338565b005b61051c600480360381019061051791906128a5565b61134e565b005b61053860048036038101906105339190612b29565b611389565b005b610554600480360381019061054f919061280e565b6113c4565b6040516105619190612598565b60405180910390f35b610572611487565b60405161057f919061284a565b60405180910390f35b6105a2600480360381019061059d91906129b2565b6114b1565b005b6105be60048036038101906105b99190612bac565b6114d2565b6040516105cb91906124e4565b60405180910390f35b6105dc611566565b6040516105e99190612997565b60405180910390f35b61060c60048036038101906106079190612c2a565b61158a565b604051610619919061284a565b60405180910390f35b600061062d82611622565b9050919050565b60606065805461064390612c86565b80601f016020809104026020016040519081016040528092919081815260200182805461066f90612c86565b80156106bc5780601f10610691576101008083540402835291602001916106bc565b820191906000526020600020905b81548152906001019060200180831161069f57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f75750600160008054906101000a900460ff1660ff16105b8061072457506107063061169c565b1580156107235750600160008054906101000a900460ff1660ff16145b5b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612d2a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156107a0576001600060016101000a81548160ff0219169083151502179055505b6107aa84846116bf565b600060c9819055506107bf6000801b8361171c565b6107e97f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361171c565b80156108425760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108399190612d9c565b60405180910390a15b50505050565b60006108538261172a565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089982610c58565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090190612e29565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610929611775565b73ffffffffffffffffffffffffffffffffffffffff161480610958575061095781610952611775565b6114d2565b5b610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612ebb565b60405180910390fd5b6109a1838361177d565b505050565b6000801b6109b381611836565b6109c06000801b8361184a565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612f27565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b60006001151560cb600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514905092915050565b610a97826109ff565b610aa081611836565b610aaa838361192c565b505050565b610ab7611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90612fb9565b60405180910390fd5b610b2e828261184a565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490612f27565b60405180910390fd5b610b7681610c58565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda9061304b565b60405180910390fd5b610bec81611a0d565b600060cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf8906130b7565b60405180910390fd5b80915050919050565b6000801b610d1781611836565b610d246000801b8361192c565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613149565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060c954905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e6490612c86565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9090612c86565b8015610edd5780601f10610eb257610100808354040283529160200191610edd565b820191906000526020600020905b815481529060010190602001808311610ec057829003601f168201915b5050505050905090565b6000801b610ef481611836565b610f1e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361192c565b5050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662923f9e826040518263ffffffff1660e01b8152600401610f7c9190612a01565b602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd919061317e565b610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff3906131f7565b60405180910390fd5b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611059919061284a565b602060405180830381865afa158015611076573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109a919061322c565b116110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d1906132f1565b60405180910390fd5b6000151560cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461117e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117590613383565b60405180910390fd5b61118a3360c954611b2a565b600160cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060cc600060c954815260200190815260200160002081905550600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161126a9190612a01565b602060405180830381865afa158015611287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ab91906133b8565b905060c9548173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f356571a6ca8e1a8f7edf47ba7ce9380ec968da38147ce468113dc66d6120e5578560405161130d9190612a01565b60405180910390a460c9600081548092919061132890613414565b91905055505050565b6000801b81565b61134a611343611775565b8383611d04565b5050565b6000801b61135b81611836565b6113857f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361184a565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bb90612f27565b60405180910390fd5b6060600060cc600084815260200190815260200160002054905060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b81526004016114399190612a01565b600060405180830381865afa158015611456573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061147f91906134cd565b915050919050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114ba826109ff565b6114c381611836565b6114cd838361184a565b505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296115b681611836565b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611695575061169482611e71565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff1661170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613588565b60405180910390fd5b6117188282611f53565b5050565b611726828261192c565b5050565b61173381611fd4565b611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906130b7565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166117f083610c58565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61184781611842611775565b612040565b50565b6118548282610dea565b156119285760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118cd611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6119368282610dea565b611a095760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506119ae611775565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000611a1882610c58565b9050611a26816000846120dd565b611a3160008361177d565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8191906135a8565b925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b26816000846120e2565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9190613628565b60405180910390fd5b611ba381611fd4565b15611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613694565b60405180910390fd5b611bef600083836120dd565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c3f91906136b4565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d00600083836120e2565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a90613756565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e6491906124e4565b60405180910390a3505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f3c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f4c5750611f4b826120e7565b5b9050919050565b600060019054906101000a900460ff16611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613588565b60405180910390fd5b8160659080519060200190611fb892919061238d565b508060669080519060200190611fcf92919061238d565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61204a8282610dea565b6120d95761206f8173ffffffffffffffffffffffffffffffffffffffff166014612151565b61207d8360001c6020612151565b60405160200161208e92919061384a565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d09190612598565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600060028360026121649190613884565b61216e91906136b4565b67ffffffffffffffff811115612187576121866125c4565b5b6040519080825280601f01601f1916602001820160405280156121b95781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121f1576121f06138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612255576122546138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026122959190613884565b61229f91906136b4565b90505b600181111561233f577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122e1576122e06138de565b5b1a60f81b8282815181106122f8576122f76138de565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806123389061390d565b90506122a2565b5060008414612383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237a90613983565b60405180910390fd5b8091505092915050565b82805461239990612c86565b90600052602060002090601f0160209004810192826123bb5760008555612402565b82601f106123d457805160ff1916838001178555612402565b82800160010185558215612402579182015b828111156124015782518255916020019190600101906123e6565b5b50905061240f9190612413565b5090565b5b8082111561242c576000816000905550600101612414565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61247981612444565b811461248457600080fd5b50565b60008135905061249681612470565b92915050565b6000602082840312156124b2576124b161243a565b5b60006124c084828501612487565b91505092915050565b60008115159050919050565b6124de816124c9565b82525050565b60006020820190506124f960008301846124d5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561253957808201518184015260208101905061251e565b83811115612548576000848401525b50505050565b6000601f19601f8301169050919050565b600061256a826124ff565b612574818561250a565b935061258481856020860161251b565b61258d8161254e565b840191505092915050565b600060208201905081810360008301526125b2818461255f565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125fc8261254e565b810181811067ffffffffffffffff8211171561261b5761261a6125c4565b5b80604052505050565b600061262e612430565b905061263a82826125f3565b919050565b600067ffffffffffffffff82111561265a576126596125c4565b5b6126638261254e565b9050602081019050919050565b82818337600083830152505050565b600061269261268d8461263f565b612624565b9050828152602081018484840111156126ae576126ad6125bf565b5b6126b9848285612670565b509392505050565b600082601f8301126126d6576126d56125ba565b5b81356126e684826020860161267f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061271a826126ef565b9050919050565b61272a8161270f565b811461273557600080fd5b50565b60008135905061274781612721565b92915050565b6000806000606084860312156127665761276561243a565b5b600084013567ffffffffffffffff8111156127845761278361243f565b5b612790868287016126c1565b935050602084013567ffffffffffffffff8111156127b1576127b061243f565b5b6127bd868287016126c1565b92505060406127ce86828701612738565b9150509250925092565b6000819050919050565b6127eb816127d8565b81146127f657600080fd5b50565b600081359050612808816127e2565b92915050565b6000602082840312156128245761282361243a565b5b6000612832848285016127f9565b91505092915050565b6128448161270f565b82525050565b600060208201905061285f600083018461283b565b92915050565b6000806040838503121561287c5761287b61243a565b5b600061288a85828601612738565b925050602061289b858286016127f9565b9150509250929050565b6000602082840312156128bb576128ba61243a565b5b60006128c984828501612738565b91505092915050565b6000806000606084860312156128eb576128ea61243a565b5b60006128f986828701612738565b935050602061290a86828701612738565b925050604061291b868287016127f9565b9150509250925092565b6000819050919050565b61293881612925565b811461294357600080fd5b50565b6000813590506129558161292f565b92915050565b6000602082840312156129715761297061243a565b5b600061297f84828501612946565b91505092915050565b61299181612925565b82525050565b60006020820190506129ac6000830184612988565b92915050565b600080604083850312156129c9576129c861243a565b5b60006129d785828601612946565b92505060206129e885828601612738565b9150509250929050565b6129fb816127d8565b82525050565b6000602082019050612a1660008301846129f2565b92915050565b612a25816124c9565b8114612a3057600080fd5b50565b600081359050612a4281612a1c565b92915050565b60008060408385031215612a5f57612a5e61243a565b5b6000612a6d85828601612738565b9250506020612a7e85828601612a33565b9150509250929050565b600067ffffffffffffffff821115612aa357612aa26125c4565b5b612aac8261254e565b9050602081019050919050565b6000612acc612ac784612a88565b612624565b905082815260208101848484011115612ae857612ae76125bf565b5b612af3848285612670565b509392505050565b600082601f830112612b1057612b0f6125ba565b5b8135612b20848260208601612ab9565b91505092915050565b60008060008060808587031215612b4357612b4261243a565b5b6000612b5187828801612738565b9450506020612b6287828801612738565b9350506040612b73878288016127f9565b925050606085013567ffffffffffffffff811115612b9457612b9361243f565b5b612ba087828801612afb565b91505092959194509250565b60008060408385031215612bc357612bc261243a565b5b6000612bd185828601612738565b9250506020612be285828601612738565b9150509250929050565b6000612bf78261270f565b9050919050565b612c0781612bec565b8114612c1257600080fd5b50565b600081359050612c2481612bfe565b92915050565b600060208284031215612c4057612c3f61243a565b5b6000612c4e84828501612c15565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c9e57607f821691505b60208210811415612cb257612cb1612c57565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612d14602e8361250a565b9150612d1f82612cb8565b604082019050919050565b60006020820190508181036000830152612d4381612d07565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612d86612d81612d7c84612d4a565b612d61565b612d54565b9050919050565b612d9681612d6b565b82525050565b6000602082019050612db16000830184612d8d565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e1360218361250a565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612ea5603e8361250a565b9150612eb082612e49565b604082019050919050565b60006020820190508181036000830152612ed481612e98565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612f11601c8361250a565b9150612f1c82612edb565b602082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612fa3602f8361250a565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f4d757374206265206f776e6572206f6620746f6b656e20746f2062652061626c60008201527f6520746f206275726e2069740000000000000000000000000000000000000000602082015250565b6000613035602c8361250a565b915061304082612fd9565b604082019050919050565b6000602082019050818103600083015261306481613028565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006130a160188361250a565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061313360298361250a565b915061313e826130d7565b604082019050919050565b6000602082019050818103600083015261316281613126565b9050919050565b60008151905061317881612a1c565b92915050565b6000602082840312156131945761319361243a565b5b60006131a284828501613169565b91505092915050565b7f436f6e747269627574696f6e20746f6b656e206d757374206578697374000000600082015250565b60006131e1601d8361250a565b91506131ec826131ab565b602082019050919050565b60006020820190508181036000830152613210816131d4565b9050919050565b600081519050613226816127e2565b92915050565b6000602082840312156132425761324161243a565b5b600061325084828501613217565b91505092915050565b7f43616e6e6f7420656e646f72736520776974686f757420616e7920636f6e747260008201527f69627574696f6e73206177617264656420666f722074686973206163636f756e60208201527f742e000000000000000000000000000000000000000000000000000000000000604082015250565b60006132db60428361250a565b91506132e682613259565b606082019050919050565b6000602082019050818103600083015261330a816132ce565b9050919050565b7f436f6e747269627574696f6e732063616e6e6f7420626520656e646f7273656460008201527f2074776963650000000000000000000000000000000000000000000000000000602082015250565b600061336d60268361250a565b915061337882613311565b604082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b6000815190506133b281612721565b92915050565b6000602082840312156133ce576133cd61243a565b5b60006133dc848285016133a3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061341f826127d8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613452576134516133e5565b5b600182019050919050565b600061347061346b8461263f565b612624565b90508281526020810184848401111561348c5761348b6125bf565b5b61349784828561251b565b509392505050565b600082601f8301126134b4576134b36125ba565b5b81516134c484826020860161345d565b91505092915050565b6000602082840312156134e3576134e261243a565b5b600082015167ffffffffffffffff8111156135015761350061243f565b5b61350d8482850161349f565b91505092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613572602b8361250a565b915061357d82613516565b604082019050919050565b600060208201905081810360008301526135a181613565565b9050919050565b60006135b3826127d8565b91506135be836127d8565b9250828210156135d1576135d06133e5565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061361260208361250a565b915061361d826135dc565b602082019050919050565b6000602082019050818103600083015261364181613605565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061367e601c8361250a565b915061368982613648565b602082019050919050565b600060208201905081810360008301526136ad81613671565b9050919050565b60006136bf826127d8565b91506136ca836127d8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136ff576136fe6133e5565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061374060198361250a565b915061374b8261370a565b602082019050919050565b6000602082019050818103600083015261376f81613733565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006137b7601783613776565b91506137c282613781565b601782019050919050565b60006137d8826124ff565b6137e28185613776565b93506137f281856020860161251b565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613834601183613776565b915061383f826137fe565b601182019050919050565b6000613855826137aa565b915061386182856137cd565b915061386c82613827565b915061387882846137cd565b91508190509392505050565b600061388f826127d8565b915061389a836127d8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138d3576138d26133e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613918826127d8565b9150600082141561392c5761392b6133e5565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061396d60208361250a565b915061397882613937565b602082019050919050565b6000602082019050818103600083015261399c81613960565b905091905056fea2646970667358221220c27a4fc2e1b486206b0435b643ec7e074f1a48a64adc633cb770a1b3ef9f26e064736f6c634300080c0033"; type EndorseERC721ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/LikeERC721__factory.ts b/typechain-types/factories/LikeERC721__factory.ts index ac8d7ff..08ca920 100644 --- a/typechain-types/factories/LikeERC721__factory.ts +++ b/typechain-types/factories/LikeERC721__factory.ts @@ -751,7 +751,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506137fa806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063ac8a584a116100a2578063d547741f11610071578063d547741f14610588578063e985e9c5146105a4578063f5b541a6146105d4578063fce0f928146105f2576101e5565b8063ac8a584a14610502578063b88d4fde1461051e578063c87b56dd1461053a578063d47f4d2a1461056a576101e5565b80639870d7fe116100de5780639870d7fe14610490578063a0712d68146104ac578063a217fddf146104c8578063a22cb465146104e6576101e5565b806370a08231146103f457806381045ead1461042457806391d148541461044257806395d89b4114610472576101e5565b8063248a9ca31161018757806342842e0e1161015657806342842e0e1461037057806342966c681461038c5780636352211e146103a857806370480275146103d8576101e5565b8063248a9ca3146102d85780632f2ff15d1461030857806331ad89461461032457806336568abe14610354576101e5565b8063081812fc116101c3578063081812fc14610254578063095ea7b3146102845780631785f53c146102a057806323b872dd146102bc576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063077f224a14610238575b600080fd5b61020460048036038101906101ff91906123b7565b610622565b60405161021191906123ff565b60405180910390f35b610222610634565b60405161022f91906124b3565b60405180910390f35b610252600480360381019061024d9190612668565b6106c6565b005b61026e60048036038101906102699190612729565b610848565b60405161027b9190612765565b60405180910390f35b61029e60048036038101906102999190612780565b61088e565b005b6102ba60048036038101906102b591906127c0565b6109a6565b005b6102d660048036038101906102d191906127ed565b6109c4565b005b6102f260048036038101906102ed9190612876565b6109ff565b6040516102ff91906128b2565b60405180910390f35b610322600480360381019061031d91906128cd565b610a1f565b005b61033e60048036038101906103399190612780565b610a40565b60405161034b91906123ff565b60405180910390f35b61036e600480360381019061036991906128cd565b610aa8565b005b61038a600480360381019061038591906127ed565b610b2b565b005b6103a660048036038101906103a19190612729565b610b66565b005b6103c260048036038101906103bd9190612729565b610c51565b6040516103cf9190612765565b60405180910390f35b6103f260048036038101906103ed91906127c0565b610d03565b005b61040e600480360381019061040991906127c0565b610d21565b60405161041b919061291c565b60405180910390f35b61042c610dd9565b604051610439919061291c565b60405180910390f35b61045c600480360381019061045791906128cd565b610de3565b60405161046991906123ff565b60405180910390f35b61047a610e4e565b60405161048791906124b3565b60405180910390f35b6104aa60048036038101906104a591906127c0565b610ee0565b005b6104c660048036038101906104c19190612729565b610f1b565b005b6104d061124c565b6040516104dd91906128b2565b60405180910390f35b61050060048036038101906104fb9190612963565b611253565b005b61051c600480360381019061051791906127c0565b611269565b005b61053860048036038101906105339190612a44565b6112a4565b005b610554600480360381019061054f9190612729565b6112df565b60405161056191906124b3565b60405180910390f35b6105726113a2565b60405161057f9190612765565b60405180910390f35b6105a2600480360381019061059d91906128cd565b6113cc565b005b6105be60048036038101906105b99190612ac7565b6113ed565b6040516105cb91906123ff565b60405180910390f35b6105dc611481565b6040516105e991906128b2565b60405180910390f35b61060c60048036038101906106079190612b45565b6114a5565b6040516106199190612765565b60405180910390f35b600061062d8261153d565b9050919050565b60606065805461064390612ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461066f90612ba1565b80156106bc5780601f10610691576101008083540402835291602001916106bc565b820191906000526020600020905b81548152906001019060200180831161069f57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f75750600160008054906101000a900460ff1660ff16105b806107245750610706306115b7565b1580156107235750600160008054906101000a900460ff1660ff16145b5b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612c45565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156107a0576001600060016101000a81548160ff0219169083151502179055505b6107aa84846115da565b600060c9819055506107bf6000801b83611637565b6107e97f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611637565b80156108425760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108399190612cb7565b60405180910390a15b50505050565b600061085382611645565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089982610c51565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090190612d44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610929611690565b73ffffffffffffffffffffffffffffffffffffffff161480610958575061095781610952611690565b6113ed565b5b610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612dd6565b60405180910390fd5b6109a18383611698565b505050565b6000801b6109b381611751565b6109c06000801b83611765565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612e42565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b610a28826109ff565b610a3181611751565b610a3b8383611847565b505050565b600060cb600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ab0611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612ed4565b60405180910390fd5b610b278282611765565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90612e42565b60405180910390fd5b610b6f81610c51565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390612f66565b60405180910390fd5b610be581611928565b600060cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190612fd2565b60405180910390fd5b80915050919050565b6000801b610d1081611751565b610d1d6000801b83611847565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613064565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060c954905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e5d90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8990612ba1565b8015610ed65780601f10610eab57610100808354040283529160200191610ed6565b820191906000526020600020905b815481529060010190602001808311610eb957829003601f168201915b5050505050905090565b6000801b610eed81611751565b610f177f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611847565b5050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662923f9e826040518263ffffffff1660e01b8152600401610f75919061291c565b602060405180830381865afa158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190613099565b610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90613112565b60405180910390fd5b6000151560cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611099576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611090906131a4565b60405180910390fd5b6110a53360c954611a45565b600160cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060cc600060c954815260200190815260200160002081905550600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611185919061291c565b602060405180830381865afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c691906131d9565b905060c9548173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f54d59e3685d44d7d4718b5689fc7af9e82003b075c3457881095e0cd2c0ec32a85604051611228919061291c565b60405180910390a460c9600081548092919061124390613235565b91905055505050565b6000801b81565b61126561125e611690565b8383611c1f565b5050565b6000801b61127681611751565b6112a07f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611765565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612e42565b60405180910390fd5b6060600060cc600084815260200190815260200160002054905060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b8152600401611354919061291c565b600060405180830381865afa158015611371573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061139a91906132ee565b915050919050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113d5826109ff565b6113de81611751565b6113e88383611765565b505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296114d181611751565b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115b057506115af82611d8c565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906133a9565b60405180910390fd5b6116338282611e6e565b5050565b6116418282611847565b5050565b61164e81611eef565b61168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612fd2565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661170b83610c51565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6117628161175d611690565b611f5b565b50565b61176f8282610de3565b156118435760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e8611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6118518282610de3565b6119245760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c9611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061193382610c51565b905061194181600084611ff8565b61194c600083611698565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199c91906133c9565b925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a4181600084611ffd565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613449565b60405180910390fd5b611abe81611eef565b15611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906134b5565b60405180910390fd5b611b0a60008383611ff8565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b5a91906134d5565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c1b60008383611ffd565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613577565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d7f91906123ff565b60405180910390a3505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e5757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e675750611e6682612002565b5b9050919050565b600060019054906101000a900460ff16611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb4906133a9565b60405180910390fd5b8160659080519060200190611ed39291906122a8565b508060669080519060200190611eea9291906122a8565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611f658282610de3565b611ff457611f8a8173ffffffffffffffffffffffffffffffffffffffff16601461206c565b611f988360001c602061206c565b604051602001611fa992919061366b565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611feb91906124b3565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000600283600261207f91906136a5565b61208991906134d5565b67ffffffffffffffff8111156120a2576120a16124df565b5b6040519080825280601f01601f1916602001820160405280156120d45781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061210c5761210b6136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121705761216f6136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121b091906136a5565b6121ba91906134d5565b90505b600181111561225a577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106121fc576121fb6136ff565b5b1a60f81b828281518110612213576122126136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806122539061372e565b90506121bd565b506000841461229e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612295906137a4565b60405180910390fd5b8091505092915050565b8280546122b490612ba1565b90600052602060002090601f0160209004810192826122d6576000855561231d565b82601f106122ef57805160ff191683800117855561231d565b8280016001018555821561231d579182015b8281111561231c578251825591602001919060010190612301565b5b50905061232a919061232e565b5090565b5b8082111561234757600081600090555060010161232f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123948161235f565b811461239f57600080fd5b50565b6000813590506123b18161238b565b92915050565b6000602082840312156123cd576123cc612355565b5b60006123db848285016123a2565b91505092915050565b60008115159050919050565b6123f9816123e4565b82525050565b600060208201905061241460008301846123f0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612454578082015181840152602081019050612439565b83811115612463576000848401525b50505050565b6000601f19601f8301169050919050565b60006124858261241a565b61248f8185612425565b935061249f818560208601612436565b6124a881612469565b840191505092915050565b600060208201905081810360008301526124cd818461247a565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61251782612469565b810181811067ffffffffffffffff82111715612536576125356124df565b5b80604052505050565b600061254961234b565b9050612555828261250e565b919050565b600067ffffffffffffffff821115612575576125746124df565b5b61257e82612469565b9050602081019050919050565b82818337600083830152505050565b60006125ad6125a88461255a565b61253f565b9050828152602081018484840111156125c9576125c86124da565b5b6125d484828561258b565b509392505050565b600082601f8301126125f1576125f06124d5565b5b813561260184826020860161259a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126358261260a565b9050919050565b6126458161262a565b811461265057600080fd5b50565b6000813590506126628161263c565b92915050565b60008060006060848603121561268157612680612355565b5b600084013567ffffffffffffffff81111561269f5761269e61235a565b5b6126ab868287016125dc565b935050602084013567ffffffffffffffff8111156126cc576126cb61235a565b5b6126d8868287016125dc565b92505060406126e986828701612653565b9150509250925092565b6000819050919050565b612706816126f3565b811461271157600080fd5b50565b600081359050612723816126fd565b92915050565b60006020828403121561273f5761273e612355565b5b600061274d84828501612714565b91505092915050565b61275f8161262a565b82525050565b600060208201905061277a6000830184612756565b92915050565b6000806040838503121561279757612796612355565b5b60006127a585828601612653565b92505060206127b685828601612714565b9150509250929050565b6000602082840312156127d6576127d5612355565b5b60006127e484828501612653565b91505092915050565b60008060006060848603121561280657612805612355565b5b600061281486828701612653565b935050602061282586828701612653565b925050604061283686828701612714565b9150509250925092565b6000819050919050565b61285381612840565b811461285e57600080fd5b50565b6000813590506128708161284a565b92915050565b60006020828403121561288c5761288b612355565b5b600061289a84828501612861565b91505092915050565b6128ac81612840565b82525050565b60006020820190506128c760008301846128a3565b92915050565b600080604083850312156128e4576128e3612355565b5b60006128f285828601612861565b925050602061290385828601612653565b9150509250929050565b612916816126f3565b82525050565b6000602082019050612931600083018461290d565b92915050565b612940816123e4565b811461294b57600080fd5b50565b60008135905061295d81612937565b92915050565b6000806040838503121561297a57612979612355565b5b600061298885828601612653565b92505060206129998582860161294e565b9150509250929050565b600067ffffffffffffffff8211156129be576129bd6124df565b5b6129c782612469565b9050602081019050919050565b60006129e76129e2846129a3565b61253f565b905082815260208101848484011115612a0357612a026124da565b5b612a0e84828561258b565b509392505050565b600082601f830112612a2b57612a2a6124d5565b5b8135612a3b8482602086016129d4565b91505092915050565b60008060008060808587031215612a5e57612a5d612355565b5b6000612a6c87828801612653565b9450506020612a7d87828801612653565b9350506040612a8e87828801612714565b925050606085013567ffffffffffffffff811115612aaf57612aae61235a565b5b612abb87828801612a16565b91505092959194509250565b60008060408385031215612ade57612add612355565b5b6000612aec85828601612653565b9250506020612afd85828601612653565b9150509250929050565b6000612b128261262a565b9050919050565b612b2281612b07565b8114612b2d57600080fd5b50565b600081359050612b3f81612b19565b92915050565b600060208284031215612b5b57612b5a612355565b5b6000612b6984828501612b30565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb957607f821691505b60208210811415612bcd57612bcc612b72565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612c2f602e83612425565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612ca1612c9c612c9784612c65565b612c7c565b612c6f565b9050919050565b612cb181612c86565b82525050565b6000602082019050612ccc6000830184612ca8565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d2e602183612425565b9150612d3982612cd2565b604082019050919050565b60006020820190508181036000830152612d5d81612d21565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612dc0603e83612425565b9150612dcb82612d64565b604082019050919050565b60006020820190508181036000830152612def81612db3565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612e2c601c83612425565b9150612e3782612df6565b602082019050919050565b60006020820190508181036000830152612e5b81612e1f565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612ebe602f83612425565b9150612ec982612e62565b604082019050919050565b60006020820190508181036000830152612eed81612eb1565b9050919050565b7f4d757374206265206f776e6572206f6620746f6b656e20746f2062652061626c60008201527f6520746f206275726e2069740000000000000000000000000000000000000000602082015250565b6000612f50602c83612425565b9150612f5b82612ef4565b604082019050919050565b60006020820190508181036000830152612f7f81612f43565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612fbc601883612425565b9150612fc782612f86565b602082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061304e602983612425565b915061305982612ff2565b604082019050919050565b6000602082019050818103600083015261307d81613041565b9050919050565b60008151905061309381612937565b92915050565b6000602082840312156130af576130ae612355565b5b60006130bd84828501613084565b91505092915050565b7f436f6e747269627574696f6e20746f6b656e206d757374206578697374000000600082015250565b60006130fc601d83612425565b9150613107826130c6565b602082019050919050565b6000602082019050818103600083015261312b816130ef565b9050919050565b7f436f6e747269627574696f6e732063616e6e6f74206265206c696b656420747760008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b600061318e602383612425565b915061319982613132565b604082019050919050565b600060208201905081810360008301526131bd81613181565b9050919050565b6000815190506131d38161263c565b92915050565b6000602082840312156131ef576131ee612355565b5b60006131fd848285016131c4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613240826126f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561327357613272613206565b5b600182019050919050565b600061329161328c8461255a565b61253f565b9050828152602081018484840111156132ad576132ac6124da565b5b6132b8848285612436565b509392505050565b600082601f8301126132d5576132d46124d5565b5b81516132e584826020860161327e565b91505092915050565b60006020828403121561330457613303612355565b5b600082015167ffffffffffffffff8111156133225761332161235a565b5b61332e848285016132c0565b91505092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613393602b83612425565b915061339e82613337565b604082019050919050565b600060208201905081810360008301526133c281613386565b9050919050565b60006133d4826126f3565b91506133df836126f3565b9250828210156133f2576133f1613206565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613433602083612425565b915061343e826133fd565b602082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061349f601c83612425565b91506134aa82613469565b602082019050919050565b600060208201905081810360008301526134ce81613492565b9050919050565b60006134e0826126f3565b91506134eb836126f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135205761351f613206565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613561601983612425565b915061356c8261352b565b602082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006135d8601783613597565b91506135e3826135a2565b601782019050919050565b60006135f98261241a565b6136038185613597565b9350613613818560208601612436565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613655601183613597565b91506136608261361f565b601182019050919050565b6000613676826135cb565b915061368282856135ee565b915061368d82613648565b915061369982846135ee565b91508190509392505050565b60006136b0826126f3565b91506136bb836126f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136f4576136f3613206565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613739826126f3565b9150600082141561374d5761374c613206565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061378e602083612425565b915061379982613758565b602082019050919050565b600060208201905081810360008301526137bd81613781565b905091905056fea26469706673582212203ace003c301df4dd3f6e682c6d459b2817612906415d371bb27422f8774657f764736f6c634300080c0033"; + "0x608060405234801561001057600080fd5b506137fa806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063ac8a584a116100a2578063d547741f11610071578063d547741f14610588578063e985e9c5146105a4578063f5b541a6146105d4578063fce0f928146105f2576101e5565b8063ac8a584a14610502578063b88d4fde1461051e578063c87b56dd1461053a578063d47f4d2a1461056a576101e5565b80639870d7fe116100de5780639870d7fe14610490578063a0712d68146104ac578063a217fddf146104c8578063a22cb465146104e6576101e5565b806370a08231146103f457806381045ead1461042457806391d148541461044257806395d89b4114610472576101e5565b8063248a9ca31161018757806342842e0e1161015657806342842e0e1461037057806342966c681461038c5780636352211e146103a857806370480275146103d8576101e5565b8063248a9ca3146102d85780632f2ff15d1461030857806331ad89461461032457806336568abe14610354576101e5565b8063081812fc116101c3578063081812fc14610254578063095ea7b3146102845780631785f53c146102a057806323b872dd146102bc576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063077f224a14610238575b600080fd5b61020460048036038101906101ff91906123b7565b610622565b60405161021191906123ff565b60405180910390f35b610222610634565b60405161022f91906124b3565b60405180910390f35b610252600480360381019061024d9190612668565b6106c6565b005b61026e60048036038101906102699190612729565b610848565b60405161027b9190612765565b60405180910390f35b61029e60048036038101906102999190612780565b61088e565b005b6102ba60048036038101906102b591906127c0565b6109a6565b005b6102d660048036038101906102d191906127ed565b6109c4565b005b6102f260048036038101906102ed9190612876565b6109ff565b6040516102ff91906128b2565b60405180910390f35b610322600480360381019061031d91906128cd565b610a1f565b005b61033e60048036038101906103399190612780565b610a40565b60405161034b91906123ff565b60405180910390f35b61036e600480360381019061036991906128cd565b610aa8565b005b61038a600480360381019061038591906127ed565b610b2b565b005b6103a660048036038101906103a19190612729565b610b66565b005b6103c260048036038101906103bd9190612729565b610c51565b6040516103cf9190612765565b60405180910390f35b6103f260048036038101906103ed91906127c0565b610d03565b005b61040e600480360381019061040991906127c0565b610d21565b60405161041b919061291c565b60405180910390f35b61042c610dd9565b604051610439919061291c565b60405180910390f35b61045c600480360381019061045791906128cd565b610de3565b60405161046991906123ff565b60405180910390f35b61047a610e4e565b60405161048791906124b3565b60405180910390f35b6104aa60048036038101906104a591906127c0565b610ee0565b005b6104c660048036038101906104c19190612729565b610f1b565b005b6104d061124c565b6040516104dd91906128b2565b60405180910390f35b61050060048036038101906104fb9190612963565b611253565b005b61051c600480360381019061051791906127c0565b611269565b005b61053860048036038101906105339190612a44565b6112a4565b005b610554600480360381019061054f9190612729565b6112df565b60405161056191906124b3565b60405180910390f35b6105726113a2565b60405161057f9190612765565b60405180910390f35b6105a2600480360381019061059d91906128cd565b6113cc565b005b6105be60048036038101906105b99190612ac7565b6113ed565b6040516105cb91906123ff565b60405180910390f35b6105dc611481565b6040516105e991906128b2565b60405180910390f35b61060c60048036038101906106079190612b45565b6114a5565b6040516106199190612765565b60405180910390f35b600061062d8261153d565b9050919050565b60606065805461064390612ba1565b80601f016020809104026020016040519081016040528092919081815260200182805461066f90612ba1565b80156106bc5780601f10610691576101008083540402835291602001916106bc565b820191906000526020600020905b81548152906001019060200180831161069f57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f75750600160008054906101000a900460ff1660ff16105b806107245750610706306115b7565b1580156107235750600160008054906101000a900460ff1660ff16145b5b610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a90612c45565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156107a0576001600060016101000a81548160ff0219169083151502179055505b6107aa84846115da565b600060c9819055506107bf6000801b83611637565b6107e97f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611637565b80156108425760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108399190612cb7565b60405180910390a15b50505050565b600061085382611645565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089982610c51565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090190612d44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610929611690565b73ffffffffffffffffffffffffffffffffffffffff161480610958575061095781610952611690565b6113ed565b5b610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612dd6565b60405180910390fd5b6109a18383611698565b505050565b6000801b6109b381611751565b6109c06000801b83611765565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f690612e42565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b610a28826109ff565b610a3181611751565b610a3b8383611847565b505050565b600060cb600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610ab0611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490612ed4565b60405180910390fd5b610b278282611765565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90612e42565b60405180910390fd5b610b6f81610c51565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390612f66565b60405180910390fd5b610be581611928565b600060cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf190612fd2565b60405180910390fd5b80915050919050565b6000801b610d1081611751565b610d1d6000801b83611847565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613064565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060c954905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e5d90612ba1565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8990612ba1565b8015610ed65780601f10610eab57610100808354040283529160200191610ed6565b820191906000526020600020905b815481529060010190602001808311610eb957829003601f168201915b5050505050905090565b6000801b610eed81611751565b610f177f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611847565b5050565b60ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662923f9e826040518263ffffffff1660e01b8152600401610f75919061291c565b602060405180830381865afa158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190613099565b610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90613112565b60405180910390fd5b6000151560cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611099576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611090906131a4565b60405180910390fd5b6110a53360c954611a45565b600160cb600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060cc600060c954815260200190815260200160002081905550600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611185919061291c565b602060405180830381865afa1580156111a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c691906131d9565b905060c9548173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f54d59e3685d44d7d4718b5689fc7af9e82003b075c3457881095e0cd2c0ec32a85604051611228919061291c565b60405180910390a460c9600081548092919061124390613235565b91905055505050565b6000801b81565b61126561125e611690565b8383611c1f565b5050565b6000801b61127681611751565b6112a07f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611765565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690612e42565b60405180910390fd5b6060600060cc600084815260200190815260200160002054905060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd826040518263ffffffff1660e01b8152600401611354919061291c565b600060405180830381865afa158015611371573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061139a91906132ee565b915050919050565b600060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113d5826109ff565b6113de81611751565b6113e88383611765565b505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296114d181611751565b8260ca60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115b057506115af82611d8c565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906133a9565b60405180910390fd5b6116338282611e6e565b5050565b6116418282611847565b5050565b61164e81611eef565b61168d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168490612fd2565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661170b83610c51565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6117628161175d611690565b611f5b565b50565b61176f8282610de3565b156118435760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e8611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6118518282610de3565b6119245760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c9611690565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061193382610c51565b905061194181600084611ff8565b61194c600083611698565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199c91906133c9565b925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a4181600084611ffd565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aac90613449565b60405180910390fd5b611abe81611eef565b15611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906134b5565b60405180910390fd5b611b0a60008383611ff8565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b5a91906134d5565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c1b60008383611ffd565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613577565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d7f91906123ff565b60405180910390a3505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611e5757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611e675750611e6682612002565b5b9050919050565b600060019054906101000a900460ff16611ebd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb4906133a9565b60405180910390fd5b8160659080519060200190611ed39291906122a8565b508060669080519060200190611eea9291906122a8565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b611f658282610de3565b611ff457611f8a8173ffffffffffffffffffffffffffffffffffffffff16601461206c565b611f988360001c602061206c565b604051602001611fa992919061366b565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611feb91906124b3565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606000600283600261207f91906136a5565b61208991906134d5565b67ffffffffffffffff8111156120a2576120a16124df565b5b6040519080825280601f01601f1916602001820160405280156120d45781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061210c5761210b6136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121705761216f6136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121b091906136a5565b6121ba91906134d5565b90505b600181111561225a577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106121fc576121fb6136ff565b5b1a60f81b828281518110612213576122126136ff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806122539061372e565b90506121bd565b506000841461229e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612295906137a4565b60405180910390fd5b8091505092915050565b8280546122b490612ba1565b90600052602060002090601f0160209004810192826122d6576000855561231d565b82601f106122ef57805160ff191683800117855561231d565b8280016001018555821561231d579182015b8281111561231c578251825591602001919060010190612301565b5b50905061232a919061232e565b5090565b5b8082111561234757600081600090555060010161232f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123948161235f565b811461239f57600080fd5b50565b6000813590506123b18161238b565b92915050565b6000602082840312156123cd576123cc612355565b5b60006123db848285016123a2565b91505092915050565b60008115159050919050565b6123f9816123e4565b82525050565b600060208201905061241460008301846123f0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612454578082015181840152602081019050612439565b83811115612463576000848401525b50505050565b6000601f19601f8301169050919050565b60006124858261241a565b61248f8185612425565b935061249f818560208601612436565b6124a881612469565b840191505092915050565b600060208201905081810360008301526124cd818461247a565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61251782612469565b810181811067ffffffffffffffff82111715612536576125356124df565b5b80604052505050565b600061254961234b565b9050612555828261250e565b919050565b600067ffffffffffffffff821115612575576125746124df565b5b61257e82612469565b9050602081019050919050565b82818337600083830152505050565b60006125ad6125a88461255a565b61253f565b9050828152602081018484840111156125c9576125c86124da565b5b6125d484828561258b565b509392505050565b600082601f8301126125f1576125f06124d5565b5b813561260184826020860161259a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126358261260a565b9050919050565b6126458161262a565b811461265057600080fd5b50565b6000813590506126628161263c565b92915050565b60008060006060848603121561268157612680612355565b5b600084013567ffffffffffffffff81111561269f5761269e61235a565b5b6126ab868287016125dc565b935050602084013567ffffffffffffffff8111156126cc576126cb61235a565b5b6126d8868287016125dc565b92505060406126e986828701612653565b9150509250925092565b6000819050919050565b612706816126f3565b811461271157600080fd5b50565b600081359050612723816126fd565b92915050565b60006020828403121561273f5761273e612355565b5b600061274d84828501612714565b91505092915050565b61275f8161262a565b82525050565b600060208201905061277a6000830184612756565b92915050565b6000806040838503121561279757612796612355565b5b60006127a585828601612653565b92505060206127b685828601612714565b9150509250929050565b6000602082840312156127d6576127d5612355565b5b60006127e484828501612653565b91505092915050565b60008060006060848603121561280657612805612355565b5b600061281486828701612653565b935050602061282586828701612653565b925050604061283686828701612714565b9150509250925092565b6000819050919050565b61285381612840565b811461285e57600080fd5b50565b6000813590506128708161284a565b92915050565b60006020828403121561288c5761288b612355565b5b600061289a84828501612861565b91505092915050565b6128ac81612840565b82525050565b60006020820190506128c760008301846128a3565b92915050565b600080604083850312156128e4576128e3612355565b5b60006128f285828601612861565b925050602061290385828601612653565b9150509250929050565b612916816126f3565b82525050565b6000602082019050612931600083018461290d565b92915050565b612940816123e4565b811461294b57600080fd5b50565b60008135905061295d81612937565b92915050565b6000806040838503121561297a57612979612355565b5b600061298885828601612653565b92505060206129998582860161294e565b9150509250929050565b600067ffffffffffffffff8211156129be576129bd6124df565b5b6129c782612469565b9050602081019050919050565b60006129e76129e2846129a3565b61253f565b905082815260208101848484011115612a0357612a026124da565b5b612a0e84828561258b565b509392505050565b600082601f830112612a2b57612a2a6124d5565b5b8135612a3b8482602086016129d4565b91505092915050565b60008060008060808587031215612a5e57612a5d612355565b5b6000612a6c87828801612653565b9450506020612a7d87828801612653565b9350506040612a8e87828801612714565b925050606085013567ffffffffffffffff811115612aaf57612aae61235a565b5b612abb87828801612a16565b91505092959194509250565b60008060408385031215612ade57612add612355565b5b6000612aec85828601612653565b9250506020612afd85828601612653565b9150509250929050565b6000612b128261262a565b9050919050565b612b2281612b07565b8114612b2d57600080fd5b50565b600081359050612b3f81612b19565b92915050565b600060208284031215612b5b57612b5a612355565b5b6000612b6984828501612b30565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb957607f821691505b60208210811415612bcd57612bcc612b72565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612c2f602e83612425565b9150612c3a82612bd3565b604082019050919050565b60006020820190508181036000830152612c5e81612c22565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612ca1612c9c612c9784612c65565b612c7c565b612c6f565b9050919050565b612cb181612c86565b82525050565b6000602082019050612ccc6000830184612ca8565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d2e602183612425565b9150612d3982612cd2565b604082019050919050565b60006020820190508181036000830152612d5d81612d21565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612dc0603e83612425565b9150612dcb82612d64565b604082019050919050565b60006020820190508181036000830152612def81612db3565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612e2c601c83612425565b9150612e3782612df6565b602082019050919050565b60006020820190508181036000830152612e5b81612e1f565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612ebe602f83612425565b9150612ec982612e62565b604082019050919050565b60006020820190508181036000830152612eed81612eb1565b9050919050565b7f4d757374206265206f776e6572206f6620746f6b656e20746f2062652061626c60008201527f6520746f206275726e2069740000000000000000000000000000000000000000602082015250565b6000612f50602c83612425565b9150612f5b82612ef4565b604082019050919050565b60006020820190508181036000830152612f7f81612f43565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612fbc601883612425565b9150612fc782612f86565b602082019050919050565b60006020820190508181036000830152612feb81612faf565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061304e602983612425565b915061305982612ff2565b604082019050919050565b6000602082019050818103600083015261307d81613041565b9050919050565b60008151905061309381612937565b92915050565b6000602082840312156130af576130ae612355565b5b60006130bd84828501613084565b91505092915050565b7f436f6e747269627574696f6e20746f6b656e206d757374206578697374000000600082015250565b60006130fc601d83612425565b9150613107826130c6565b602082019050919050565b6000602082019050818103600083015261312b816130ef565b9050919050565b7f436f6e747269627574696f6e732063616e6e6f74206265206c696b656420747760008201527f6963650000000000000000000000000000000000000000000000000000000000602082015250565b600061318e602383612425565b915061319982613132565b604082019050919050565b600060208201905081810360008301526131bd81613181565b9050919050565b6000815190506131d38161263c565b92915050565b6000602082840312156131ef576131ee612355565b5b60006131fd848285016131c4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613240826126f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561327357613272613206565b5b600182019050919050565b600061329161328c8461255a565b61253f565b9050828152602081018484840111156132ad576132ac6124da565b5b6132b8848285612436565b509392505050565b600082601f8301126132d5576132d46124d5565b5b81516132e584826020860161327e565b91505092915050565b60006020828403121561330457613303612355565b5b600082015167ffffffffffffffff8111156133225761332161235a565b5b61332e848285016132c0565b91505092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613393602b83612425565b915061339e82613337565b604082019050919050565b600060208201905081810360008301526133c281613386565b9050919050565b60006133d4826126f3565b91506133df836126f3565b9250828210156133f2576133f1613206565b5b828203905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613433602083612425565b915061343e826133fd565b602082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061349f601c83612425565b91506134aa82613469565b602082019050919050565b600060208201905081810360008301526134ce81613492565b9050919050565b60006134e0826126f3565b91506134eb836126f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135205761351f613206565b5b828201905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613561601983612425565b915061356c8261352b565b602082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006135d8601783613597565b91506135e3826135a2565b601782019050919050565b60006135f98261241a565b6136038185613597565b9350613613818560208601612436565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613655601183613597565b91506136608261361f565b601182019050919050565b6000613676826135cb565b915061368282856135ee565b915061368d82613648565b915061369982846135ee565b91508190509392505050565b60006136b0826126f3565b91506136bb836126f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136f4576136f3613206565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613739826126f3565b9150600082141561374d5761374c613206565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061378e602083612425565b915061379982613758565b602082019050919050565b600060208201905081810360008301526137bd81613781565b905091905056fea26469706673582212201d06c4988714fa69b35aaf15f752628bf5e4c020fb4765672607dd46ee67562464736f6c634300080c0033"; type LikeERC721ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/ShareableERC721__factory.ts b/typechain-types/factories/ShareableERC721__factory.ts index 1a7eed9..7ad4a72 100644 --- a/typechain-types/factories/ShareableERC721__factory.ts +++ b/typechain-types/factories/ShareableERC721__factory.ts @@ -323,6 +323,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [ { @@ -463,6 +476,44 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "isDerivedFrom", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "isOriginalToken", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -771,7 +822,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506135a7806100206000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806370a0823111610104578063ac8a584a116100a2578063d547741f11610071578063d547741f1461055e578063ded6338b1461057a578063e985e9c514610596578063f5b541a6146105c6576101d9565b8063ac8a584a146104da578063b88d4fde146104f6578063c87b56dd14610512578063d0def52114610542576101d9565b806395d89b41116100de57806395d89b41146104665780639870d7fe14610484578063a217fddf146104a0578063a22cb465146104be576101d9565b806370a08231146103e857806381045ead1461041857806391d1485414610436576101d9565b806323b872dd1161017c57806342842e0e1161014b57806342842e0e1461036457806355f804b3146103805780636352211e1461039c57806370480275146103cc576101d9565b806323b872dd146102e0578063248a9ca3146102fc5780632f2ff15d1461032c57806336568abe14610348576101d9565b8063077f224a116101b8578063077f224a1461025c578063081812fc14610278578063095ea7b3146102a85780631785f53c146102c4576101d9565b8062923f9e146101de57806301ffc9a71461020e57806306fdde031461023e575b600080fd5b6101f860048036038101906101f391906121a3565b6105e4565b60405161020591906121eb565b60405180910390f35b6102286004803603810190610223919061225e565b6105f6565b60405161023591906121eb565b60405180910390f35b610246610608565b6040516102539190612324565b60405180910390f35b610276600480360381019061027191906124d9565b61069a565b005b610292600480360381019061028d91906121a3565b61081c565b60405161029f9190612573565b60405180910390f35b6102c260048036038101906102bd919061258e565b610862565b005b6102de60048036038101906102d991906125ce565b61097a565b005b6102fa60048036038101906102f591906125fb565b610998565b005b61031660048036038101906103119190612684565b6109d3565b60405161032391906126c0565b60405180910390f35b610346600480360381019061034191906126db565b6109f3565b005b610362600480360381019061035d91906126db565b610a14565b005b61037e600480360381019061037991906125fb565b610a97565b005b61039a6004803603810190610395919061271b565b610ad2565b005b6103b660048036038101906103b191906121a3565b610b5e565b6040516103c39190612573565b60405180910390f35b6103e660048036038101906103e191906125ce565b610c10565b005b61040260048036038101906103fd91906125ce565b610c2e565b60405161040f9190612773565b60405180910390f35b610420610ce6565b60405161042d9190612773565b60405180910390f35b610450600480360381019061044b91906126db565b610cf0565b60405161045d91906121eb565b60405180910390f35b61046e610d5b565b60405161047b9190612324565b60405180910390f35b61049e600480360381019061049991906125ce565b610ded565b005b6104a8610e28565b6040516104b591906126c0565b60405180910390f35b6104d860048036038101906104d391906127ba565b610e2f565b005b6104f460048036038101906104ef91906125ce565b610e45565b005b610510600480360381019061050b919061289b565b610e80565b005b61052c600480360381019061052791906121a3565b610ebb565b6040516105399190612324565b60405180910390f35b61055c6004803603810190610557919061291e565b610f23565b005b610578600480360381019061057391906126db565b610fde565b005b610594600480360381019061058f919061258e565b610fff565b005b6105b060048036038101906105ab919061297a565b6111bd565b6040516105bd91906121eb565b60405180910390f35b6105ce611251565b6040516105db91906126c0565b60405180910390f35b60006105ef82611275565b9050919050565b6000610601826112e1565b9050919050565b606060658054610617906129e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610643906129e9565b80156106905780601f1061066557610100808354040283529160200191610690565b820191906000526020600020905b81548152906001019060200180831161067357829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106cb5750600160008054906101000a900460ff1660ff16105b806106f857506106da3061135b565b1580156106f75750600160008054906101000a900460ff1660ff16145b5b610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90612a8d565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610774576001600060016101000a81548160ff0219169083151502179055505b61077e848461137e565b600060ca819055506107936000801b836113db565b6107bd7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836113db565b80156108165760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161080d9190612aff565b60405180910390a15b50505050565b6000610827826113e9565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061086d82610b5e565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612b8c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fd611434565b73ffffffffffffffffffffffffffffffffffffffff16148061092c575061092b81610926611434565b6111bd565b5b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290612c1e565b60405180910390fd5b610975838361143c565b505050565b6000801b610987816114f5565b6109946000801b83611509565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90612c8a565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b6109fc826109d3565b610a05816114f5565b610a0f83836115eb565b505050565b610a1c611434565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090612d1c565b60405180910390fd5b610a938282611509565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990612c8a565b60405180910390fd5b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610afc816114f5565b600030905082610b238273ffffffffffffffffffffffffffffffffffffffff1660146116cc565b604051602001610b34929190612d9e565b60405160208183030381529060405260c99080519060200190610b589291906120b6565b50505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90612e1d565b60405180910390fd5b80915050919050565b6000801b610c1d816114f5565b610c2a6000801b836115eb565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690612eaf565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060ca54905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610d6a906129e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d96906129e9565b8015610de35780601f10610db857610100808354040283529160200191610de3565b820191906000526020600020905b815481529060010190602001808311610dc657829003601f168201915b5050505050905090565b6000801b610dfa816114f5565b610e247f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929836115eb565b5050565b6000801b81565b610e41610e3a611434565b8383611908565b5050565b6000801b610e52816114f5565b610e7c7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611509565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612c8a565b60405180910390fd5b6060610ec6826113e9565b6000610ed0611a75565b90506000815111610ef05760405180602001604052806000815250610f1b565b80610efa84611b07565b604051602001610f0b929190612ecf565b6040516020818303038152906040525b915050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610f4d816114f5565b610f598360ca54611c68565b60ca548373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0a379200ca4d32ac7f1351005f51ef6d49dae15616e15e868f304fc5469e6d0a85604051610fb99190612324565b60405180910390a460ca6000815480929190610fd490612f22565b9190505550505050565b610fe7826109d3565b610ff0816114f5565b610ffa8383611509565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690612fb7565b60405180910390fd5b61107881611275565b6110b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ae90613049565b60405180910390fd5b6110c081610b5e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611124906130db565b60405180910390fd5b6111398260ca54611c68565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc9a349c2b09c746e2edebb75faaf556c1c0c89d2c196a1f988ece46ee152bd52846040516111999190612773565b60405180910390a460ca60008154809291906111b490612f22565b91905055505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611354575061135382611e42565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c49061316d565b60405180910390fd5b6113d78282611f24565b5050565b6113e582826115eb565b5050565b6113f281611275565b611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612e1d565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114af83610b5e565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61150681611501611434565b611fa5565b50565b6115138282610cf0565b156115e75760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061158c611434565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6115f58282610cf0565b6116c85760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061166d611434565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6060600060028360026116df919061318d565b6116e991906131e7565b67ffffffffffffffff81111561170257611701612350565b5b6040519080825280601f01601f1916602001820160405280156117345781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061176c5761176b61323d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106117d0576117cf61323d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611810919061318d565b61181a91906131e7565b90505b60018111156118ba577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061185c5761185b61323d565b5b1a60f81b8282815181106118735761187261323d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806118b39061326c565b905061181d565b50600084146118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906132e2565b60405180910390fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e9061334e565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611a6891906121eb565b60405180910390a3505050565b606060c98054611a84906129e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab0906129e9565b8015611afd5780601f10611ad257610100808354040283529160200191611afd565b820191906000526020600020905b815481529060010190602001808311611ae057829003601f168201915b5050505050905090565b60606000821415611b4f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611c63565b600082905060005b60008214611b81578080611b6a90612f22565b915050600a82611b7a919061339d565b9150611b57565b60008167ffffffffffffffff811115611b9d57611b9c612350565b5b6040519080825280601f01601f191660200182016040528015611bcf5781602001600182028036833780820191505090505b5090505b60008514611c5c57600182611be891906133ce565b9150600a85611bf79190613402565b6030611c0391906131e7565b60f81b818381518110611c1957611c1861323d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611c55919061339d565b9450611bd3565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90612fb7565b60405180910390fd5b611ce181611275565b15611d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d189061347f565b60405180910390fd5b611d2d60008383612042565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d7d91906131e7565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e3e60008383612047565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f0d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f1d5750611f1c8261204c565b5b9050919050565b600060019054906101000a900460ff16611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a9061316d565b60405180910390fd5b8160659080519060200190611f899291906120b6565b508060669080519060200190611fa09291906120b6565b505050565b611faf8282610cf0565b61203e57611fd48173ffffffffffffffffffffffffffffffffffffffff1660146116cc565b611fe28360001c60206116cc565b604051602001611ff3929190613537565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120359190612324565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8280546120c2906129e9565b90600052602060002090601f0160209004810192826120e4576000855561212b565b82601f106120fd57805160ff191683800117855561212b565b8280016001018555821561212b579182015b8281111561212a57825182559160200191906001019061210f565b5b509050612138919061213c565b5090565b5b8082111561215557600081600090555060010161213d565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6121808161216d565b811461218b57600080fd5b50565b60008135905061219d81612177565b92915050565b6000602082840312156121b9576121b8612163565b5b60006121c78482850161218e565b91505092915050565b60008115159050919050565b6121e5816121d0565b82525050565b600060208201905061220060008301846121dc565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61223b81612206565b811461224657600080fd5b50565b60008135905061225881612232565b92915050565b60006020828403121561227457612273612163565b5b600061228284828501612249565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122c55780820151818401526020810190506122aa565b838111156122d4576000848401525b50505050565b6000601f19601f8301169050919050565b60006122f68261228b565b6123008185612296565b93506123108185602086016122a7565b612319816122da565b840191505092915050565b6000602082019050818103600083015261233e81846122eb565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612388826122da565b810181811067ffffffffffffffff821117156123a7576123a6612350565b5b80604052505050565b60006123ba612159565b90506123c6828261237f565b919050565b600067ffffffffffffffff8211156123e6576123e5612350565b5b6123ef826122da565b9050602081019050919050565b82818337600083830152505050565b600061241e612419846123cb565b6123b0565b90508281526020810184848401111561243a5761243961234b565b5b6124458482856123fc565b509392505050565b600082601f83011261246257612461612346565b5b813561247284826020860161240b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124a68261247b565b9050919050565b6124b68161249b565b81146124c157600080fd5b50565b6000813590506124d3816124ad565b92915050565b6000806000606084860312156124f2576124f1612163565b5b600084013567ffffffffffffffff8111156125105761250f612168565b5b61251c8682870161244d565b935050602084013567ffffffffffffffff81111561253d5761253c612168565b5b6125498682870161244d565b925050604061255a868287016124c4565b9150509250925092565b61256d8161249b565b82525050565b60006020820190506125886000830184612564565b92915050565b600080604083850312156125a5576125a4612163565b5b60006125b3858286016124c4565b92505060206125c48582860161218e565b9150509250929050565b6000602082840312156125e4576125e3612163565b5b60006125f2848285016124c4565b91505092915050565b60008060006060848603121561261457612613612163565b5b6000612622868287016124c4565b9350506020612633868287016124c4565b92505060406126448682870161218e565b9150509250925092565b6000819050919050565b6126618161264e565b811461266c57600080fd5b50565b60008135905061267e81612658565b92915050565b60006020828403121561269a57612699612163565b5b60006126a88482850161266f565b91505092915050565b6126ba8161264e565b82525050565b60006020820190506126d560008301846126b1565b92915050565b600080604083850312156126f2576126f1612163565b5b60006127008582860161266f565b9250506020612711858286016124c4565b9150509250929050565b60006020828403121561273157612730612163565b5b600082013567ffffffffffffffff81111561274f5761274e612168565b5b61275b8482850161244d565b91505092915050565b61276d8161216d565b82525050565b60006020820190506127886000830184612764565b92915050565b612797816121d0565b81146127a257600080fd5b50565b6000813590506127b48161278e565b92915050565b600080604083850312156127d1576127d0612163565b5b60006127df858286016124c4565b92505060206127f0858286016127a5565b9150509250929050565b600067ffffffffffffffff82111561281557612814612350565b5b61281e826122da565b9050602081019050919050565b600061283e612839846127fa565b6123b0565b90508281526020810184848401111561285a5761285961234b565b5b6128658482856123fc565b509392505050565b600082601f83011261288257612881612346565b5b813561289284826020860161282b565b91505092915050565b600080600080608085870312156128b5576128b4612163565b5b60006128c3878288016124c4565b94505060206128d4878288016124c4565b93505060406128e58782880161218e565b925050606085013567ffffffffffffffff81111561290657612905612168565b5b6129128782880161286d565b91505092959194509250565b6000806040838503121561293557612934612163565b5b6000612943858286016124c4565b925050602083013567ffffffffffffffff81111561296457612963612168565b5b6129708582860161244d565b9150509250929050565b6000806040838503121561299157612990612163565b5b600061299f858286016124c4565b92505060206129b0858286016124c4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a0157607f821691505b60208210811415612a1557612a146129ba565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612a77602e83612296565b9150612a8282612a1b565b604082019050919050565b60006020820190508181036000830152612aa681612a6a565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612ae9612ae4612adf84612aad565b612ac4565b612ab7565b9050919050565b612af981612ace565b82525050565b6000602082019050612b146000830184612af0565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b76602183612296565b9150612b8182612b1a565b604082019050919050565b60006020820190508181036000830152612ba581612b69565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612c08603e83612296565b9150612c1382612bac565b604082019050919050565b60006020820190508181036000830152612c3781612bfb565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612c74601c83612296565b9150612c7f82612c3e565b602082019050919050565b60006020820190508181036000830152612ca381612c67565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612d06602f83612296565b9150612d1182612caa565b604082019050919050565b60006020820190508181036000830152612d3581612cf9565b9050919050565b600081905092915050565b6000612d528261228b565b612d5c8185612d3c565b9350612d6c8185602086016122a7565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b6000612daa8285612d47565b9150612db68284612d47565b9150612dc182612d78565b6001820191508190509392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612e07601883612296565b9150612e1282612dd1565b602082019050919050565b60006020820190508181036000830152612e3681612dfa565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612e99602983612296565b9150612ea482612e3d565b604082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b6000612edb8285612d47565b9150612ee78284612d47565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f2d8261216d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f6057612f5f612ef3565b5b600182019050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612fa1602083612296565b9150612fac82612f6b565b602082019050919050565b60006020820190508181036000830152612fd081612f94565b9050919050565b7f536861726561626c654552433732313a20746f6b656e20746f2062652073686160008201527f726564206d757374206578697374000000000000000000000000000000000000602082015250565b6000613033602e83612296565b915061303e82612fd7565b604082019050919050565b6000602082019050818103600083015261306281613026565b9050919050565b7f4d6574686f642063616c6c6572206d75737420626520746865206f776e65722060008201527f6f6620746f6b656e000000000000000000000000000000000000000000000000602082015250565b60006130c5602883612296565b91506130d082613069565b604082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613157602b83612296565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b60006131988261216d565b91506131a38361216d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131dc576131db612ef3565b5b828202905092915050565b60006131f28261216d565b91506131fd8361216d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561323257613231612ef3565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006132778261216d565b9150600082141561328b5761328a612ef3565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006132cc602083612296565b91506132d782613296565b602082019050919050565b600060208201905081810360008301526132fb816132bf565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613338601983612296565b915061334382613302565b602082019050919050565b600060208201905081810360008301526133678161332b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133a88261216d565b91506133b38361216d565b9250826133c3576133c261336e565b5b828204905092915050565b60006133d98261216d565b91506133e48361216d565b9250828210156133f7576133f6612ef3565b5b828203905092915050565b600061340d8261216d565b91506134188361216d565b9250826134285761342761336e565b5b828206905092915050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613469601c83612296565b915061347482613433565b602082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006134d5601783612d3c565b91506134e08261349f565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613521601183612d3c565b915061352c826134eb565b601182019050919050565b6000613542826134c8565b915061354e8285612d47565b915061355982613514565b91506135658284612d47565b9150819050939250505056fea2646970667358221220a565854223f5a872acb936a1be92a838a32bea33c23fc9eaf66fb0ada176529664736f6c634300080c0033"; + "0x608060405234801561001057600080fd5b50613a42806100206000396000f3fe608060405234801561001057600080fd5b50600436106101fa5760003560e01c8063704802751161011a578063a22cb465116100ad578063d0def5211161007c578063d0def521146105df578063d547741f146105fb578063ded6338b14610617578063e985e9c514610633578063f5b541a614610663576101fa565b8063a22cb4651461055b578063ac8a584a14610577578063b88d4fde14610593578063c87b56dd146105af576101fa565b806391d14854116100e957806391d14854146104d357806395d89b41146105035780639870d7fe14610521578063a217fddf1461053d576101fa565b8063704802751461043957806370a082311461045557806381045ead14610485578063821af93c146104a3576101fa565b8063248a9ca31161019257806342842e0e1161016157806342842e0e146103b557806342966c68146103d157806355f804b3146103ed5780636352211e14610409576101fa565b8063248a9ca31461031d5780632732c5101461034d5780632f2ff15d1461037d57806336568abe14610399576101fa565b8063081812fc116101ce578063081812fc14610299578063095ea7b3146102c95780631785f53c146102e557806323b872dd14610301576101fa565b8062923f9e146101ff57806301ffc9a71461022f57806306fdde031461025f578063077f224a1461027d575b600080fd5b6102196004803603810190610214919061251a565b610681565b6040516102269190612562565b60405180910390f35b610249600480360381019061024491906125d5565b610693565b6040516102569190612562565b60405180910390f35b6102676106a5565b604051610274919061269b565b60405180910390f35b61029760048036038101906102929190612850565b610737565b005b6102b360048036038101906102ae919061251a565b6108b9565b6040516102c091906128ea565b60405180910390f35b6102e360048036038101906102de9190612905565b6108ff565b005b6102ff60048036038101906102fa9190612945565b610a17565b005b61031b60048036038101906103169190612972565b610a35565b005b610337600480360381019061033291906129fb565b610a70565b6040516103449190612a37565b60405180910390f35b6103676004803603810190610362919061251a565b610a90565b6040516103749190612a61565b60405180910390f35b61039760048036038101906103929190612a7c565b610af5565b005b6103b360048036038101906103ae9190612a7c565b610b16565b005b6103cf60048036038101906103ca9190612972565b610b99565b005b6103eb60048036038101906103e6919061251a565b610bd4565b005b61040760048036038101906104029190612abc565b610c56565b005b610423600480360381019061041e919061251a565b610ce2565b60405161043091906128ea565b60405180910390f35b610453600480360381019061044e9190612945565b610d94565b005b61046f600480360381019061046a9190612945565b610db2565b60405161047c9190612a61565b60405180910390f35b61048d610e6a565b60405161049a9190612a61565b60405180910390f35b6104bd60048036038101906104b8919061251a565b610e74565b6040516104ca9190612562565b60405180910390f35b6104ed60048036038101906104e89190612a7c565b610ee6565b6040516104fa9190612562565b60405180910390f35b61050b610f51565b604051610518919061269b565b60405180910390f35b61053b60048036038101906105369190612945565b610fe3565b005b61054561101e565b6040516105529190612a37565b60405180910390f35b61057560048036038101906105709190612b31565b611025565b005b610591600480360381019061058c9190612945565b61103b565b005b6105ad60048036038101906105a89190612c12565b611076565b005b6105c960048036038101906105c4919061251a565b6110b1565b6040516105d6919061269b565b60405180910390f35b6105f960048036038101906105f49190612c95565b611119565b005b61061560048036038101906106109190612a7c565b61121e565b005b610631600480360381019061062c9190612905565b61123f565b005b61064d60048036038101906106489190612cf1565b611417565b60405161065a9190612562565b60405180910390f35b61066b6114ab565b6040516106789190612a37565b60405180910390f35b600061068c826114cf565b9050919050565b600061069e8261153b565b9050919050565b6060606580546106b490612d60565b80601f01602080910402602001604051908101604052809291908181526020018280546106e090612d60565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156107685750600160008054906101000a900460ff1660ff16105b806107955750610777306115b5565b1580156107945750600160008054906101000a900460ff1660ff16145b5b6107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb90612e04565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015610811576001600060016101000a81548160ff0219169083151502179055505b61081b84846115d8565b600060ca819055506108306000801b83611635565b61085a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611635565b80156108b35760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108aa9190612e76565b60405180910390a15b50505050565b60006108c482611643565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061090a82610ce2565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561097b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097290612f03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661099a61168e565b73ffffffffffffffffffffffffffffffffffffffff1614806109c957506109c8816109c361168e565b611417565b5b610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90612f95565b60405180910390fd5b610a128383611696565b505050565b6000801b610a248161174f565b610a316000801b83611763565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6790613001565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b6000610a9b826114cf565b610ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad190613093565b60405180910390fd5b60cc6000838152602001908152602001600020549050919050565b610afe82610a70565b610b078161174f565b610b118383611845565b505050565b610b1e61168e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8290613125565b60405180910390fd5b610b958282611763565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcb90613001565b60405180910390fd5b610bdd81610ce2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906131b7565b60405180910390fd5b610c5381611926565b50565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610c808161174f565b600030905082610ca78273ffffffffffffffffffffffffffffffffffffffff166014611a43565b604051602001610cb8929190613239565b60405160208183030381529060405260c99080519060200190610cdc92919061242d565b50505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d82906132b8565b60405180910390fd5b80915050919050565b6000801b610da18161174f565b610dae6000801b83611845565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a9061334a565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060ca54905090565b6000610e7f826114cf565b610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590613093565b60405180910390fd5b60cb600083815260200190815260200160002060009054906101000a900460ff169050919050565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610f6090612d60565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8c90612d60565b8015610fd95780601f10610fae57610100808354040283529160200191610fd9565b820191906000526020600020905b815481529060010190602001808311610fbc57829003601f168201915b5050505050905090565b6000801b610ff08161174f565b61101a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611845565b5050565b6000801b81565b61103761103061168e565b8383611c7f565b5050565b6000801b6110488161174f565b6110727f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92983611763565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a890613001565b60405180910390fd5b60606110bc82611643565b60006110c6611dec565b905060008151116110e65760405180602001604052806000815250611111565b806110f084611e7e565b60405160200161110192919061336a565b6040516020818303038152906040525b915050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9296111438161174f565b61114f8360ca54611fdf565b60ca548373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f0a379200ca4d32ac7f1351005f51ef6d49dae15616e15e868f304fc5469e6d0a856040516111af919061269b565b60405180910390a4600160cb600060ca54815260200190815260200160002060006101000a81548160ff02191690831515021790555060ca5460cc600060ca5481526020019081526020016000208190555060ca6000815480929190611214906133bd565b9190505550505050565b61122782610a70565b6112308161174f565b61123a8383611763565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a690613452565b60405180910390fd5b6112b8816114cf565b6112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee906134e4565b60405180910390fd5b61130081610ce2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490613576565b60405180910390fd5b6113798260ca54611fdf565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc9a349c2b09c746e2edebb75faaf556c1c0c89d2c196a1f988ece46ee152bd52846040516113d99190612a61565b60405180910390a48060cc600060ca5481526020019081526020016000208190555060ca600081548092919061140e906133bd565b91905055505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806115ae57506115ad826121b9565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613608565b60405180910390fd5b611631828261229b565b5050565b61163f8282611845565b5050565b61164c816114cf565b61168b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611682906132b8565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661170983610ce2565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6117608161175b61168e565b61231c565b50565b61176d8282610ee6565b156118415760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506117e661168e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b61184f8282610ee6565b6119225760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c761168e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600061193182610ce2565b905061193f816000846123b9565b61194a600083611696565b6001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461199a9190613628565b925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a3f816000846123be565b5050565b606060006002836002611a56919061365c565b611a6091906136b6565b67ffffffffffffffff811115611a7957611a786126c7565b5b6040519080825280601f01601f191660200182016040528015611aab5781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611ae357611ae261370c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611b4757611b4661370c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611b87919061365c565b611b9191906136b6565b90505b6001811115611c31577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611bd357611bd261370c565b5b1a60f81b828281518110611bea57611be961370c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611c2a9061373b565b9050611b94565b5060008414611c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6c906137b1565b60405180910390fd5b8091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce59061381d565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ddf9190612562565b60405180910390a3505050565b606060c98054611dfb90612d60565b80601f0160208091040260200160405190810160405280929190818152602001828054611e2790612d60565b8015611e745780601f10611e4957610100808354040283529160200191611e74565b820191906000526020600020905b815481529060010190602001808311611e5757829003601f168201915b5050505050905090565b60606000821415611ec6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611fda565b600082905060005b60008214611ef8578080611ee1906133bd565b915050600a82611ef1919061386c565b9150611ece565b60008167ffffffffffffffff811115611f1457611f136126c7565b5b6040519080825280601f01601f191660200182016040528015611f465781602001600182028036833780820191505090505b5090505b60008514611fd357600182611f5f9190613628565b9150600a85611f6e919061389d565b6030611f7a91906136b6565b60f81b818381518110611f9057611f8f61370c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611fcc919061386c565b9450611f4a565b8093505050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613452565b60405180910390fd5b612058816114cf565b15612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f9061391a565b60405180910390fd5b6120a4600083836123b9565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120f491906136b6565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121b5600083836123be565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061228457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806122945750612293826123c3565b5b9050919050565b600060019054906101000a900460ff166122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e190613608565b60405180910390fd5b816065908051906020019061230092919061242d565b50806066908051906020019061231792919061242d565b505050565b6123268282610ee6565b6123b55761234b8173ffffffffffffffffffffffffffffffffffffffff166014611a43565b6123598360001c6020611a43565b60405160200161236a9291906139d2565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac919061269b565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b82805461243990612d60565b90600052602060002090601f01602090048101928261245b57600085556124a2565b82601f1061247457805160ff19168380011785556124a2565b828001600101855582156124a2579182015b828111156124a1578251825591602001919060010190612486565b5b5090506124af91906124b3565b5090565b5b808211156124cc5760008160009055506001016124b4565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6124f7816124e4565b811461250257600080fd5b50565b600081359050612514816124ee565b92915050565b6000602082840312156125305761252f6124da565b5b600061253e84828501612505565b91505092915050565b60008115159050919050565b61255c81612547565b82525050565b60006020820190506125776000830184612553565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125b28161257d565b81146125bd57600080fd5b50565b6000813590506125cf816125a9565b92915050565b6000602082840312156125eb576125ea6124da565b5b60006125f9848285016125c0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561263c578082015181840152602081019050612621565b8381111561264b576000848401525b50505050565b6000601f19601f8301169050919050565b600061266d82612602565b612677818561260d565b935061268781856020860161261e565b61269081612651565b840191505092915050565b600060208201905081810360008301526126b58184612662565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126ff82612651565b810181811067ffffffffffffffff8211171561271e5761271d6126c7565b5b80604052505050565b60006127316124d0565b905061273d82826126f6565b919050565b600067ffffffffffffffff82111561275d5761275c6126c7565b5b61276682612651565b9050602081019050919050565b82818337600083830152505050565b600061279561279084612742565b612727565b9050828152602081018484840111156127b1576127b06126c2565b5b6127bc848285612773565b509392505050565b600082601f8301126127d9576127d86126bd565b5b81356127e9848260208601612782565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061281d826127f2565b9050919050565b61282d81612812565b811461283857600080fd5b50565b60008135905061284a81612824565b92915050565b600080600060608486031215612869576128686124da565b5b600084013567ffffffffffffffff811115612887576128866124df565b5b612893868287016127c4565b935050602084013567ffffffffffffffff8111156128b4576128b36124df565b5b6128c0868287016127c4565b92505060406128d18682870161283b565b9150509250925092565b6128e481612812565b82525050565b60006020820190506128ff60008301846128db565b92915050565b6000806040838503121561291c5761291b6124da565b5b600061292a8582860161283b565b925050602061293b85828601612505565b9150509250929050565b60006020828403121561295b5761295a6124da565b5b60006129698482850161283b565b91505092915050565b60008060006060848603121561298b5761298a6124da565b5b60006129998682870161283b565b93505060206129aa8682870161283b565b92505060406129bb86828701612505565b9150509250925092565b6000819050919050565b6129d8816129c5565b81146129e357600080fd5b50565b6000813590506129f5816129cf565b92915050565b600060208284031215612a1157612a106124da565b5b6000612a1f848285016129e6565b91505092915050565b612a31816129c5565b82525050565b6000602082019050612a4c6000830184612a28565b92915050565b612a5b816124e4565b82525050565b6000602082019050612a766000830184612a52565b92915050565b60008060408385031215612a9357612a926124da565b5b6000612aa1858286016129e6565b9250506020612ab28582860161283b565b9150509250929050565b600060208284031215612ad257612ad16124da565b5b600082013567ffffffffffffffff811115612af057612aef6124df565b5b612afc848285016127c4565b91505092915050565b612b0e81612547565b8114612b1957600080fd5b50565b600081359050612b2b81612b05565b92915050565b60008060408385031215612b4857612b476124da565b5b6000612b568582860161283b565b9250506020612b6785828601612b1c565b9150509250929050565b600067ffffffffffffffff821115612b8c57612b8b6126c7565b5b612b9582612651565b9050602081019050919050565b6000612bb5612bb084612b71565b612727565b905082815260208101848484011115612bd157612bd06126c2565b5b612bdc848285612773565b509392505050565b600082601f830112612bf957612bf86126bd565b5b8135612c09848260208601612ba2565b91505092915050565b60008060008060808587031215612c2c57612c2b6124da565b5b6000612c3a8782880161283b565b9450506020612c4b8782880161283b565b9350506040612c5c87828801612505565b925050606085013567ffffffffffffffff811115612c7d57612c7c6124df565b5b612c8987828801612be4565b91505092959194509250565b60008060408385031215612cac57612cab6124da565b5b6000612cba8582860161283b565b925050602083013567ffffffffffffffff811115612cdb57612cda6124df565b5b612ce7858286016127c4565b9150509250929050565b60008060408385031215612d0857612d076124da565b5b6000612d168582860161283b565b9250506020612d278582860161283b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d7857607f821691505b60208210811415612d8c57612d8b612d31565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612dee602e8361260d565b9150612df982612d92565b604082019050919050565b60006020820190508181036000830152612e1d81612de1565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612e60612e5b612e5684612e24565b612e3b565b612e2e565b9050919050565b612e7081612e45565b82525050565b6000602082019050612e8b6000830184612e67565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eed60218361260d565b9150612ef882612e91565b604082019050919050565b60006020820190508181036000830152612f1c81612ee0565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612f7f603e8361260d565b9150612f8a82612f23565b604082019050919050565b60006020820190508181036000830152612fae81612f72565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612feb601c8361260d565b9150612ff682612fb5565b602082019050919050565b6000602082019050818103600083015261301a81612fde565b9050919050565b7f536861726561626c654552433732313a20746f6b656e20646f65736e2774206560008201527f7869737400000000000000000000000000000000000000000000000000000000602082015250565b600061307d60248361260d565b915061308882613021565b604082019050919050565b600060208201905081810360008301526130ac81613070565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061310f602f8361260d565b915061311a826130b3565b604082019050919050565b6000602082019050818103600083015261313e81613102565b9050919050565b7f4d757374206265206f776e6572206f6620746f6b656e20746f2062652061626c60008201527f6520746f206275726e2069740000000000000000000000000000000000000000602082015250565b60006131a1602c8361260d565b91506131ac82613145565b604082019050919050565b600060208201905081810360008301526131d081613194565b9050919050565b600081905092915050565b60006131ed82612602565b6131f781856131d7565b935061320781856020860161261e565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b600061324582856131e2565b915061325182846131e2565b915061325c82613213565b6001820191508190509392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006132a260188361260d565b91506132ad8261326c565b602082019050919050565b600060208201905081810360008301526132d181613295565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b600061333460298361260d565b915061333f826132d8565b604082019050919050565b6000602082019050818103600083015261336381613327565b9050919050565b600061337682856131e2565b915061338282846131e2565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133c8826124e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133fb576133fa61338e565b5b600182019050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061343c60208361260d565b915061344782613406565b602082019050919050565b6000602082019050818103600083015261346b8161342f565b9050919050565b7f536861726561626c654552433732313a20746f6b656e20746f2062652073686160008201527f726564206d757374206578697374000000000000000000000000000000000000602082015250565b60006134ce602e8361260d565b91506134d982613472565b604082019050919050565b600060208201905081810360008301526134fd816134c1565b9050919050565b7f4d6574686f642063616c6c6572206d75737420626520746865206f776e65722060008201527f6f6620746f6b656e000000000000000000000000000000000000000000000000602082015250565b600061356060288361260d565b915061356b82613504565b604082019050919050565b6000602082019050818103600083015261358f81613553565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006135f2602b8361260d565b91506135fd82613596565b604082019050919050565b60006020820190508181036000830152613621816135e5565b9050919050565b6000613633826124e4565b915061363e836124e4565b9250828210156136515761365061338e565b5b828203905092915050565b6000613667826124e4565b9150613672836124e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136ab576136aa61338e565b5b828202905092915050565b60006136c1826124e4565b91506136cc836124e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137015761370061338e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613746826124e4565b9150600082141561375a5761375961338e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061379b60208361260d565b91506137a682613765565b602082019050919050565b600060208201905081810360008301526137ca8161378e565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061380760198361260d565b9150613812826137d1565b602082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613877826124e4565b9150613882836124e4565b9250826138925761389161383d565b5b828204905092915050565b60006138a8826124e4565b91506138b3836124e4565b9250826138c3576138c261383d565b5b828206905092915050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613904601c8361260d565b915061390f826138ce565b602082019050919050565b60006020820190508181036000830152613933816138f7565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006139706017836131d7565b915061397b8261393a565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006139bc6011836131d7565b91506139c782613986565b601182019050919050565b60006139dd82613963565b91506139e982856131e2565b91506139f4826139af565b9150613a0082846131e2565b9150819050939250505056fea264697066735822122035d6baf8bb4d23b3b9e13a45e1fbf4988fe6ff729c3d8107ca2f19f53d1fc9d664736f6c634300080c0033"; type ShareableERC721ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/ShareableERC721v2Test__factory.ts b/typechain-types/factories/ShareableERC721v2Test__factory.ts index 8e16545..ae70405 100644 --- a/typechain-types/factories/ShareableERC721v2Test__factory.ts +++ b/typechain-types/factories/ShareableERC721v2Test__factory.ts @@ -773,7 +773,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061357e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c8063704802751161010f578063a22cb465116100a2578063d547741f11610071578063d547741f14610587578063ded6338b146105a3578063e985e9c5146105bf578063f5b541a6146105ef576101e4565b8063a22cb46514610503578063ac8a584a1461051f578063b88d4fde1461053b578063c87b56dd14610557576101e4565b806391d14854116100de57806391d148541461047b57806395d89b41146104ab5780639870d7fe146104c9578063a217fddf146104e5576101e4565b806370480275146103f357806370a082311461040f57806381045ead1461043f5780638d52bbe01461045d576101e4565b806323b872dd1161018757806342842e0e1161015657806342842e0e1461036f57806355f804b31461038b5780636352211e146103a75780636a627842146103d7576101e4565b806323b872dd146102eb578063248a9ca3146103075780632f2ff15d1461033757806336568abe14610353576101e4565b8063077f224a116101c3578063077f224a14610267578063081812fc14610283578063095ea7b3146102b35780631785f53c146102cf576101e4565b8062923f9e146101e957806301ffc9a71461021957806306fdde0314610249575b600080fd5b61020360048036038101906101fe91906121d6565b61060d565b604051610210919061221e565b60405180910390f35b610233600480360381019061022e9190612291565b61061f565b604051610240919061221e565b60405180910390f35b610251610631565b60405161025e9190612357565b60405180910390f35b610281600480360381019061027c919061250c565b6106c3565b005b61029d600480360381019061029891906121d6565b610845565b6040516102aa91906125a6565b60405180910390f35b6102cd60048036038101906102c891906125c1565b61088b565b005b6102e960048036038101906102e49190612601565b6109a3565b005b6103056004803603810190610300919061262e565b6109c1565b005b610321600480360381019061031c91906126b7565b6109fc565b60405161032e91906126f3565b60405180910390f35b610351600480360381019061034c919061270e565b610a1c565b005b61036d6004803603810190610368919061270e565b610a3d565b005b6103896004803603810190610384919061262e565b610ac0565b005b6103a560048036038101906103a0919061274e565b610afb565b005b6103c160048036038101906103bc91906121d6565b610b87565b6040516103ce91906125a6565b60405180910390f35b6103f160048036038101906103ec9190612601565b610c39565b005b61040d60048036038101906104089190612601565b610ce8565b005b61042960048036038101906104249190612601565b610d06565b60405161043691906127a6565b60405180910390f35b610447610dbe565b60405161045491906127a6565b60405180910390f35b610465610dc8565b60405161047291906127a6565b60405180910390f35b6104956004803603810190610490919061270e565b610dde565b6040516104a2919061221e565b60405180910390f35b6104b3610e49565b6040516104c09190612357565b60405180910390f35b6104e360048036038101906104de9190612601565b610edb565b005b6104ed610f16565b6040516104fa91906126f3565b60405180910390f35b61051d600480360381019061051891906127ed565b610f1d565b005b61053960048036038101906105349190612601565b610f33565b005b610555600480360381019061055091906128ce565b610f6e565b005b610571600480360381019061056c91906121d6565b610fa9565b60405161057e9190612357565b60405180910390f35b6105a1600480360381019061059c919061270e565b611011565b005b6105bd60048036038101906105b891906125c1565b611032565b005b6105d960048036038101906105d49190612951565b6111f0565b6040516105e6919061221e565b60405180910390f35b6105f7611284565b60405161060491906126f3565b60405180910390f35b6000610618826112a8565b9050919050565b600061062a82611314565b9050919050565b606060658054610640906129c0565b80601f016020809104026020016040519081016040528092919081815260200182805461066c906129c0565b80156106b95780601f1061068e576101008083540402835291602001916106b9565b820191906000526020600020905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f45750600160008054906101000a900460ff1660ff16105b8061072157506107033061138e565b1580156107205750600160008054906101000a900460ff1660ff16145b5b610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075790612a64565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561079d576001600060016101000a81548160ff0219169083151502179055505b6107a784846113b1565b600060ca819055506107bc6000801b8361140e565b6107e67f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361140e565b801561083f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108369190612ad6565b60405180910390a15b50505050565b60006108508261141c565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089682610b87565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90612b63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610926611467565b73ffffffffffffffffffffffffffffffffffffffff16148061095557506109548161094f611467565b6111f0565b5b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90612bf5565b60405180910390fd5b61099e838361146f565b505050565b6000801b6109b081611528565b6109bd6000801b8361153c565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f390612c61565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b610a25826109fc565b610a2e81611528565b610a38838361161e565b505050565b610a45611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990612cf3565b60405180910390fd5b610abc828261153c565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290612c61565b60405180910390fd5b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610b2581611528565b600030905082610b4c8273ffffffffffffffffffffffffffffffffffffffff1660146116ff565b604051602001610b5d929190612d75565b60405160208183030381529060405260c99080519060200190610b819291906120e9565b50505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612df4565b60405180910390fd5b80915050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610c6381611528565b610c6f8260ca5461193b565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f860405160405180910390a460ca6000815480929190610cdf90612e43565b91905055505050565b6000801b610cf581611528565b610d026000801b8361161e565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90612efe565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060ca54905090565b6000606460ca54610dd99190612f1e565b905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e58906129c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610e84906129c0565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6000801b610ee881611528565b610f127f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361161e565b5050565b6000801b81565b610f2f610f28611467565b8383611b15565b5050565b6000801b610f4081611528565b610f6a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361153c565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612c61565b60405180910390fd5b6060610fb48261141c565b6000610fbe611c82565b90506000815111610fde5760405180602001604052806000815250611009565b80610fe884611d14565b604051602001610ff9929190612f78565b6040516020818303038152906040525b915050919050565b61101a826109fc565b61102381611528565b61102d838361153c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990612fe8565b60405180910390fd5b6110ab816112a8565b6110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e19061307a565b60405180910390fd5b6110f381610b87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111579061310c565b60405180910390fd5b61116c8260ca5461193b565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc9a349c2b09c746e2edebb75faaf556c1c0c89d2c196a1f988ece46ee152bd52846040516111cc91906127a6565b60405180910390a460ca60008154809291906111e790612e43565b91905055505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611387575061138682611e75565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061319e565b60405180910390fd5b61140a8282611f57565b5050565b611418828261161e565b5050565b611425816112a8565b611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612df4565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114e283610b87565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61153981611534611467565b611fd8565b50565b6115468282610dde565b1561161a5760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115bf611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6116288282610dde565b6116fb5760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a0611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6060600060028360026117129190612f1e565b61171c91906131be565b67ffffffffffffffff81111561173557611734612383565b5b6040519080825280601f01601f1916602001820160405280156117675781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061179f5761179e613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061180357611802613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026118439190612f1e565b61184d91906131be565b90505b60018111156118ed577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061188f5761188e613214565b5b1a60f81b8282815181106118a6576118a5613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806118e690613243565b9050611850565b5060008414611931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611928906132b9565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290612fe8565b60405180910390fd5b6119b4816112a8565b156119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613325565b60405180910390fd5b611a0060008383612075565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a5091906131be565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b116000838361207a565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90613391565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c75919061221e565b60405180910390a3505050565b606060c98054611c91906129c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611cbd906129c0565b8015611d0a5780601f10611cdf57610100808354040283529160200191611d0a565b820191906000526020600020905b815481529060010190602001808311611ced57829003601f168201915b5050505050905090565b60606000821415611d5c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e70565b600082905060005b60008214611d8e578080611d7790612e43565b915050600a82611d8791906133e0565b9150611d64565b60008167ffffffffffffffff811115611daa57611da9612383565b5b6040519080825280601f01601f191660200182016040528015611ddc5781602001600182028036833780820191505090505b5090505b60008514611e6957600182611df59190613411565b9150600a85611e049190613445565b6030611e1091906131be565b60f81b818381518110611e2657611e25613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e6291906133e0565b9450611de0565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f4057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f505750611f4f8261207f565b5b9050919050565b600060019054906101000a900460ff16611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d9061319e565b60405180910390fd5b8160659080519060200190611fbc9291906120e9565b508060669080519060200190611fd39291906120e9565b505050565b611fe28282610dde565b612071576120078173ffffffffffffffffffffffffffffffffffffffff1660146116ff565b6120158360001c60206116ff565b60405160200161202692919061350e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120689190612357565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8280546120f5906129c0565b90600052602060002090601f016020900481019282612117576000855561215e565b82601f1061213057805160ff191683800117855561215e565b8280016001018555821561215e579182015b8281111561215d578251825591602001919060010190612142565b5b50905061216b919061216f565b5090565b5b80821115612188576000816000905550600101612170565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6121b3816121a0565b81146121be57600080fd5b50565b6000813590506121d0816121aa565b92915050565b6000602082840312156121ec576121eb612196565b5b60006121fa848285016121c1565b91505092915050565b60008115159050919050565b61221881612203565b82525050565b6000602082019050612233600083018461220f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61226e81612239565b811461227957600080fd5b50565b60008135905061228b81612265565b92915050565b6000602082840312156122a7576122a6612196565b5b60006122b58482850161227c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f85780820151818401526020810190506122dd565b83811115612307576000848401525b50505050565b6000601f19601f8301169050919050565b6000612329826122be565b61233381856122c9565b93506123438185602086016122da565b61234c8161230d565b840191505092915050565b60006020820190508181036000830152612371818461231e565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123bb8261230d565b810181811067ffffffffffffffff821117156123da576123d9612383565b5b80604052505050565b60006123ed61218c565b90506123f982826123b2565b919050565b600067ffffffffffffffff82111561241957612418612383565b5b6124228261230d565b9050602081019050919050565b82818337600083830152505050565b600061245161244c846123fe565b6123e3565b90508281526020810184848401111561246d5761246c61237e565b5b61247884828561242f565b509392505050565b600082601f83011261249557612494612379565b5b81356124a584826020860161243e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124d9826124ae565b9050919050565b6124e9816124ce565b81146124f457600080fd5b50565b600081359050612506816124e0565b92915050565b60008060006060848603121561252557612524612196565b5b600084013567ffffffffffffffff8111156125435761254261219b565b5b61254f86828701612480565b935050602084013567ffffffffffffffff8111156125705761256f61219b565b5b61257c86828701612480565b925050604061258d868287016124f7565b9150509250925092565b6125a0816124ce565b82525050565b60006020820190506125bb6000830184612597565b92915050565b600080604083850312156125d8576125d7612196565b5b60006125e6858286016124f7565b92505060206125f7858286016121c1565b9150509250929050565b60006020828403121561261757612616612196565b5b6000612625848285016124f7565b91505092915050565b60008060006060848603121561264757612646612196565b5b6000612655868287016124f7565b9350506020612666868287016124f7565b9250506040612677868287016121c1565b9150509250925092565b6000819050919050565b61269481612681565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b6000602082840312156126cd576126cc612196565b5b60006126db848285016126a2565b91505092915050565b6126ed81612681565b82525050565b600060208201905061270860008301846126e4565b92915050565b6000806040838503121561272557612724612196565b5b6000612733858286016126a2565b9250506020612744858286016124f7565b9150509250929050565b60006020828403121561276457612763612196565b5b600082013567ffffffffffffffff8111156127825761278161219b565b5b61278e84828501612480565b91505092915050565b6127a0816121a0565b82525050565b60006020820190506127bb6000830184612797565b92915050565b6127ca81612203565b81146127d557600080fd5b50565b6000813590506127e7816127c1565b92915050565b6000806040838503121561280457612803612196565b5b6000612812858286016124f7565b9250506020612823858286016127d8565b9150509250929050565b600067ffffffffffffffff82111561284857612847612383565b5b6128518261230d565b9050602081019050919050565b600061287161286c8461282d565b6123e3565b90508281526020810184848401111561288d5761288c61237e565b5b61289884828561242f565b509392505050565b600082601f8301126128b5576128b4612379565b5b81356128c584826020860161285e565b91505092915050565b600080600080608085870312156128e8576128e7612196565b5b60006128f6878288016124f7565b9450506020612907878288016124f7565b9350506040612918878288016121c1565b925050606085013567ffffffffffffffff8111156129395761293861219b565b5b612945878288016128a0565b91505092959194509250565b6000806040838503121561296857612967612196565b5b6000612976858286016124f7565b9250506020612987858286016124f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129d857607f821691505b602082108114156129ec576129eb612991565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612a4e602e836122c9565b9150612a59826129f2565b604082019050919050565b60006020820190508181036000830152612a7d81612a41565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612ac0612abb612ab684612a84565b612a9b565b612a8e565b9050919050565b612ad081612aa5565b82525050565b6000602082019050612aeb6000830184612ac7565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b4d6021836122c9565b9150612b5882612af1565b604082019050919050565b60006020820190508181036000830152612b7c81612b40565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612bdf603e836122c9565b9150612bea82612b83565b604082019050919050565b60006020820190508181036000830152612c0e81612bd2565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612c4b601c836122c9565b9150612c5682612c15565b602082019050919050565b60006020820190508181036000830152612c7a81612c3e565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612cdd602f836122c9565b9150612ce882612c81565b604082019050919050565b60006020820190508181036000830152612d0c81612cd0565b9050919050565b600081905092915050565b6000612d29826122be565b612d338185612d13565b9350612d438185602086016122da565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b6000612d818285612d1e565b9150612d8d8284612d1e565b9150612d9882612d4f565b6001820191508190509392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612dde6018836122c9565b9150612de982612da8565b602082019050919050565b60006020820190508181036000830152612e0d81612dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e4e826121a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e80612e14565b5b600182019050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612ee86029836122c9565b9150612ef382612e8c565b604082019050919050565b60006020820190508181036000830152612f1781612edb565b9050919050565b6000612f29826121a0565b9150612f34836121a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6d57612f6c612e14565b5b828202905092915050565b6000612f848285612d1e565b9150612f908284612d1e565b91508190509392505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612fd26020836122c9565b9150612fdd82612f9c565b602082019050919050565b6000602082019050818103600083015261300181612fc5565b9050919050565b7f536861726561626c654552433732313a20746f6b656e20746f2062652073686160008201527f726564206d757374206578697374000000000000000000000000000000000000602082015250565b6000613064602e836122c9565b915061306f82613008565b604082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b7f4d6574686f642063616c6c6572206d75737420626520746865206f776e65722060008201527f6f6620746f6b656e000000000000000000000000000000000000000000000000602082015250565b60006130f66028836122c9565b91506131018261309a565b604082019050919050565b60006020820190508181036000830152613125816130e9565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613188602b836122c9565b91506131938261312c565b604082019050919050565b600060208201905081810360008301526131b78161317b565b9050919050565b60006131c9826121a0565b91506131d4836121a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561320957613208612e14565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061324e826121a0565b9150600082141561326257613261612e14565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006132a36020836122c9565b91506132ae8261326d565b602082019050919050565b600060208201905081810360008301526132d281613296565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061330f601c836122c9565b915061331a826132d9565b602082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061337b6019836122c9565b915061338682613345565b602082019050919050565b600060208201905081810360008301526133aa8161336e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133eb826121a0565b91506133f6836121a0565b925082613406576134056133b1565b5b828204905092915050565b600061341c826121a0565b9150613427836121a0565b92508282101561343a57613439612e14565b5b828203905092915050565b6000613450826121a0565b915061345b836121a0565b92508261346b5761346a6133b1565b5b828206905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006134ac601783612d13565b91506134b782613476565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006134f8601183612d13565b9150613503826134c2565b601182019050919050565b60006135198261349f565b91506135258285612d1e565b9150613530826134eb565b915061353c8284612d1e565b9150819050939250505056fea2646970667358221220ee404cf71f21f800f29c699adffdd129f94d671094aa583c243c1f5c2ff68a4964736f6c634300080c0033"; + "0x608060405234801561001057600080fd5b5061357e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c8063704802751161010f578063a22cb465116100a2578063d547741f11610071578063d547741f14610587578063ded6338b146105a3578063e985e9c5146105bf578063f5b541a6146105ef576101e4565b8063a22cb46514610503578063ac8a584a1461051f578063b88d4fde1461053b578063c87b56dd14610557576101e4565b806391d14854116100de57806391d148541461047b57806395d89b41146104ab5780639870d7fe146104c9578063a217fddf146104e5576101e4565b806370480275146103f357806370a082311461040f57806381045ead1461043f5780638d52bbe01461045d576101e4565b806323b872dd1161018757806342842e0e1161015657806342842e0e1461036f57806355f804b31461038b5780636352211e146103a75780636a627842146103d7576101e4565b806323b872dd146102eb578063248a9ca3146103075780632f2ff15d1461033757806336568abe14610353576101e4565b8063077f224a116101c3578063077f224a14610267578063081812fc14610283578063095ea7b3146102b35780631785f53c146102cf576101e4565b8062923f9e146101e957806301ffc9a71461021957806306fdde0314610249575b600080fd5b61020360048036038101906101fe91906121d6565b61060d565b604051610210919061221e565b60405180910390f35b610233600480360381019061022e9190612291565b61061f565b604051610240919061221e565b60405180910390f35b610251610631565b60405161025e9190612357565b60405180910390f35b610281600480360381019061027c919061250c565b6106c3565b005b61029d600480360381019061029891906121d6565b610845565b6040516102aa91906125a6565b60405180910390f35b6102cd60048036038101906102c891906125c1565b61088b565b005b6102e960048036038101906102e49190612601565b6109a3565b005b6103056004803603810190610300919061262e565b6109c1565b005b610321600480360381019061031c91906126b7565b6109fc565b60405161032e91906126f3565b60405180910390f35b610351600480360381019061034c919061270e565b610a1c565b005b61036d6004803603810190610368919061270e565b610a3d565b005b6103896004803603810190610384919061262e565b610ac0565b005b6103a560048036038101906103a0919061274e565b610afb565b005b6103c160048036038101906103bc91906121d6565b610b87565b6040516103ce91906125a6565b60405180910390f35b6103f160048036038101906103ec9190612601565b610c39565b005b61040d60048036038101906104089190612601565b610ce8565b005b61042960048036038101906104249190612601565b610d06565b60405161043691906127a6565b60405180910390f35b610447610dbe565b60405161045491906127a6565b60405180910390f35b610465610dc8565b60405161047291906127a6565b60405180910390f35b6104956004803603810190610490919061270e565b610dde565b6040516104a2919061221e565b60405180910390f35b6104b3610e49565b6040516104c09190612357565b60405180910390f35b6104e360048036038101906104de9190612601565b610edb565b005b6104ed610f16565b6040516104fa91906126f3565b60405180910390f35b61051d600480360381019061051891906127ed565b610f1d565b005b61053960048036038101906105349190612601565b610f33565b005b610555600480360381019061055091906128ce565b610f6e565b005b610571600480360381019061056c91906121d6565b610fa9565b60405161057e9190612357565b60405180910390f35b6105a1600480360381019061059c919061270e565b611011565b005b6105bd60048036038101906105b891906125c1565b611032565b005b6105d960048036038101906105d49190612951565b6111f0565b6040516105e6919061221e565b60405180910390f35b6105f7611284565b60405161060491906126f3565b60405180910390f35b6000610618826112a8565b9050919050565b600061062a82611314565b9050919050565b606060658054610640906129c0565b80601f016020809104026020016040519081016040528092919081815260200182805461066c906129c0565b80156106b95780601f1061068e576101008083540402835291602001916106b9565b820191906000526020600020905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b60008060019054906101000a900460ff161590508080156106f45750600160008054906101000a900460ff1660ff16105b8061072157506107033061138e565b1580156107205750600160008054906101000a900460ff1660ff16145b5b610760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075790612a64565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561079d576001600060016101000a81548160ff0219169083151502179055505b6107a784846113b1565b600060ca819055506107bc6000801b8361140e565b6107e67f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361140e565b801561083f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516108369190612ad6565b60405180910390a15b50505050565b60006108508261141c565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061089682610b87565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90612b63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610926611467565b73ffffffffffffffffffffffffffffffffffffffff16148061095557506109548161094f611467565b6111f0565b5b610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90612bf5565b60405180910390fd5b61099e838361146f565b505050565b6000801b6109b081611528565b6109bd6000801b8361153c565b5050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f390612c61565b60405180910390fd5b600060976000838152602001908152602001600020600101549050919050565b610a25826109fc565b610a2e81611528565b610a38838361161e565b505050565b610a45611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa990612cf3565b60405180910390fd5b610abc828261153c565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290612c61565b60405180910390fd5b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610b2581611528565b600030905082610b4c8273ffffffffffffffffffffffffffffffffffffffff1660146116ff565b604051602001610b5d929190612d75565b60405160208183030381529060405260c99080519060200190610b819291906120e9565b50505050565b6000806067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2790612df4565b60405180910390fd5b80915050919050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929610c6381611528565b610c6f8260ca5461193b565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f860405160405180910390a460ca6000815480929190610cdf90612e43565b91905055505050565b6000801b610cf581611528565b610d026000801b8361161e565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90612efe565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060ca54905090565b6000606460ca54610dd99190612f1e565b905090565b60006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060668054610e58906129c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610e84906129c0565b8015610ed15780601f10610ea657610100808354040283529160200191610ed1565b820191906000526020600020905b815481529060010190602001808311610eb457829003601f168201915b5050505050905090565b6000801b610ee881611528565b610f127f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361161e565b5050565b6000801b81565b610f2f610f28611467565b8383611b15565b5050565b6000801b610f4081611528565b610f6a7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298361153c565b5050565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612c61565b60405180910390fd5b6060610fb48261141c565b6000610fbe611c82565b90506000815111610fde5760405180602001604052806000815250611009565b80610fe884611d14565b604051602001610ff9929190612f78565b6040516020818303038152906040525b915050919050565b61101a826109fc565b61102381611528565b61102d838361153c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109990612fe8565b60405180910390fd5b6110ab816112a8565b6110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e19061307a565b60405180910390fd5b6110f381610b87565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111579061310c565b60405180910390fd5b61116c8260ca5461193b565b60ca548273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc9a349c2b09c746e2edebb75faaf556c1c0c89d2c196a1f988ece46ee152bd52846040516111cc91906127a6565b60405180910390a460ca60008154809291906111e790612e43565b91905055505050565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60008073ffffffffffffffffffffffffffffffffffffffff166067600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611387575061138682611e75565b5b9050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f79061319e565b60405180910390fd5b61140a8282611f57565b5050565b611418828261161e565b5050565b611425816112a8565b611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612df4565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114e283610b87565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61153981611534611467565b611fd8565b50565b6115468282610dde565b1561161a5760006097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115bf611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6116288282610dde565b6116fb5760016097600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506116a0611467565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6060600060028360026117129190612f1e565b61171c91906131be565b67ffffffffffffffff81111561173557611734612383565b5b6040519080825280601f01601f1916602001820160405280156117675781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061179f5761179e613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061180357611802613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026118439190612f1e565b61184d91906131be565b90505b60018111156118ed577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061188f5761188e613214565b5b1a60f81b8282815181106118a6576118a5613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806118e690613243565b9050611850565b5060008414611931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611928906132b9565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290612fe8565b60405180910390fd5b6119b4816112a8565b156119f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119eb90613325565b60405180910390fd5b611a0060008383612075565b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a5091906131be565b92505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b116000838361207a565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90613391565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c75919061221e565b60405180910390a3505050565b606060c98054611c91906129c0565b80601f0160208091040260200160405190810160405280929190818152602001828054611cbd906129c0565b8015611d0a5780601f10611cdf57610100808354040283529160200191611d0a565b820191906000526020600020905b815481529060010190602001808311611ced57829003601f168201915b5050505050905090565b60606000821415611d5c576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e70565b600082905060005b60008214611d8e578080611d7790612e43565b915050600a82611d8791906133e0565b9150611d64565b60008167ffffffffffffffff811115611daa57611da9612383565b5b6040519080825280601f01601f191660200182016040528015611ddc5781602001600182028036833780820191505090505b5090505b60008514611e6957600182611df59190613411565b9150600a85611e049190613445565b6030611e1091906131be565b60f81b818381518110611e2657611e25613214565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e6291906133e0565b9450611de0565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f4057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611f505750611f4f8261207f565b5b9050919050565b600060019054906101000a900460ff16611fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9d9061319e565b60405180910390fd5b8160659080519060200190611fbc9291906120e9565b508060669080519060200190611fd39291906120e9565b505050565b611fe28282610dde565b612071576120078173ffffffffffffffffffffffffffffffffffffffff1660146116ff565b6120158360001c60206116ff565b60405160200161202692919061350e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120689190612357565b60405180910390fd5b5050565b505050565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8280546120f5906129c0565b90600052602060002090601f016020900481019282612117576000855561215e565b82601f1061213057805160ff191683800117855561215e565b8280016001018555821561215e579182015b8281111561215d578251825591602001919060010190612142565b5b50905061216b919061216f565b5090565b5b80821115612188576000816000905550600101612170565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6121b3816121a0565b81146121be57600080fd5b50565b6000813590506121d0816121aa565b92915050565b6000602082840312156121ec576121eb612196565b5b60006121fa848285016121c1565b91505092915050565b60008115159050919050565b61221881612203565b82525050565b6000602082019050612233600083018461220f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61226e81612239565b811461227957600080fd5b50565b60008135905061228b81612265565b92915050565b6000602082840312156122a7576122a6612196565b5b60006122b58482850161227c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f85780820151818401526020810190506122dd565b83811115612307576000848401525b50505050565b6000601f19601f8301169050919050565b6000612329826122be565b61233381856122c9565b93506123438185602086016122da565b61234c8161230d565b840191505092915050565b60006020820190508181036000830152612371818461231e565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123bb8261230d565b810181811067ffffffffffffffff821117156123da576123d9612383565b5b80604052505050565b60006123ed61218c565b90506123f982826123b2565b919050565b600067ffffffffffffffff82111561241957612418612383565b5b6124228261230d565b9050602081019050919050565b82818337600083830152505050565b600061245161244c846123fe565b6123e3565b90508281526020810184848401111561246d5761246c61237e565b5b61247884828561242f565b509392505050565b600082601f83011261249557612494612379565b5b81356124a584826020860161243e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124d9826124ae565b9050919050565b6124e9816124ce565b81146124f457600080fd5b50565b600081359050612506816124e0565b92915050565b60008060006060848603121561252557612524612196565b5b600084013567ffffffffffffffff8111156125435761254261219b565b5b61254f86828701612480565b935050602084013567ffffffffffffffff8111156125705761256f61219b565b5b61257c86828701612480565b925050604061258d868287016124f7565b9150509250925092565b6125a0816124ce565b82525050565b60006020820190506125bb6000830184612597565b92915050565b600080604083850312156125d8576125d7612196565b5b60006125e6858286016124f7565b92505060206125f7858286016121c1565b9150509250929050565b60006020828403121561261757612616612196565b5b6000612625848285016124f7565b91505092915050565b60008060006060848603121561264757612646612196565b5b6000612655868287016124f7565b9350506020612666868287016124f7565b9250506040612677868287016121c1565b9150509250925092565b6000819050919050565b61269481612681565b811461269f57600080fd5b50565b6000813590506126b18161268b565b92915050565b6000602082840312156126cd576126cc612196565b5b60006126db848285016126a2565b91505092915050565b6126ed81612681565b82525050565b600060208201905061270860008301846126e4565b92915050565b6000806040838503121561272557612724612196565b5b6000612733858286016126a2565b9250506020612744858286016124f7565b9150509250929050565b60006020828403121561276457612763612196565b5b600082013567ffffffffffffffff8111156127825761278161219b565b5b61278e84828501612480565b91505092915050565b6127a0816121a0565b82525050565b60006020820190506127bb6000830184612797565b92915050565b6127ca81612203565b81146127d557600080fd5b50565b6000813590506127e7816127c1565b92915050565b6000806040838503121561280457612803612196565b5b6000612812858286016124f7565b9250506020612823858286016127d8565b9150509250929050565b600067ffffffffffffffff82111561284857612847612383565b5b6128518261230d565b9050602081019050919050565b600061287161286c8461282d565b6123e3565b90508281526020810184848401111561288d5761288c61237e565b5b61289884828561242f565b509392505050565b600082601f8301126128b5576128b4612379565b5b81356128c584826020860161285e565b91505092915050565b600080600080608085870312156128e8576128e7612196565b5b60006128f6878288016124f7565b9450506020612907878288016124f7565b9350506040612918878288016121c1565b925050606085013567ffffffffffffffff8111156129395761293861219b565b5b612945878288016128a0565b91505092959194509250565b6000806040838503121561296857612967612196565b5b6000612976858286016124f7565b9250506020612987858286016124f7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129d857607f821691505b602082108114156129ec576129eb612991565b5b50919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612a4e602e836122c9565b9150612a59826129f2565b604082019050919050565b60006020820190508181036000830152612a7d81612a41565b9050919050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b6000612ac0612abb612ab684612a84565b612a9b565b612a8e565b9050919050565b612ad081612aa5565b82525050565b6000602082019050612aeb6000830184612ac7565b92915050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b4d6021836122c9565b9150612b5882612af1565b604082019050919050565b60006020820190508181036000830152612b7c81612b40565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000612bdf603e836122c9565b9150612bea82612b83565b604082019050919050565b60006020820190508181036000830152612c0e81612bd2565b9050919050565b7f546f6b656e7320617265206e6f74207472616e736665727261626c6500000000600082015250565b6000612c4b601c836122c9565b9150612c5682612c15565b602082019050919050565b60006020820190508181036000830152612c7a81612c3e565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000612cdd602f836122c9565b9150612ce882612c81565b604082019050919050565b60006020820190508181036000830152612d0c81612cd0565b9050919050565b600081905092915050565b6000612d29826122be565b612d338185612d13565b9350612d438185602086016122da565b80840191505092915050565b7f2f00000000000000000000000000000000000000000000000000000000000000815250565b6000612d818285612d1e565b9150612d8d8284612d1e565b9150612d9882612d4f565b6001820191508190509392505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612dde6018836122c9565b9150612de982612da8565b602082019050919050565b60006020820190508181036000830152612e0d81612dd1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e4e826121a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e80612e14565b5b600182019050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000612ee86029836122c9565b9150612ef382612e8c565b604082019050919050565b60006020820190508181036000830152612f1781612edb565b9050919050565b6000612f29826121a0565b9150612f34836121a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f6d57612f6c612e14565b5b828202905092915050565b6000612f848285612d1e565b9150612f908284612d1e565b91508190509392505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000612fd26020836122c9565b9150612fdd82612f9c565b602082019050919050565b6000602082019050818103600083015261300181612fc5565b9050919050565b7f536861726561626c654552433732313a20746f6b656e20746f2062652073686160008201527f726564206d757374206578697374000000000000000000000000000000000000602082015250565b6000613064602e836122c9565b915061306f82613008565b604082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b7f4d6574686f642063616c6c6572206d75737420626520746865206f776e65722060008201527f6f6620746f6b656e000000000000000000000000000000000000000000000000602082015250565b60006130f66028836122c9565b91506131018261309a565b604082019050919050565b60006020820190508181036000830152613125816130e9565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613188602b836122c9565b91506131938261312c565b604082019050919050565b600060208201905081810360008301526131b78161317b565b9050919050565b60006131c9826121a0565b91506131d4836121a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561320957613208612e14565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061324e826121a0565b9150600082141561326257613261612e14565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006132a36020836122c9565b91506132ae8261326d565b602082019050919050565b600060208201905081810360008301526132d281613296565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061330f601c836122c9565b915061331a826132d9565b602082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061337b6019836122c9565b915061338682613345565b602082019050919050565b600060208201905081810360008301526133aa8161336e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133eb826121a0565b91506133f6836121a0565b925082613406576134056133b1565b5b828204905092915050565b600061341c826121a0565b9150613427836121a0565b92508282101561343a57613439612e14565b5b828203905092915050565b6000613450826121a0565b915061345b836121a0565b92508261346b5761346a6133b1565b5b828206905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006134ac601783612d13565b91506134b782613476565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006134f8601183612d13565b9150613503826134c2565b601182019050919050565b60006135198261349f565b91506135258285612d1e565b9150613530826134eb565b915061353c8284612d1e565b9150819050939250505056fea2646970667358221220212c0b500798a8e5ce54f4fbc68fc49ac24e44475795c12ffd1f008beb06dacb64736f6c634300080c0033"; type ShareableERC721v2TestConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/TalkoFactory__factory.ts b/typechain-types/factories/TalkoFactory__factory.ts index 2456517..242755a 100644 --- a/typechain-types/factories/TalkoFactory__factory.ts +++ b/typechain-types/factories/TalkoFactory__factory.ts @@ -614,7 +614,7 @@ const _abi = [ ]; const _bytecode = - "0x60e06040523480156200001157600080fd5b5060405162004db138038062004db18339818101604052810190620000379190620003c2565b6200004c6000801b33620001d160201b60201c565b6200007e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92933620001d160201b60201c565b82336040516200008e906200034a565b6200009b9291906200042f565b604051809103906000f080158015620000b8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508133604051620000fc906200034a565b620001099291906200042f565b604051809103906000f08015801562000126573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505080336040516200016a906200034a565b620001779291906200042f565b604051809103906000f08015801562000194573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200045c565b620001e38282620001e760201b60201c565b5050565b620001f98282620002d860201b60201c565b620002d457600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002796200034260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6117a4806200360d83390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200038a826200035d565b9050919050565b6200039c816200037d565b8114620003a857600080fd5b50565b600081519050620003bc8162000391565b92915050565b600080600060608486031215620003de57620003dd62000358565b5b6000620003ee86828701620003ab565b93505060206200040186828701620003ab565b92505060406200041486828701620003ab565b9150509250925092565b62000429816200037d565b82525050565b60006040820190506200044660008301856200041e565b6200045560208301846200041e565b9392505050565b60805160a05160c05161316c620004a160003960008181610b310152610e510152600081816107ae0152610cde0152600081816107860152610953015261316c6000f3fe60806040523480156200001157600080fd5b5060043610620001785760003560e01c80637048027511620000d5578063d547741f1162000087578063d547741f1462000461578063d6a4e1371462000481578063d97034f614620004b7578063e715c2aa14620004ed578063f0483c35146200050f578063f5b541a614620005315762000178565b806370480275146200037357806391d1485414620003935780639870d7fe14620003c9578063a217fddf14620003e9578063ac8a584a146200040b578063cd9d75af146200042b5762000178565b80632f2ff15d116200012f5780632f2ff15d14620002ab5780632ffff04f14620002cb57806336568abe14620002ed5780633d23bf7f146200030d57806344a413b3146200032f57806349a7ee0414620003515762000178565b806301ffc9a7146200017d5780631785f53c14620001b3578063248a9ca314620001d3578063261195ca14620002095780632d1d90a6146200023f5780632e2712a71462000275575b600080fd5b6200019b60048036038101906200019591906200161d565b62000553565b604051620001aa91906200166c565b60405180910390f35b620001d16004803603810190620001cb9190620016ee565b620005d0565b005b620001f16004803603810190620001eb91906200175b565b620005fc565b6040516200020091906200179e565b60405180910390f35b6200022760048036038101906200022191906200191d565b6200061b565b6040516200023691906200166c565b60405180910390f35b6200025d60048036038101906200025791906200191d565b62000651565b6040516200026c91906200166c565b60405180910390f35b6200029360048036038101906200028d91906200191d565b62000687565b604051620002a291906200166c565b60405180910390f35b620002c96004803603810190620002c391906200196e565b620006bd565b005b620002d5620006ee565b604051620002e49190620019d0565b60405180910390f35b6200030b60048036038101906200030591906200196e565b620006f8565b005b6200031762000782565b604051620003269190620019fe565b60405180910390f35b62000339620007aa565b604051620003489190620019fe565b60405180910390f35b6200035b620007d2565b6040516200036a9190620019d0565b60405180910390f35b6200039160048036038101906200038b9190620016ee565b620007dc565b005b620003b16004803603810190620003ab91906200196e565b62000808565b604051620003c091906200166c565b60405180910390f35b620003e76004803603810190620003e19190620016ee565b62000872565b005b620003f3620008bb565b6040516200040291906200179e565b60405180910390f35b620004296004803603810190620004239190620016ee565b620008c2565b005b62000449600480360381019062000443919062001a1b565b6200090b565b604051620004589190620019fe565b60405180910390f35b6200047f60048036038101906200047991906200196e565b62000ab8565b005b6200049f600480360381019062000499919062001a1b565b62000ae9565b604051620004ae9190620019fe565b60405180910390f35b620004d56004803603810190620004cf919062001a1b565b62000c96565b604051620004e49190620019fe565b60405180910390f35b620004f762000e43565b604051620005069190620019d0565b60405180910390f35b6200051962000e4d565b604051620005289190620019fe565b60405180910390f35b6200053b62000e75565b6040516200054a91906200179e565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480620005c95750620005c88262000e99565b5b9050919050565b6000801b620005e981620005e362000f03565b62000f0b565b620005f86000801b8362000fb3565b5050565b6000806000838152602001908152602001600020600101549050919050565b600080828051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16915050919050565b600080828051906020012090506005600082815260200190815260200160002060009054906101000a900460ff16915050919050565b600080828051906020012090506006600082815260200190815260200160002060009054906101000a900460ff16915050919050565b620006c882620005fc565b620006dd81620006d762000f03565b62000f0b565b620006e9838362001099565b505050565b6000600154905090565b6200070262000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007699062001b3c565b60405180910390fd5b6200077e828262000fb3565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600254905090565b6000801b620007f581620007ef62000f03565b62000f0b565b620008046000801b8362001099565b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b6200088b816200088562000f03565b62000f0b565b620008b77f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298362001099565b5050565b6000801b81565b6000801b620008db81620008d562000f03565b62000f0b565b620009077f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298362000fb3565b5050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000943816200093d62000f03565b62000f0b565b6200094e856200117e565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b878787604051602401620009919392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051620009fc906200159e565b62000a0992919062001c88565b604051809103906000f08015801562000a26573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0fd98d454cf9377894281f5fd6630872388451935e35d8b380deb1eca8fff909888860405162000a8a92919062001cbc565b60405180910390a36001600081548092919062000aa79062001d26565b919050555080925050509392505050565b62000ac382620005fc565b62000ad88162000ad262000f03565b62000f0b565b62000ae4838362000fb3565b505050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000b218162000b1b62000f03565b62000f0b565b62000b2c8562001215565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b87878760405160240162000b6f9392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000bda906200159e565b62000be792919062001c88565b604051809103906000f08015801562000c04573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe441502a53647f49136d0783e261a97f2041c4a23c185376894bd84c8ecb3ea3888860405162000c6892919062001cbc565b60405180910390a36003600081548092919062000c859062001d26565b919050555080925050509392505050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000cce8162000cc862000f03565b62000f0b565b62000cd985620012ac565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b87878760405160240162000d1c9392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000d87906200159e565b62000d9492919062001c88565b604051809103906000f08015801562000db1573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f53af30b9917c2940559f465c228df52f44cdb0d9358dfed6f0ca12054a1cd47d888860405162000e1592919062001cbc565b60405180910390a36002600081548092919062000e329062001d26565b919050555080925050509392505050565b6000600354905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b62000f17828262000808565b62000faf5762000f3f8173ffffffffffffffffffffffffffffffffffffffff16601462001343565b62000f4f8360001c602062001343565b60405160200162000f6292919062001e56565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fa6919062001e98565b60405180910390fd5b5050565b62000fbf828262000808565b156200109557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200103a62000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b620010a5828262000808565b6200117a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200111f62000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008015156200118e836200061b565b151514620011d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011ca9062001f32565b60405180910390fd5b60008280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b6000801515620012258362000687565b1515146200126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012619062001f32565b60405180910390fd5b60008280519060200120905060016006600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b6000801515620012bc8362000651565b15151462001301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012f89062001f32565b60405180910390fd5b60008280519060200120905060016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b60606000600283600262001358919062001f54565b62001364919062001fb5565b67ffffffffffffffff81111562001380576200137f620017d6565b5b6040519080825280601f01601f191660200182016040528015620013b35781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110620013ee57620013ed62002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062001455576200145462002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600262001497919062001f54565b620014a3919062001fb5565b90505b60018111156200154d577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110620014e957620014e862002012565b5b1a60f81b82828151811062001503576200150262002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080620015459062002041565b9050620014a6565b506000841462001594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200158b90620020c0565b60405180910390fd5b8091505092915050565b61105480620020e383390190565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620015f781620015c0565b81146200160357600080fd5b50565b6000813590506200161781620015ec565b92915050565b600060208284031215620016365762001635620015b6565b5b6000620016468482850162001606565b91505092915050565b60008115159050919050565b62001666816200164f565b82525050565b60006020820190506200168360008301846200165b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620016b68262001689565b9050919050565b620016c881620016a9565b8114620016d457600080fd5b50565b600081359050620016e881620016bd565b92915050565b600060208284031215620017075762001706620015b6565b5b60006200171784828501620016d7565b91505092915050565b6000819050919050565b620017358162001720565b81146200174157600080fd5b50565b60008135905062001755816200172a565b92915050565b600060208284031215620017745762001773620015b6565b5b6000620017848482850162001744565b91505092915050565b620017988162001720565b82525050565b6000602082019050620017b560008301846200178d565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200181082620017c5565b810181811067ffffffffffffffff82111715620018325762001831620017d6565b5b80604052505050565b600062001847620015ac565b905062001855828262001805565b919050565b600067ffffffffffffffff821115620018785762001877620017d6565b5b6200188382620017c5565b9050602081019050919050565b82818337600083830152505050565b6000620018b6620018b0846200185a565b6200183b565b905082815260208101848484011115620018d557620018d4620017c0565b5b620018e284828562001890565b509392505050565b600082601f830112620019025762001901620017bb565b5b8135620019148482602086016200189f565b91505092915050565b600060208284031215620019365762001935620015b6565b5b600082013567ffffffffffffffff811115620019575762001956620015bb565b5b6200196584828501620018ea565b91505092915050565b60008060408385031215620019885762001987620015b6565b5b6000620019988582860162001744565b9250506020620019ab85828601620016d7565b9150509250929050565b6000819050919050565b620019ca81620019b5565b82525050565b6000602082019050620019e76000830184620019bf565b92915050565b620019f881620016a9565b82525050565b600060208201905062001a156000830184620019ed565b92915050565b60008060006060848603121562001a375762001a36620015b6565b5b600084013567ffffffffffffffff81111562001a585762001a57620015bb565b5b62001a6686828701620018ea565b935050602084013567ffffffffffffffff81111562001a8a5762001a89620015bb565b5b62001a9886828701620018ea565b925050604062001aab86828701620016d7565b9150509250925092565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600062001b24602f8362001ab5565b915062001b318262001ac6565b604082019050919050565b6000602082019050818103600083015262001b578162001b15565b9050919050565b600081519050919050565b60005b8381101562001b8957808201518184015260208101905062001b6c565b8381111562001b99576000848401525b50505050565b600062001bac8262001b5e565b62001bb8818562001ab5565b935062001bca81856020860162001b69565b62001bd581620017c5565b840191505092915050565b6000606082019050818103600083015262001bfc818662001b9f565b9050818103602083015262001c12818562001b9f565b905062001c236040830184620019ed565b949350505050565b600081519050919050565b600082825260208201905092915050565b600062001c548262001c2b565b62001c60818562001c36565b935062001c7281856020860162001b69565b62001c7d81620017c5565b840191505092915050565b600060408201905062001c9f6000830185620019ed565b818103602083015262001cb3818462001c47565b90509392505050565b6000604082019050818103600083015262001cd8818562001b9f565b9050818103602083015262001cee818462001b9f565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001d3382620019b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562001d695762001d6862001cf7565b5b600182019050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600062001db760178362001d74565b915062001dc48262001d7f565b601782019050919050565b600062001ddc8262001b5e565b62001de8818562001d74565b935062001dfa81856020860162001b69565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600062001e3e60118362001d74565b915062001e4b8262001e06565b601182019050919050565b600062001e638262001da8565b915062001e71828562001dcf565b915062001e7e8262001e2f565b915062001e8c828462001dcf565b91508190509392505050565b6000602082019050818103600083015262001eb4818462001b9f565b905092915050565b7f412070726f7879207769746820676976656e206e616d6520616c72656164792060008201527f6578697374732100000000000000000000000000000000000000000000000000602082015250565b600062001f1a60278362001ab5565b915062001f278262001ebc565b604082019050919050565b6000602082019050818103600083015262001f4d8162001f0b565b9050919050565b600062001f6182620019b5565b915062001f6e83620019b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001faa5762001fa962001cf7565b5b828202905092915050565b600062001fc282620019b5565b915062001fcf83620019b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562002007576200200662001cf7565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006200204e82620019b5565b9150600082141562002065576200206462001cf7565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000620020a860208362001ab5565b9150620020b58262002070565b602082019050919050565b60006020820190508181036000830152620020db8162002099565b905091905056fe608060405260405162001054380380620010548339818101604052810190620000299190620006ea565b60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5160001c6200005b919062000789565b60001b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b14620000935762000092620007c4565b5b620000a782826000620000af60201b60201c565b505062000ad4565b620000c083620001a660201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a2600082511180620001115750805b15620001a1576200019f8373ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000167573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018d9190620007f3565b836200034560201b620000371760201c565b505b505050565b620001bc816200037b60201b620000641760201c565b620001fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f590620008ac565b60405180910390fd5b620002858173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002749190620007f3565b6200037b60201b620000641760201c565b620002c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002be9062000944565b60405180910390fd5b80620003017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6200038e60201b620000771760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606200037383836040518060600160405280602781526020016200102d602791396200039860201b60201c565b905092915050565b600080823b905060008111915050919050565b6000819050919050565b6060620003ab846200037b60201b60201c565b620003ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e490620009dc565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405162000417919062000a4b565b600060405180830381855af49150503d806000811462000454576040519150601f19603f3d011682016040523d82523d6000602084013e62000459565b606091505b5091509150620004718282866200047c60201b60201c565b925050509392505050565b606083156200048e57829050620004e1565b600083511115620004a25782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d8919062000ab0565b60405180910390fd5b9392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200052982620004fc565b9050919050565b6200053b816200051c565b81146200054757600080fd5b50565b6000815190506200055b8162000530565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005b6826200056b565b810181811067ffffffffffffffff82111715620005d857620005d76200057c565b5b80604052505050565b6000620005ed620004e8565b9050620005fb8282620005ab565b919050565b600067ffffffffffffffff8211156200061e576200061d6200057c565b5b62000629826200056b565b9050602081019050919050565b60005b838110156200065657808201518184015260208101905062000639565b8381111562000666576000848401525b50505050565b6000620006836200067d8462000600565b620005e1565b905082815260208101848484011115620006a257620006a162000566565b5b620006af84828562000636565b509392505050565b600082601f830112620006cf57620006ce62000561565b5b8151620006e18482602086016200066c565b91505092915050565b60008060408385031215620007045762000703620004f2565b5b600062000714858286016200054a565b925050602083015167ffffffffffffffff811115620007385762000737620004f7565b5b6200074685828601620006b7565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007968262000750565b9150620007a38362000750565b925082821015620007b957620007b86200075a565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000602082840312156200080c576200080b620004f2565b5b60006200081c848285016200054a565b91505092915050565b600082825260208201905092915050565b7f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b60006200089460258362000825565b9150620008a18262000836565b604082019050919050565b60006020820190508181036000830152620008c78162000885565b9050919050565b7f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960008201527f73206e6f74206120636f6e747261637400000000000000000000000000000000602082015250565b60006200092c60308362000825565b91506200093982620008ce565b604082019050919050565b600060208201905081810360008301526200095f816200091d565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000620009c460268362000825565b9150620009d18262000966565b604082019050919050565b60006020820190508181036000830152620009f781620009b5565b9050919050565b600081519050919050565b600081905092915050565b600062000a2182620009fe565b62000a2d818562000a09565b935062000a3f81856020860162000636565b80840191505092915050565b600062000a59828462000a14565b915081905092915050565b600081519050919050565b600062000a7c8262000a64565b62000a88818562000825565b935062000a9a81856020860162000636565b62000aa5816200056b565b840191505092915050565b6000602082019050818103600083015262000acc818462000a6f565b905092915050565b6105498062000ae46000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b610025610081565b610035610030610083565b610100565b565b606061005c83836040518060600160405280602781526020016104ed60279139610126565b905092915050565b600080823b905060008111915050919050565b6000819050919050565b565b600061008d6101f3565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610314565b905090565b3660008037600080366000845af43d6000803e8060008114610121573d6000f35b3d6000fd5b606061013184610064565b610170576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906103c4565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051610198919061045e565b600060405180830381855af49150503d80600081146101d3576040519150601f19603f3d011682016040523d82523d6000602084013e6101d8565b606091505b50915091506101e882828661024a565b925050509392505050565b60006102217fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b610077565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060831561025a578290506102aa565b60008351111561026d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a191906104ca565b60405180910390fd5b9392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102e1826102b6565b9050919050565b6102f1816102d6565b81146102fc57600080fd5b50565b60008151905061030e816102e8565b92915050565b60006020828403121561032a576103296102b1565b5b6000610338848285016102ff565b91505092915050565b600082825260208201905092915050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006103ae602683610341565b91506103b982610352565b604082019050919050565b600060208201905081810360008301526103dd816103a1565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156104185780820151818401526020810190506103fd565b83811115610427576000848401525b50505050565b6000610438826103e4565b61044281856103ef565b93506104528185602086016103fa565b80840191505092915050565b600061046a828461042d565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b600061049c82610475565b6104a68185610341565b93506104b68185602086016103fa565b6104bf81610480565b840191505092915050565b600060208201905081810360008301526104e48184610491565b90509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122038180c93bc90a05b30d773673f3761e016715fc88ee674d29b8dbf9cbd5e111c64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122055616b11a983e95339ca033a5e0b68cb836083bada7697c1cf1d6441c4280d9e64736f6c634300080c003360a06040523480156200001157600080fd5b50604051620017a4380380620017a48339818101604052810190620000379190620003a0565b620000576200004b6200011d60201b60201c565b6200012560201b60201c565b81604051620000669062000328565b620000729190620003f8565b604051809103906000f0801580156200008f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200011581620001e960201b60201c565b505062000530565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001f96200011d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200021f620002ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000278576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026f9062000476565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e2906200050e565b60405180910390fd5b620002fc816200012560201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a918062000d1383390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000368826200033b565b9050919050565b6200037a816200035b565b81146200038657600080fd5b50565b6000815190506200039a816200036f565b92915050565b60008060408385031215620003ba57620003b962000336565b5b6000620003ca8582860162000389565b9250506020620003dd8582860162000389565b9150509250929050565b620003f2816200035b565b82525050565b60006020820190506200040f6000830184620003e7565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200045e60208362000415565b91506200046b8262000426565b602082019050919050565b6000602082019050818103600083015262000491816200044f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620004f660268362000415565b9150620005038262000498565b604082019050919050565b600060208201905081810360008301526200052981620004e7565b9050919050565b6080516107c06200055360003960008181610181015261025201526107c06000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631c1b8772146100675780635c60da1b14610083578063715018a6146100a15780638da5cb5b146100ab578063d723c565146100c9578063f2fde38b146100e7575b600080fd5b610081600480360381019061007c91906105e2565b610103565b005b61008b61024e565b604051610098919061061e565b60405180910390f35b6100a96102e4565b005b6100b361036c565b6040516100c0919061061e565b60405180910390f35b6100d1610395565b6040516100de919061061e565b60405180910390f35b61010160048036038101906100fc91906105e2565b6103bb565b005b61010b6104b3565b73ffffffffffffffffffffffffffffffffffffffff1661012961036c565b73ffffffffffffffffffffffffffffffffffffffff161461017f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017690610696565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633659cfe6826040518263ffffffff1660e01b81526004016101d8919061061e565b600060405180830381600087803b1580156101f257600080fd5b505af1158015610206573d6000803e3d6000fd5b5050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df91906106cb565b905090565b6102ec6104b3565b73ffffffffffffffffffffffffffffffffffffffff1661030a61036c565b73ffffffffffffffffffffffffffffffffffffffff1614610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035790610696565b60405180910390fd5b61036a60006104bb565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103c36104b3565b73ffffffffffffffffffffffffffffffffffffffff166103e161036c565b73ffffffffffffffffffffffffffffffffffffffff1614610437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042e90610696565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e9061076a565b60405180910390fd5b6104b0816104bb565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105af82610584565b9050919050565b6105bf816105a4565b81146105ca57600080fd5b50565b6000813590506105dc816105b6565b92915050565b6000602082840312156105f8576105f761057f565b5b6000610606848285016105cd565b91505092915050565b610618816105a4565b82525050565b6000602082019050610633600083018461060f565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610680602083610639565b915061068b8261064a565b602082019050919050565b600060208201905081810360008301526106af81610673565b9050919050565b6000815190506106c5816105b6565b92915050565b6000602082840312156106e1576106e061057f565b5b60006106ef848285016106b6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610754602683610639565b915061075f826106f8565b604082019050919050565b6000602082019050818103600083015261078381610747565b905091905056fea26469706673582212207cd75f027a1a8407e0d32faba122855b79aa6445bf4bb08c79f021022f39fed764736f6c634300080c0033608060405234801561001057600080fd5b5060405162000a9138038062000a918339818101604052810190610034919061023d565b61005061004561006560201b60201c565b61006d60201b60201c565b61005f8161013160201b60201c565b5061030d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610144816101c760201b6103781760201c565b610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017a906102ed565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080823b905060008111915050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061020a826101df565b9050919050565b61021a816101ff565b811461022557600080fd5b50565b60008151905061023781610211565b92915050565b600060208284031215610253576102526101da565b5b600061026184828501610228565b91505092915050565b600082825260208201905092915050565b7f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60008201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000602082015250565b60006102d760338361026a565b91506102e28261027b565b604082019050919050565b60006020820190508181036000830152610306816102ca565b9050919050565b610774806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610078578063715018a6146100965780638da5cb5b146100a0578063f2fde38b146100be575b600080fd5b61007660048036038101906100719190610546565b6100da565b005b6100806101a5565b60405161008d9190610582565b60405180910390f35b61009e6101cf565b005b6100a8610257565b6040516100b59190610582565b60405180910390f35b6100d860048036038101906100d39190610546565b610280565b005b6100e261038b565b73ffffffffffffffffffffffffffffffffffffffff16610100610257565b73ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906105fa565b60405180910390fd5b61015f81610393565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101d761038b565b73ffffffffffffffffffffffffffffffffffffffff166101f5610257565b73ffffffffffffffffffffffffffffffffffffffff161461024b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610242906105fa565b60405180910390fd5b610255600061041f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61028861038b565b73ffffffffffffffffffffffffffffffffffffffff166102a6610257565b73ffffffffffffffffffffffffffffffffffffffff16146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906105fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561036c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103639061068c565b60405180910390fd5b6103758161041f565b50565b600080823b905060008111915050919050565b600033905090565b61039c81610378565b6103db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d29061071e565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610513826104e8565b9050919050565b61052381610508565b811461052e57600080fd5b50565b6000813590506105408161051a565b92915050565b60006020828403121561055c5761055b6104e3565b5b600061056a84828501610531565b91505092915050565b61057c81610508565b82525050565b60006020820190506105976000830184610573565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006105e460208361059d565b91506105ef826105ae565b602082019050919050565b60006020820190508181036000830152610613816105d7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061067660268361059d565b91506106818261061a565b604082019050919050565b600060208201905081810360008301526106a581610669565b9050919050565b7f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60008201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000602082015250565b600061070860338361059d565b9150610713826106ac565b604082019050919050565b60006020820190508181036000830152610737816106fb565b905091905056fea2646970667358221220c2e3f3371a26abe8a300c0795dc24cccc49faba2a4790af7de32dda83118078164736f6c634300080c0033"; + "0x60e06040523480156200001157600080fd5b5060405162004db138038062004db18339818101604052810190620000379190620003c2565b6200004c6000801b33620001d160201b60201c565b6200007e7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92933620001d160201b60201c565b82336040516200008e906200034a565b6200009b9291906200042f565b604051809103906000f080158015620000b8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508133604051620000fc906200034a565b620001099291906200042f565b604051809103906000f08015801562000126573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505080336040516200016a906200034a565b620001779291906200042f565b604051809103906000f08015801562000194573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506200045c565b620001e38282620001e760201b60201c565b5050565b620001f98282620002d860201b60201c565b620002d457600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002796200034260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6117a4806200360d83390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200038a826200035d565b9050919050565b6200039c816200037d565b8114620003a857600080fd5b50565b600081519050620003bc8162000391565b92915050565b600080600060608486031215620003de57620003dd62000358565b5b6000620003ee86828701620003ab565b93505060206200040186828701620003ab565b92505060406200041486828701620003ab565b9150509250925092565b62000429816200037d565b82525050565b60006040820190506200044660008301856200041e565b6200045560208301846200041e565b9392505050565b60805160a05160c05161316c620004a160003960008181610b310152610e510152600081816107ae0152610cde0152600081816107860152610953015261316c6000f3fe60806040523480156200001157600080fd5b5060043610620001785760003560e01c80637048027511620000d5578063d547741f1162000087578063d547741f1462000461578063d6a4e1371462000481578063d97034f614620004b7578063e715c2aa14620004ed578063f0483c35146200050f578063f5b541a614620005315762000178565b806370480275146200037357806391d1485414620003935780639870d7fe14620003c9578063a217fddf14620003e9578063ac8a584a146200040b578063cd9d75af146200042b5762000178565b80632f2ff15d116200012f5780632f2ff15d14620002ab5780632ffff04f14620002cb57806336568abe14620002ed5780633d23bf7f146200030d57806344a413b3146200032f57806349a7ee0414620003515762000178565b806301ffc9a7146200017d5780631785f53c14620001b3578063248a9ca314620001d3578063261195ca14620002095780632d1d90a6146200023f5780632e2712a71462000275575b600080fd5b6200019b60048036038101906200019591906200161d565b62000553565b604051620001aa91906200166c565b60405180910390f35b620001d16004803603810190620001cb9190620016ee565b620005d0565b005b620001f16004803603810190620001eb91906200175b565b620005fc565b6040516200020091906200179e565b60405180910390f35b6200022760048036038101906200022191906200191d565b6200061b565b6040516200023691906200166c565b60405180910390f35b6200025d60048036038101906200025791906200191d565b62000651565b6040516200026c91906200166c565b60405180910390f35b6200029360048036038101906200028d91906200191d565b62000687565b604051620002a291906200166c565b60405180910390f35b620002c96004803603810190620002c391906200196e565b620006bd565b005b620002d5620006ee565b604051620002e49190620019d0565b60405180910390f35b6200030b60048036038101906200030591906200196e565b620006f8565b005b6200031762000782565b604051620003269190620019fe565b60405180910390f35b62000339620007aa565b604051620003489190620019fe565b60405180910390f35b6200035b620007d2565b6040516200036a9190620019d0565b60405180910390f35b6200039160048036038101906200038b9190620016ee565b620007dc565b005b620003b16004803603810190620003ab91906200196e565b62000808565b604051620003c091906200166c565b60405180910390f35b620003e76004803603810190620003e19190620016ee565b62000872565b005b620003f3620008bb565b6040516200040291906200179e565b60405180910390f35b620004296004803603810190620004239190620016ee565b620008c2565b005b62000449600480360381019062000443919062001a1b565b6200090b565b604051620004589190620019fe565b60405180910390f35b6200047f60048036038101906200047991906200196e565b62000ab8565b005b6200049f600480360381019062000499919062001a1b565b62000ae9565b604051620004ae9190620019fe565b60405180910390f35b620004d56004803603810190620004cf919062001a1b565b62000c96565b604051620004e49190620019fe565b60405180910390f35b620004f762000e43565b604051620005069190620019d0565b60405180910390f35b6200051962000e4d565b604051620005289190620019fe565b60405180910390f35b6200053b62000e75565b6040516200054a91906200179e565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480620005c95750620005c88262000e99565b5b9050919050565b6000801b620005e981620005e362000f03565b62000f0b565b620005f86000801b8362000fb3565b5050565b6000806000838152602001908152602001600020600101549050919050565b600080828051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16915050919050565b600080828051906020012090506005600082815260200190815260200160002060009054906101000a900460ff16915050919050565b600080828051906020012090506006600082815260200190815260200160002060009054906101000a900460ff16915050919050565b620006c882620005fc565b620006dd81620006d762000f03565b62000f0b565b620006e9838362001099565b505050565b6000600154905090565b6200070262000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007699062001b3c565b60405180910390fd5b6200077e828262000fb3565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000600254905090565b6000801b620007f581620007ef62000f03565b62000f0b565b620008046000801b8362001099565b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b6200088b816200088562000f03565b62000f0b565b620008b77f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298362001099565b5050565b6000801b81565b6000801b620008db81620008d562000f03565b62000f0b565b620009077f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9298362000fb3565b5050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000943816200093d62000f03565b62000f0b565b6200094e856200117e565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b878787604051602401620009919392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051620009fc906200159e565b62000a0992919062001c88565b604051809103906000f08015801562000a26573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0fd98d454cf9377894281f5fd6630872388451935e35d8b380deb1eca8fff909888860405162000a8a92919062001cbc565b60405180910390a36001600081548092919062000aa79062001d26565b919050555080925050509392505050565b62000ac382620005fc565b62000ad88162000ad262000f03565b62000f0b565b62000ae4838362000fb3565b505050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000b218162000b1b62000f03565b62000f0b565b62000b2c8562001215565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b87878760405160240162000b6f9392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000bda906200159e565b62000be792919062001c88565b604051809103906000f08015801562000c04573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fe441502a53647f49136d0783e261a97f2041c4a23c185376894bd84c8ecb3ea3888860405162000c6892919062001cbc565b60405180910390a36003600081548092919062000c859062001d26565b919050555080925050509392505050565b60007f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92962000cce8162000cc862000f03565b62000f0b565b62000cd985620012ac565b5060007f000000000000000000000000000000000000000000000000000000000000000063077f224a60e01b87878760405160240162000d1c9392919062001be0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405162000d87906200159e565b62000d9492919062001c88565b604051809103906000f08015801562000db1573d6000803e3d6000fd5b5090508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f53af30b9917c2940559f465c228df52f44cdb0d9358dfed6f0ca12054a1cd47d888860405162000e1592919062001cbc565b60405180910390a36002600081548092919062000e329062001d26565b919050555080925050509392505050565b6000600354905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92981565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b62000f17828262000808565b62000faf5762000f3f8173ffffffffffffffffffffffffffffffffffffffff16601462001343565b62000f4f8360001c602062001343565b60405160200162000f6292919062001e56565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fa6919062001e98565b60405180910390fd5b5050565b62000fbf828262000808565b156200109557600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200103a62000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b620010a5828262000808565b6200117a57600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200111f62000f03565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008015156200118e836200061b565b151514620011d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620011ca9062001f32565b60405180910390fd5b60008280519060200120905060016004600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b6000801515620012258362000687565b1515146200126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012619062001f32565b60405180910390fd5b60008280519060200120905060016006600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b6000801515620012bc8362000651565b15151462001301576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012f89062001f32565b60405180910390fd5b60008280519060200120905060016005600083815260200190815260200160002060006101000a81548160ff0219169083151502179055506001915050919050565b60606000600283600262001358919062001f54565b62001364919062001fb5565b67ffffffffffffffff81111562001380576200137f620017d6565b5b6040519080825280601f01601f191660200182016040528015620013b35781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110620013ee57620013ed62002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811062001455576200145462002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600262001497919062001f54565b620014a3919062001fb5565b90505b60018111156200154d577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110620014e957620014e862002012565b5b1a60f81b82828151811062001503576200150262002012565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080620015459062002041565b9050620014a6565b506000841462001594576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200158b90620020c0565b60405180910390fd5b8091505092915050565b61105480620020e383390190565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620015f781620015c0565b81146200160357600080fd5b50565b6000813590506200161781620015ec565b92915050565b600060208284031215620016365762001635620015b6565b5b6000620016468482850162001606565b91505092915050565b60008115159050919050565b62001666816200164f565b82525050565b60006020820190506200168360008301846200165b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620016b68262001689565b9050919050565b620016c881620016a9565b8114620016d457600080fd5b50565b600081359050620016e881620016bd565b92915050565b600060208284031215620017075762001706620015b6565b5b60006200171784828501620016d7565b91505092915050565b6000819050919050565b620017358162001720565b81146200174157600080fd5b50565b60008135905062001755816200172a565b92915050565b600060208284031215620017745762001773620015b6565b5b6000620017848482850162001744565b91505092915050565b620017988162001720565b82525050565b6000602082019050620017b560008301846200178d565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200181082620017c5565b810181811067ffffffffffffffff82111715620018325762001831620017d6565b5b80604052505050565b600062001847620015ac565b905062001855828262001805565b919050565b600067ffffffffffffffff821115620018785762001877620017d6565b5b6200188382620017c5565b9050602081019050919050565b82818337600083830152505050565b6000620018b6620018b0846200185a565b6200183b565b905082815260208101848484011115620018d557620018d4620017c0565b5b620018e284828562001890565b509392505050565b600082601f830112620019025762001901620017bb565b5b8135620019148482602086016200189f565b91505092915050565b600060208284031215620019365762001935620015b6565b5b600082013567ffffffffffffffff811115620019575762001956620015bb565b5b6200196584828501620018ea565b91505092915050565b60008060408385031215620019885762001987620015b6565b5b6000620019988582860162001744565b9250506020620019ab85828601620016d7565b9150509250929050565b6000819050919050565b620019ca81620019b5565b82525050565b6000602082019050620019e76000830184620019bf565b92915050565b620019f881620016a9565b82525050565b600060208201905062001a156000830184620019ed565b92915050565b60008060006060848603121562001a375762001a36620015b6565b5b600084013567ffffffffffffffff81111562001a585762001a57620015bb565b5b62001a6686828701620018ea565b935050602084013567ffffffffffffffff81111562001a8a5762001a89620015bb565b5b62001a9886828701620018ea565b925050604062001aab86828701620016d7565b9150509250925092565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600062001b24602f8362001ab5565b915062001b318262001ac6565b604082019050919050565b6000602082019050818103600083015262001b578162001b15565b9050919050565b600081519050919050565b60005b8381101562001b8957808201518184015260208101905062001b6c565b8381111562001b99576000848401525b50505050565b600062001bac8262001b5e565b62001bb8818562001ab5565b935062001bca81856020860162001b69565b62001bd581620017c5565b840191505092915050565b6000606082019050818103600083015262001bfc818662001b9f565b9050818103602083015262001c12818562001b9f565b905062001c236040830184620019ed565b949350505050565b600081519050919050565b600082825260208201905092915050565b600062001c548262001c2b565b62001c60818562001c36565b935062001c7281856020860162001b69565b62001c7d81620017c5565b840191505092915050565b600060408201905062001c9f6000830185620019ed565b818103602083015262001cb3818462001c47565b90509392505050565b6000604082019050818103600083015262001cd8818562001b9f565b9050818103602083015262001cee818462001b9f565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062001d3382620019b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562001d695762001d6862001cf7565b5b600182019050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600062001db760178362001d74565b915062001dc48262001d7f565b601782019050919050565b600062001ddc8262001b5e565b62001de8818562001d74565b935062001dfa81856020860162001b69565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600062001e3e60118362001d74565b915062001e4b8262001e06565b601182019050919050565b600062001e638262001da8565b915062001e71828562001dcf565b915062001e7e8262001e2f565b915062001e8c828462001dcf565b91508190509392505050565b6000602082019050818103600083015262001eb4818462001b9f565b905092915050565b7f412070726f7879207769746820676976656e206e616d6520616c72656164792060008201527f6578697374732100000000000000000000000000000000000000000000000000602082015250565b600062001f1a60278362001ab5565b915062001f278262001ebc565b604082019050919050565b6000602082019050818103600083015262001f4d8162001f0b565b9050919050565b600062001f6182620019b5565b915062001f6e83620019b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001faa5762001fa962001cf7565b5b828202905092915050565b600062001fc282620019b5565b915062001fcf83620019b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562002007576200200662001cf7565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006200204e82620019b5565b9150600082141562002065576200206462001cf7565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000620020a860208362001ab5565b9150620020b58262002070565b602082019050919050565b60006020820190508181036000830152620020db8162002099565b905091905056fe608060405260405162001054380380620010548339818101604052810190620000299190620006ea565b60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5160001c6200005b919062000789565b60001b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b14620000935762000092620007c4565b5b620000a782826000620000af60201b60201c565b505062000ad4565b620000c083620001a660201b60201c565b8273ffffffffffffffffffffffffffffffffffffffff167f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e60405160405180910390a2600082511180620001115750805b15620001a1576200019f8373ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000167573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018d9190620007f3565b836200034560201b620000371760201c565b505b505050565b620001bc816200037b60201b620000641760201c565b620001fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f590620008ac565b60405180910390fd5b620002858173ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002749190620007f3565b6200037b60201b620000641760201c565b620002c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002be9062000944565b60405180910390fd5b80620003017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6200038e60201b620000771760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606200037383836040518060600160405280602781526020016200102d602791396200039860201b60201c565b905092915050565b600080823b905060008111915050919050565b6000819050919050565b6060620003ab846200037b60201b60201c565b620003ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e490620009dc565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405162000417919062000a4b565b600060405180830381855af49150503d806000811462000454576040519150601f19603f3d011682016040523d82523d6000602084013e62000459565b606091505b5091509150620004718282866200047c60201b60201c565b925050509392505050565b606083156200048e57829050620004e1565b600083511115620004a25782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d8919062000ab0565b60405180910390fd5b9392505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200052982620004fc565b9050919050565b6200053b816200051c565b81146200054757600080fd5b50565b6000815190506200055b8162000530565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005b6826200056b565b810181811067ffffffffffffffff82111715620005d857620005d76200057c565b5b80604052505050565b6000620005ed620004e8565b9050620005fb8282620005ab565b919050565b600067ffffffffffffffff8211156200061e576200061d6200057c565b5b62000629826200056b565b9050602081019050919050565b60005b838110156200065657808201518184015260208101905062000639565b8381111562000666576000848401525b50505050565b6000620006836200067d8462000600565b620005e1565b905082815260208101848484011115620006a257620006a162000566565b5b620006af84828562000636565b509392505050565b600082601f830112620006cf57620006ce62000561565b5b8151620006e18482602086016200066c565b91505092915050565b60008060408385031215620007045762000703620004f2565b5b600062000714858286016200054a565b925050602083015167ffffffffffffffff811115620007385762000737620004f7565b5b6200074685828601620006b7565b9150509250929050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007968262000750565b9150620007a38362000750565b925082821015620007b957620007b86200075a565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000602082840312156200080c576200080b620004f2565b5b60006200081c848285016200054a565b91505092915050565b600082825260208201905092915050565b7f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b60006200089460258362000825565b9150620008a18262000836565b604082019050919050565b60006020820190508181036000830152620008c78162000885565b9050919050565b7f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960008201527f73206e6f74206120636f6e747261637400000000000000000000000000000000602082015250565b60006200092c60308362000825565b91506200093982620008ce565b604082019050919050565b600060208201905081810360008301526200095f816200091d565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b6000620009c460268362000825565b9150620009d18262000966565b604082019050919050565b60006020820190508181036000830152620009f781620009b5565b9050919050565b600081519050919050565b600081905092915050565b600062000a2182620009fe565b62000a2d818562000a09565b935062000a3f81856020860162000636565b80840191505092915050565b600062000a59828462000a14565b915081905092915050565b600081519050919050565b600062000a7c8262000a64565b62000a88818562000825565b935062000a9a81856020860162000636565b62000aa5816200056b565b840191505092915050565b6000602082019050818103600083015262000acc818462000a6f565b905092915050565b6105498062000ae46000396000f3fe6080604052366100135761001161001d565b005b61001b61001d565b005b610025610081565b610035610030610083565b610100565b565b606061005c83836040518060600160405280602781526020016104ed60279139610126565b905092915050565b600080823b905060008111915050919050565b6000819050919050565b565b600061008d6101f3565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610314565b905090565b3660008037600080366000845af43d6000803e8060008114610121573d6000f35b3d6000fd5b606061013184610064565b610170576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906103c4565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1685604051610198919061045e565b600060405180830381855af49150503d80600081146101d3576040519150601f19603f3d011682016040523d82523d6000602084013e6101d8565b606091505b50915091506101e882828661024a565b925050509392505050565b60006102217fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b610077565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060831561025a578290506102aa565b60008351111561026d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a191906104ca565b60405180910390fd5b9392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102e1826102b6565b9050919050565b6102f1816102d6565b81146102fc57600080fd5b50565b60008151905061030e816102e8565b92915050565b60006020828403121561032a576103296102b1565b5b6000610338848285016102ff565b91505092915050565b600082825260208201905092915050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006103ae602683610341565b91506103b982610352565b604082019050919050565b600060208201905081810360008301526103dd816103a1565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156104185780820151818401526020810190506103fd565b83811115610427576000848401525b50505050565b6000610438826103e4565b61044281856103ef565b93506104528185602086016103fa565b80840191505092915050565b600061046a828461042d565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b600061049c82610475565b6104a68185610341565b93506104b68185602086016103fa565b6104bf81610480565b840191505092915050565b600060208201905081810360008301526104e48184610491565b90509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122038180c93bc90a05b30d773673f3761e016715fc88ee674d29b8dbf9cbd5e111c64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208c58f1c3d551900cf5ded4c2da9254fccc9f5a46488061bbc534267d365de8e864736f6c634300080c003360a06040523480156200001157600080fd5b50604051620017a4380380620017a48339818101604052810190620000379190620003a0565b620000576200004b6200011d60201b60201c565b6200012560201b60201c565b81604051620000669062000328565b620000729190620003f8565b604051809103906000f0801580156200008f573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200011581620001e960201b60201c565b505062000530565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620001f96200011d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200021f620002ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000278576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200026f9062000476565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e2906200050e565b60405180910390fd5b620002fc816200012560201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a918062000d1383390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000368826200033b565b9050919050565b6200037a816200035b565b81146200038657600080fd5b50565b6000815190506200039a816200036f565b92915050565b60008060408385031215620003ba57620003b962000336565b5b6000620003ca8582860162000389565b9250506020620003dd8582860162000389565b9150509250929050565b620003f2816200035b565b82525050565b60006020820190506200040f6000830184620003e7565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200045e60208362000415565b91506200046b8262000426565b602082019050919050565b6000602082019050818103600083015262000491816200044f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620004f660268362000415565b9150620005038262000498565b604082019050919050565b600060208201905081810360008301526200052981620004e7565b9050919050565b6080516107c06200055360003960008181610181015261025201526107c06000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631c1b8772146100675780635c60da1b14610083578063715018a6146100a15780638da5cb5b146100ab578063d723c565146100c9578063f2fde38b146100e7575b600080fd5b610081600480360381019061007c91906105e2565b610103565b005b61008b61024e565b604051610098919061061e565b60405180910390f35b6100a96102e4565b005b6100b361036c565b6040516100c0919061061e565b60405180910390f35b6100d1610395565b6040516100de919061061e565b60405180910390f35b61010160048036038101906100fc91906105e2565b6103bb565b005b61010b6104b3565b73ffffffffffffffffffffffffffffffffffffffff1661012961036c565b73ffffffffffffffffffffffffffffffffffffffff161461017f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017690610696565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633659cfe6826040518263ffffffff1660e01b81526004016101d8919061061e565b600060405180830381600087803b1580156101f257600080fd5b505af1158015610206573d6000803e3d6000fd5b5050505080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df91906106cb565b905090565b6102ec6104b3565b73ffffffffffffffffffffffffffffffffffffffff1661030a61036c565b73ffffffffffffffffffffffffffffffffffffffff1614610360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035790610696565b60405180910390fd5b61036a60006104bb565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103c36104b3565b73ffffffffffffffffffffffffffffffffffffffff166103e161036c565b73ffffffffffffffffffffffffffffffffffffffff1614610437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042e90610696565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156104a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049e9061076a565b60405180910390fd5b6104b0816104bb565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006105af82610584565b9050919050565b6105bf816105a4565b81146105ca57600080fd5b50565b6000813590506105dc816105b6565b92915050565b6000602082840312156105f8576105f761057f565b5b6000610606848285016105cd565b91505092915050565b610618816105a4565b82525050565b6000602082019050610633600083018461060f565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610680602083610639565b915061068b8261064a565b602082019050919050565b600060208201905081810360008301526106af81610673565b9050919050565b6000815190506106c5816105b6565b92915050565b6000602082840312156106e1576106e061057f565b5b60006106ef848285016106b6565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610754602683610639565b915061075f826106f8565b604082019050919050565b6000602082019050818103600083015261078381610747565b905091905056fea26469706673582212207cd75f027a1a8407e0d32faba122855b79aa6445bf4bb08c79f021022f39fed764736f6c634300080c0033608060405234801561001057600080fd5b5060405162000a9138038062000a918339818101604052810190610034919061023d565b61005061004561006560201b60201c565b61006d60201b60201c565b61005f8161013160201b60201c565b5061030d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610144816101c760201b6103781760201c565b610183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017a906102ed565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080823b905060008111915050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061020a826101df565b9050919050565b61021a816101ff565b811461022557600080fd5b50565b60008151905061023781610211565b92915050565b600060208284031215610253576102526101da565b5b600061026184828501610228565b91505092915050565b600082825260208201905092915050565b7f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60008201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000602082015250565b60006102d760338361026a565b91506102e28261027b565b604082019050919050565b60006020820190508181036000830152610306816102ca565b9050919050565b610774806200031d6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610078578063715018a6146100965780638da5cb5b146100a0578063f2fde38b146100be575b600080fd5b61007660048036038101906100719190610546565b6100da565b005b6100806101a5565b60405161008d9190610582565b60405180910390f35b61009e6101cf565b005b6100a8610257565b6040516100b59190610582565b60405180910390f35b6100d860048036038101906100d39190610546565b610280565b005b6100e261038b565b73ffffffffffffffffffffffffffffffffffffffff16610100610257565b73ffffffffffffffffffffffffffffffffffffffff1614610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906105fa565b60405180910390fd5b61015f81610393565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6101d761038b565b73ffffffffffffffffffffffffffffffffffffffff166101f5610257565b73ffffffffffffffffffffffffffffffffffffffff161461024b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610242906105fa565b60405180910390fd5b610255600061041f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61028861038b565b73ffffffffffffffffffffffffffffffffffffffff166102a6610257565b73ffffffffffffffffffffffffffffffffffffffff16146102fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f3906105fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561036c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103639061068c565b60405180910390fd5b6103758161041f565b50565b600080823b905060008111915050919050565b600033905090565b61039c81610378565b6103db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d29061071e565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610513826104e8565b9050919050565b61052381610508565b811461052e57600080fd5b50565b6000813590506105408161051a565b92915050565b60006020828403121561055c5761055b6104e3565b5b600061056a84828501610531565b91505092915050565b61057c81610508565b82525050565b60006020820190506105976000830184610573565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006105e460208361059d565b91506105ef826105ae565b602082019050919050565b60006020820190508181036000830152610613816105d7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061067660268361059d565b91506106818261061a565b604082019050919050565b600060208201905081810360008301526106a581610669565b9050919050565b7f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60008201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000602082015250565b600061070860338361059d565b9150610713826106ac565b604082019050919050565b60006020820190508181036000830152610737816106fb565b905091905056fea2646970667358221220c2e3f3371a26abe8a300c0795dc24cccc49faba2a4790af7de32dda83118078164736f6c634300080c0033"; type TalkoFactoryConstructorParams = | [signer?: Signer]