From d4e187f5634c321fe01a7f44c77ddc8d8bd17e41 Mon Sep 17 00:00:00 2001 From: Solid Studio Date: Sat, 4 Jul 2020 09:34:49 +0100 Subject: [PATCH] first commit --- .coveralls.yml | 2 + .gitignore | 2 +- .legacy.ts | 119 + public/favicon.ico | Bin 0 -> 3150 bytes public/index.html | 77 + public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 + public/robots.txt | 3 + src/App.css | 9 + src/App.tsx | 84 + src/AppContext.tsx | 17 + src/hooks/useLocalStorage.tsx | 37 + src/index.tsx | 11 + src/react-app-env.d.ts | 1 + src/routes.tsx | 36 + src/setupTests.ts | 5 + src/types.ts | 11 + src/utils/faker.ts | 30 + src/utils/index.ts | 2 + src/utils/publisher.test.ts | 40 + src/utils/publisher.ts | 13 + src/utils/sample-data/file.json | 4272 ++++++++++++++++ .../sample-artifact-with-comments.json | 4287 +++++++++++++++++ src/utils/sample-data/sample-artifact.json | 3771 +++++++++++++++ src/utils/template.ts | 122 + src/utils/types.ts | 36 + src/utils/utils.test.ts | 93 + src/utils/utils.ts | 94 + src/views/ErrorView.tsx | 31 + src/views/HomeView.tsx | 128 + src/views/index.ts | 2 + tslint.json | 16 + 33 files changed, 13375 insertions(+), 1 deletion(-) create mode 100644 .coveralls.yml create mode 100644 .legacy.ts create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/AppContext.tsx create mode 100644 src/hooks/useLocalStorage.tsx create mode 100644 src/index.tsx create mode 100644 src/react-app-env.d.ts create mode 100644 src/routes.tsx create mode 100644 src/setupTests.ts create mode 100644 src/types.ts create mode 100644 src/utils/faker.ts create mode 100644 src/utils/index.ts create mode 100644 src/utils/publisher.test.ts create mode 100644 src/utils/publisher.ts create mode 100644 src/utils/sample-data/file.json create mode 100644 src/utils/sample-data/sample-artifact-with-comments.json create mode 100644 src/utils/sample-data/sample-artifact.json create mode 100644 src/utils/template.ts create mode 100644 src/utils/types.ts create mode 100644 src/utils/utils.test.ts create mode 100644 src/utils/utils.ts create mode 100644 src/views/ErrorView.tsx create mode 100644 src/views/HomeView.tsx create mode 100644 src/views/index.ts create mode 100644 tslint.json diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 0000000000..1403477128 --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1,2 @@ +service_name: circleci +repo_token: $COVERALLS_REPO_TOKEN \ No newline at end of file diff --git a/.gitignore b/.gitignore index 50d7c7b916..d25f01c767 100644 --- a/.gitignore +++ b/.gitignore @@ -60,4 +60,4 @@ testem.log libs/remix-node/ libs/remix-niks/ -apps/remix-react \ No newline at end of file +apps/remix-react diff --git a/.legacy.ts b/.legacy.ts new file mode 100644 index 0000000000..ba9649083a --- /dev/null +++ b/.legacy.ts @@ -0,0 +1,119 @@ +import { + CompilationResult, + CompiledContract, + DeveloperDocumentation, + UserDocumentation, + DevMethodDoc, + FunctionDescription, + UserMethodDoc, + ABIParameter +} from '@remixproject/plugin-iframe' + +type TemplateDoc = { [key in keyof T]: (...params: any[]) => string } + +/** Create documentation for a compilation result */ +export function createDoc(result: CompilationResult) { + return Object.keys(result.contracts).reduce((acc, fileName) => { + const contracts = result.contracts[fileName] + Object.keys(contracts).forEach((name) => (acc[name] = getContractDoc(name, contracts[name]))) + return acc + }, {}) +} + +////////////// +// CONTRACT // +////////////// + +type ContractDoc = DeveloperDocumentation & UserDocumentation + +/** Map of the content to display for a contract */ +const contractDocTemplate: TemplateDoc = { + author: (author: string) => `> Created By ${author}\n`, + details: (details: string) => `${details}`, + title: (title: string) => `## ${title}`, + notice: (notice: string) => `_${notice}_`, + methods: () => '' // Methods is managed by getMethod() +} + +/** Create the documentation for a contract */ +function getContractDoc(name: string, contract: CompiledContract) { + const methods = { ...contract.userdoc.methods, ...contract.devdoc.methods } + const contractDoc = { ...contract.userdoc, ...contract.devdoc, methods } + + const methodsDoc = contract.abi + .map((def: FunctionDescription) => { + if (def.type === 'constructor') { + def.name = 'constructor' + // because "constructor" is a string and not a { notice } object for userdoc we need to do that + const methodDoc = { + ...(contract.devdoc.methods.constructor || {}), + notice: contract.userdoc.methods.constructor as string + } + return getMethodDoc(def, methodDoc) + } else { + if (def.type === 'fallback') def.name = 'fallback' + const method = Object.keys(contractDoc.methods).find((key) => key.includes(def.name)) + const methodDoc = contractDoc.methods[method] + return getMethodDoc(def, methodDoc) + } + }) + .join('\n') + + const doc = Object.keys(contractDoc) + .filter((key) => key !== 'methods') + .map((key) => contractDocTemplate[key](contractDoc[key])) + .join('\n') + + return `# ${name}\n${doc}\n${methodsDoc}` +} + +//////////// +// METHOD // +//////////// +type MethodDoc = DevMethodDoc & UserMethodDoc + +/** Map of the content to display for a method */ +const devMethodDocTemplate: TemplateDoc = { + author: (author: string) => `> Created By ${author}\n`, + details: (details: string) => details, + return: (value: string) => `Return : ${value}`, + notice: (notice: string) => notice, + returns: () => '', // Implemented by getParams() + params: () => '' // Implemented by getParams() +} + +/** Create a table of param */ +const getParams = (params: string[]) => + params.length === 0 + ? '_No parameters_' + : `|name |type |description + |-----|-----|----------- + ${params.join('\n')}` + +/** Get the details of a method */ +const getMethodDetails = (devMethod: Partial) => + !devMethod + ? '**Add Documentation for the method here**' + : Object.keys(devMethod) + .filter((key) => key !== 'params') + .map((key) => devMethodDocTemplate[key](devMethod[key])) + .join('\n') + +function extractParams(params: ABIParameter[], devparams: any) { + return params.map((input) => { + const description = devparams[input.name] || '' + return `|${input.name}|${input.type}|${description}` + }) +} +/** Get the doc for a method */ +function getMethodDoc(def: FunctionDescription, devdoc?: Partial) { + const doc = devdoc || {} + const devparams = doc.params || {} + const params = extractParams(def.inputs || [], devparams) + const returns = extractParams(def.outputs || [], devparams) + return ` + ## ${def.name} - ${def.constant ? 'view' : 'read'} + ${getParams(params)} + ${getMethodDetails(devdoc)} + ${`Returns:\n${getParams(returns)}`}` +} \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bcd5dfd67cd0361b78123e95c2dd96031f27f743 GIT binary patch literal 3150 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 MDeX2GIKR{Qf5okjU;qFB literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000000..fcbd2c06ed --- /dev/null +++ b/public/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + Remix Plugin + + + + +
+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000000..080d6c77ac --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000000..e20be2d57e --- /dev/null +++ b/src/App.css @@ -0,0 +1,9 @@ +body { + margin: 0; +} + +#ethdoc .active { + color: #212529; + background-color: #e9ecef; + border-color: #e9ecef; +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000000..145dbbaa5b --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,84 @@ +import React, { useState, useEffect, useRef } from "react" + +import { + createIframeClient, + CompilationFileSources, + CompilationResult, + Status +} from "@remixproject/plugin" + +import { AppContext } from "./AppContext" +import { Routes } from "./routes" +import { useLocalStorage } from "./hooks/useLocalStorage" +import { createDocumentation } from "./utils/utils" + +import "./App.css" +import { ContractName, Documentation } from "./types" + +const devMode = { port: 8080 } + +export const getNewContractNames = (compilationResult: CompilationResult) => { + const compiledContracts = compilationResult.contracts + let result: string[] = [] + + for (const file of Object.keys(compiledContracts)) { + const newContractNames = Object.keys(compiledContracts[file]) + result = [...result, ...newContractNames] + } + + return result +} + +const sampleMap = new Map() + +const App = () => { + const [clientInstance, setClientInstance] = useState(undefined as any) + const [contracts, setContracts] = useState(sampleMap) + const [sites, setSites] = useLocalStorage('sites', []) + const clientInstanceRef = useRef(clientInstance) + clientInstanceRef.current = clientInstance + const contractsRef = useRef(contracts) + contractsRef.current = contracts + + useEffect(() => { + console.log("Remix EthDoc loading...") + const client = createIframeClient({ devMode }) + const loadClient = async () => { + await client.onload() + setClientInstance(client) + console.log("Remix EthDoc Plugin has been loaded") + + client.solidity.on("compilationFinished", (fileName: string, source: CompilationFileSources, languageVersion: string, data: CompilationResult) => { + console.log("New compilation received") + + const existingMap = contractsRef.current; + const newContractsMapWithDocumentation = createDocumentation(fileName, data) + const newMap = new Map([...existingMap, ...newContractsMapWithDocumentation]) + + console.log("New Map", newMap) + + const status: Status = { key: 'succeed', type: 'success', title: 'New documentation ready' } + clientInstanceRef.current.emit('statusChanged', status) + setContracts(newMap) + }) + } + + loadClient() + }, []) + + + return ( + + + + ) +} + +export default App diff --git a/src/AppContext.tsx b/src/AppContext.tsx new file mode 100644 index 0000000000..68e626433a --- /dev/null +++ b/src/AppContext.tsx @@ -0,0 +1,17 @@ +import React from "react" +import { PluginApi, IRemixApi, Api, PluginClient, CompilationResult } from "@remixproject/plugin" + +import { ContractName, Documentation, PublishedSite } from "./types" + +export const AppContext = React.createContext({ + clientInstance: {} as PluginApi> & + PluginClient>, + contracts: new Map(), + setContracts: (contracts: Map) => { + console.log("Calling Set Contract Names") + }, + sites: [], + setSites: (sites: PublishedSite[]) => { + console.log("Calling Set Sites") + } +}) diff --git a/src/hooks/useLocalStorage.tsx b/src/hooks/useLocalStorage.tsx new file mode 100644 index 0000000000..cca4a83a72 --- /dev/null +++ b/src/hooks/useLocalStorage.tsx @@ -0,0 +1,37 @@ +import { useState } from "react" + +export function useLocalStorage(key: string, initialValue: any) { + // State to store our value + // Pass initial state function to useState so logic is only executed once + const [storedValue, setStoredValue] = useState(() => { + try { + // Get from local storage by key + const item = window.localStorage.getItem(key) + // Parse stored json or if none return initialValue + return item ? JSON.parse(item) : initialValue + } catch (error) { + // If error also return initialValue + console.log(error) + return initialValue + } + }) + + // Return a wrapped version of useState's setter function that ... + // ... persists the new value to localStorage. + const setValue = (value: any) => { + try { + // Allow value to be a function so we have same API as useState + const valueToStore = + value instanceof Function ? value(storedValue) : value + // Save state + setStoredValue(valueToStore) + // Save to local storage + window.localStorage.setItem(key, JSON.stringify(valueToStore)) + } catch (error) { + // A more advanced implementation would handle the error case + console.log(error) + } + } + + return [storedValue, setValue] +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000000..fd29146ba3 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; +import { Routes } from './routes' + +ReactDOM.render( + + + , + document.getElementById('root') +); \ No newline at end of file diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts new file mode 100644 index 0000000000..6431bc5fc6 --- /dev/null +++ b/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/routes.tsx b/src/routes.tsx new file mode 100644 index 0000000000..fa47e5582e --- /dev/null +++ b/src/routes.tsx @@ -0,0 +1,36 @@ +import React from "react" +import { + BrowserRouter as Router, + Switch, + Route, + RouteProps, +} from "react-router-dom" + +import { ErrorView, HomeView } from "./views" + +interface Props extends RouteProps { + component: any // TODO: new (props: any) => React.Component + from: string +} + +const CustomRoute = ({ component: Component, ...rest }: Props) => { + return ( + ( + + )} + /> + ) +} + +export const Routes = () => ( + + + + + + + + +) diff --git a/src/setupTests.ts b/src/setupTests.ts new file mode 100644 index 0000000000..74b1a275a0 --- /dev/null +++ b/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom/extend-expect'; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000000..187fb6e7b3 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,11 @@ +export type Documentation = string + +export interface EthDocumentation { + [contractName: string]: Documentation +} + +export type ContractName = string + +export type FileName = string + +export type PublishedSite = string \ No newline at end of file diff --git a/src/utils/faker.ts b/src/utils/faker.ts new file mode 100644 index 0000000000..adf2876370 --- /dev/null +++ b/src/utils/faker.ts @@ -0,0 +1,30 @@ +import { CompiledContract, ABIParameter } from '@remixproject/plugin' + +import sampleData from './sample-data/sample-artifact.json' +import sampleDataWithComments from './sample-data/sample-artifact-with-comments.json' + +export const buildFakeArtifact: () => CompiledContract = () => { + const result = sampleData as never as CompiledContract + return result +} + +export const buildFakeArtifactWithComments: () => CompiledContract = () => { + const result = sampleDataWithComments as never as CompiledContract + return result +} + +export const buildFakeABIParameter: () => ABIParameter = () => { + return { + internalType: "address", + name: "allocator", + type: "address" + } +} + +export const buildFakeABIParameterWithDocumentation: () => ABIParameter = () => { + return { + internalType: "address", + name: "allocator", + type: "address" + } +} \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000000..de804ef3f9 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,2 @@ +export * from './utils' +export * from './publisher' \ No newline at end of file diff --git a/src/utils/publisher.test.ts b/src/utils/publisher.test.ts new file mode 100644 index 0000000000..4a5e9f1b7a --- /dev/null +++ b/src/utils/publisher.test.ts @@ -0,0 +1,40 @@ +import { publish } from './publisher'; + +const open = require('open') + +jest.setTimeout(10000) + +describe('Publisher tests', () => { + + test('it can publish', async () => { + const result = await publish("hello 123") + + expect(result).toBeDefined() + }) + + test('it can publish html', async () => { + const result = await publish(` + + + + + + + +
Content custom
+ + + `) + + // Uncomment for testing + + // const url = `https://ipfs.io/ipfs/${result}`; + + // await open(url, { app: ['google chrome', '--incognito'] }); + + expect(result).toBeDefined() + }) +}) diff --git a/src/utils/publisher.ts b/src/utils/publisher.ts new file mode 100644 index 0000000000..d15bacab64 --- /dev/null +++ b/src/utils/publisher.ts @@ -0,0 +1,13 @@ +import { HTMLContent } from "./types"; + +const IpfsClient = require('ipfs-mini') + +export const publish = async (content: HTMLContent) => { + const ipfs = new IpfsClient({ host: 'ipfs.infura.io', port: 5001, protocol: 'https' }); + + const documentHash = await ipfs.add(content) + + console.log("Document hash", documentHash) + + return documentHash +} diff --git a/src/utils/sample-data/file.json b/src/utils/sample-data/file.json new file mode 100644 index 0000000000..c784806fa5 --- /dev/null +++ b/src/utils/sample-data/file.json @@ -0,0 +1,4272 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "rings", + "type": "uint256" + } + ], + "name": "age", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "author": "Mary A. Botanist", + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "148:984:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;148:984:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x4F CALLDATACOPY 0xAB TIMESTAMP PUSH23 0xD1AE66DDC30E015934768668C163BCDA4B8E33F7BE1974 0xF7 0x21 0x2E SGT PUSH5 0x736F6C6343 STOP SDIV GT STOP ORIGIN ", + "sourceMap": "148:984:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;548:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;297:99;;;:::i;:::-;;914:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;914:100:0;;;:::i;:::-;;243:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;243:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;758:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;758:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;644:110;;;:::i;:::-;;1018:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1018:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1018:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;548:88;599:7;629:1;621:5;:9;614:16;;548:88;;;:::o;297:99::-;345:10;337:5;;:18;;;;;;;;;;;;;;;;;;382:9;361:11;:18;373:5;;;;;;;;;;;361:18;;;;;;;;;;;;;;;:30;;;;297:99::o;914:100::-;466:5;;;;;;;;;;;452:19;;:10;:19;;;430:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;967:10;:19;;:42;987:21;967:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;967:42:0;914:100::o;243:28::-;;;;;;;;;;;;;:::o;758:152::-;855:1;830:11;:22;842:9;830:22;;;;;;;;;;;;;;;;:26;822:35;;;;;;863:9;:18;;:42;882:11;:22;894:9;882:22;;;;;;;;;;;;;;;;863:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;863:42:0;758:152;:::o;644:110::-;711:38;739:9;711:11;:23;723:10;711:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;685:11;:23;697:10;685:23;;;;;;;;;;;;;;;:64;;;;644:110::o;1018:112::-;1084:4;1103:11;:22;1115:9;1103:22;;;;;;;;;;;;;;;;1096:29;;1018:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "323200", + "executionCost": "362", + "totalCost": "323562" + }, + "external": { + "Fal1out()": "41948", + "age(uint256)": "307", + "allocate()": "infinite", + "allocatorBalance(address)": "1262", + "collectAllocations()": "infinite", + "owner()": "1053", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "80" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "40" + }, + { + "begin": 148, + "end": 1132, + "name": "MSTORE" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "POP" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "CODECOPY" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a723158204f37ab4276d1ae66ddc30e015934768668c163bcda4b8e33f7be1974f7212e1364736f6c63430005110032", + ".code": [ + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "80" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "40" + }, + { + "begin": 148, + "end": 1132, + "name": "MSTORE" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "4" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLDATASIZE" + }, + { + "begin": 148, + "end": 1132, + "name": "LT" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "CALLDATALOAD" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 148, + "end": 1132, + "name": "SHR" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 148, + "end": 1132, + "name": "GT" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMP" + }, + { + "begin": 148, + "end": 1132, + "name": "tag", + "value": "9" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "6BA61782" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 148, + "end": 1132, + "name": "EQ" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPI" + }, + { + "begin": 148, + "end": 1132, + "name": "tag", + "value": "1" + }, + { + "begin": 148, + "end": 1132, + "name": "JUMPDEST" + }, + { + "begin": 148, + "end": 1132, + "name": "PUSH", + "value": "0" + }, + { + "begin": 148, + "end": 1132, + "name": "DUP1" + }, + { + "begin": 148, + "end": 1132, + "name": "REVERT" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "2" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "4" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "CALLDATASIZE" + }, + { + "begin": 548, + "end": 636, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "DUP2" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "CALLDATALOAD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "20" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP3" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 548, + "end": 636, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "11" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "40" + }, + { + "begin": 548, + "end": 636, + "name": "MLOAD" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "DUP3" + }, + { + "begin": 548, + "end": 636, + "name": "DUP2" + }, + { + "begin": 548, + "end": 636, + "name": "MSTORE" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "20" + }, + { + "begin": 548, + "end": 636, + "name": "ADD" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "PUSH", + "value": "40" + }, + { + "begin": 548, + "end": 636, + "name": "MLOAD" + }, + { + "begin": 548, + "end": 636, + "name": "DUP1" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SUB" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "RETURN" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "3" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 297, + "end": 396, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 297, + "end": 396, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 297, + "end": 396, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "14" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 297, + "end": 396, + "name": "STOP" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "4" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "POP" + }, + { + "begin": 914, + "end": 1014, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 914, + "end": 1014, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "17" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 914, + "end": 1014, + "name": "STOP" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "5" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 243, + "end": 271, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "40" + }, + { + "begin": 243, + "end": 271, + "name": "MLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "DUP1" + }, + { + "begin": 243, + "end": 271, + "name": "DUP3" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "DUP2" + }, + { + "begin": 243, + "end": 271, + "name": "MSTORE" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "20" + }, + { + "begin": 243, + "end": 271, + "name": "ADD" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP2" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "POP" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "40" + }, + { + "begin": 243, + "end": 271, + "name": "MLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "DUP1" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP2" + }, + { + "begin": 243, + "end": 271, + "name": "SUB" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "RETURN" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "6" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "4" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "CALLDATASIZE" + }, + { + "begin": 758, + "end": 910, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "DUP2" + }, + { + "begin": 758, + "end": 910, + "name": "ADD" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "DUP1" + }, + { + "begin": 758, + "end": 910, + "name": "CALLDATALOAD" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 758, + "end": 910, + "name": "AND" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH", + "value": "20" + }, + { + "begin": 758, + "end": 910, + "name": "ADD" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP3" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP2" + }, + { + "begin": 758, + "end": 910, + "name": "SWAP1" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 758, + "end": 910, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "23" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 758, + "end": 910, + "name": "STOP" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "7" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 644, + "end": 754, + "name": "PUSH [tag]", + "value": "26" + }, + { + "begin": 644, + "end": 754, + "name": "PUSH [tag]", + "value": "27" + }, + { + "begin": 644, + "end": 754, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "26" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 644, + "end": 754, + "name": "STOP" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "8" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH [tag]", + "value": "29" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLDATASIZE" + }, + { + "begin": 1018, + "end": 1130, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "CALLDATALOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1018, + "end": 1130, + "name": "AND" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP3" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH [tag]", + "value": "31" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "29" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1018, + "end": 1130, + "name": "MLOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP3" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "MSTORE" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1018, + "end": 1130, + "name": "ADD" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1018, + "end": 1130, + "name": "MLOAD" + }, + { + "begin": 1018, + "end": 1130, + "name": "DUP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SUB" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "RETURN" + }, + { + "begin": 548, + "end": 636, + "name": "tag", + "value": "13" + }, + { + "begin": 548, + "end": 636, + "name": "JUMPDEST" + }, + { + "begin": 599, + "end": 606, + "name": "PUSH", + "value": "0" + }, + { + "begin": 629, + "end": 630, + "name": "PUSH", + "value": "1" + }, + { + "begin": 621, + "end": 626, + "name": "DUP3" + }, + { + "begin": 621, + "end": 630, + "name": "ADD" + }, + { + "begin": 614, + "end": 630, + "name": "SWAP1" + }, + { + "begin": 614, + "end": 630, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP2" + }, + { + "begin": 548, + "end": 636, + "name": "SWAP1" + }, + { + "begin": 548, + "end": 636, + "name": "POP" + }, + { + "begin": 548, + "end": 636, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 297, + "end": 396, + "name": "tag", + "value": "15" + }, + { + "begin": 297, + "end": 396, + "name": "JUMPDEST" + }, + { + "begin": 345, + "end": 355, + "name": "CALLER" + }, + { + "begin": 337, + "end": 342, + "name": "PUSH", + "value": "1" + }, + { + "begin": 337, + "end": 342, + "name": "PUSH", + "value": "0" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "100" + }, + { + "begin": 337, + "end": 355, + "name": "EXP" + }, + { + "begin": 337, + "end": 355, + "name": "DUP2" + }, + { + "begin": 337, + "end": 355, + "name": "SLOAD" + }, + { + "begin": 337, + "end": 355, + "name": "DUP2" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 337, + "end": 355, + "name": "MUL" + }, + { + "begin": 337, + "end": 355, + "name": "NOT" + }, + { + "begin": 337, + "end": 355, + "name": "AND" + }, + { + "begin": 337, + "end": 355, + "name": "SWAP1" + }, + { + "begin": 337, + "end": 355, + "name": "DUP4" + }, + { + "begin": 337, + "end": 355, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 337, + "end": 355, + "name": "AND" + }, + { + "begin": 337, + "end": 355, + "name": "MUL" + }, + { + "begin": 337, + "end": 355, + "name": "OR" + }, + { + "begin": 337, + "end": 355, + "name": "SWAP1" + }, + { + "begin": 337, + "end": 355, + "name": "SSTORE" + }, + { + "begin": 337, + "end": 355, + "name": "POP" + }, + { + "begin": 382, + "end": 391, + "name": "CALLVALUE" + }, + { + "begin": 361, + "end": 372, + "name": "PUSH", + "value": "0" + }, + { + "begin": 361, + "end": 379, + "name": "DUP1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "0" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "SLOAD" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "100" + }, + { + "begin": 373, + "end": 378, + "name": "EXP" + }, + { + "begin": 373, + "end": 378, + "name": "SWAP1" + }, + { + "begin": 373, + "end": 378, + "name": "DIV" + }, + { + "begin": 373, + "end": 378, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 373, + "end": 378, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 361, + "end": 379, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 361, + "end": 379, + "name": "AND" + }, + { + "begin": 361, + "end": 379, + "name": "DUP2" + }, + { + "begin": 361, + "end": 379, + "name": "MSTORE" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "20" + }, + { + "begin": 361, + "end": 379, + "name": "ADD" + }, + { + "begin": 361, + "end": 379, + "name": "SWAP1" + }, + { + "begin": 361, + "end": 379, + "name": "DUP2" + }, + { + "begin": 361, + "end": 379, + "name": "MSTORE" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "20" + }, + { + "begin": 361, + "end": 379, + "name": "ADD" + }, + { + "begin": 361, + "end": 379, + "name": "PUSH", + "value": "0" + }, + { + "begin": 361, + "end": 379, + "name": "KECCAK256" + }, + { + "begin": 361, + "end": 391, + "name": "DUP2" + }, + { + "begin": 361, + "end": 391, + "name": "SWAP1" + }, + { + "begin": 361, + "end": 391, + "name": "SSTORE" + }, + { + "begin": 361, + "end": 391, + "name": "POP" + }, + { + "begin": 297, + "end": 396, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 914, + "end": 1014, + "name": "tag", + "value": "18" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMPDEST" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "1" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "0" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "SLOAD" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "100" + }, + { + "begin": 466, + "end": 471, + "name": "EXP" + }, + { + "begin": 466, + "end": 471, + "name": "SWAP1" + }, + { + "begin": 466, + "end": 471, + "name": "DIV" + }, + { + "begin": 466, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 466, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 452, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 462, + "name": "CALLER" + }, + { + "begin": 452, + "end": 471, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 452, + "end": 471, + "name": "AND" + }, + { + "begin": 452, + "end": 471, + "name": "EQ" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 430, + "end": 522, + "name": "JUMPI" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "40" + }, + { + "begin": 430, + "end": 522, + "name": "MLOAD" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "4" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP3" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "SUB" + }, + { + "begin": 430, + "end": 522, + "name": "DUP3" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "17" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 430, + "end": 522, + "name": "DUP2" + }, + { + "begin": 430, + "end": 522, + "name": "MSTORE" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "20" + }, + { + "begin": 430, + "end": 522, + "name": "ADD" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP2" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "POP" + }, + { + "begin": 430, + "end": 522, + "name": "PUSH", + "value": "40" + }, + { + "begin": 430, + "end": 522, + "name": "MLOAD" + }, + { + "begin": 430, + "end": 522, + "name": "DUP1" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP2" + }, + { + "begin": 430, + "end": 522, + "name": "SUB" + }, + { + "begin": 430, + "end": 522, + "name": "SWAP1" + }, + { + "begin": 430, + "end": 522, + "name": "REVERT" + }, + { + "begin": 430, + "end": 522, + "name": "tag", + "value": "35" + }, + { + "begin": 430, + "end": 522, + "name": "JUMPDEST" + }, + { + "begin": 967, + "end": 977, + "name": "CALLER" + }, + { + "begin": 967, + "end": 986, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 967, + "end": 986, + "name": "AND" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 987, + "end": 1008, + "name": "SELFBALANCE" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP1" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP2" + }, + { + "begin": 967, + "end": 1009, + "name": "ISZERO" + }, + { + "begin": 967, + "end": 1009, + "name": "MUL" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP1" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "40" + }, + { + "begin": 967, + "end": 1009, + "name": "MLOAD" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "0" + }, + { + "begin": 967, + "end": 1009, + "name": "PUSH", + "value": "40" + }, + { + "begin": 967, + "end": 1009, + "name": "MLOAD" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP1" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP4" + }, + { + "begin": 967, + "end": 1009, + "name": "SUB" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP2" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP6" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP9" + }, + { + "begin": 967, + "end": 1009, + "name": "DUP9" + }, + { + "begin": 967, + "end": 1009, + "name": "CALL" + }, + { + "begin": 967, + "end": 1009, + "name": "SWAP4" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 967, + "end": 1009, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 967, + "end": 1009, + "name": "POP" + }, + { + "begin": 914, + "end": 1014, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 243, + "end": 271, + "name": "tag", + "value": "21" + }, + { + "begin": 243, + "end": 271, + "name": "JUMPDEST" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "1" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "0" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "SLOAD" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "100" + }, + { + "begin": 243, + "end": 271, + "name": "EXP" + }, + { + "begin": 243, + "end": 271, + "name": "SWAP1" + }, + { + "begin": 243, + "end": 271, + "name": "DIV" + }, + { + "begin": 243, + "end": 271, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 243, + "end": 271, + "name": "AND" + }, + { + "begin": 243, + "end": 271, + "name": "DUP2" + }, + { + "begin": 243, + "end": 271, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 758, + "end": 910, + "name": "tag", + "value": "25" + }, + { + "begin": 758, + "end": 910, + "name": "JUMPDEST" + }, + { + "begin": 855, + "end": 856, + "name": "PUSH", + "value": "0" + }, + { + "begin": 830, + "end": 841, + "name": "DUP1" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "0" + }, + { + "begin": 842, + "end": 851, + "name": "DUP4" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 830, + "end": 852, + "name": "AND" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 830, + "end": 852, + "name": "AND" + }, + { + "begin": 830, + "end": 852, + "name": "DUP2" + }, + { + "begin": 830, + "end": 852, + "name": "MSTORE" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "20" + }, + { + "begin": 830, + "end": 852, + "name": "ADD" + }, + { + "begin": 830, + "end": 852, + "name": "SWAP1" + }, + { + "begin": 830, + "end": 852, + "name": "DUP2" + }, + { + "begin": 830, + "end": 852, + "name": "MSTORE" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "20" + }, + { + "begin": 830, + "end": 852, + "name": "ADD" + }, + { + "begin": 830, + "end": 852, + "name": "PUSH", + "value": "0" + }, + { + "begin": 830, + "end": 852, + "name": "KECCAK256" + }, + { + "begin": 830, + "end": 852, + "name": "SLOAD" + }, + { + "begin": 830, + "end": 856, + "name": "GT" + }, + { + "begin": 822, + "end": 857, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 822, + "end": 857, + "name": "JUMPI" + }, + { + "begin": 822, + "end": 857, + "name": "PUSH", + "value": "0" + }, + { + "begin": 822, + "end": 857, + "name": "DUP1" + }, + { + "begin": 822, + "end": 857, + "name": "REVERT" + }, + { + "begin": 822, + "end": 857, + "name": "tag", + "value": "39" + }, + { + "begin": 822, + "end": 857, + "name": "JUMPDEST" + }, + { + "begin": 863, + "end": 872, + "name": "DUP1" + }, + { + "begin": 863, + "end": 881, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 863, + "end": 881, + "name": "AND" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 882, + "end": 893, + "name": "PUSH", + "value": "0" + }, + { + "begin": 882, + "end": 904, + "name": "DUP1" + }, + { + "begin": 894, + "end": 903, + "name": "DUP5" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 882, + "end": 904, + "name": "AND" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 882, + "end": 904, + "name": "AND" + }, + { + "begin": 882, + "end": 904, + "name": "DUP2" + }, + { + "begin": 882, + "end": 904, + "name": "MSTORE" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "20" + }, + { + "begin": 882, + "end": 904, + "name": "ADD" + }, + { + "begin": 882, + "end": 904, + "name": "SWAP1" + }, + { + "begin": 882, + "end": 904, + "name": "DUP2" + }, + { + "begin": 882, + "end": 904, + "name": "MSTORE" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "20" + }, + { + "begin": 882, + "end": 904, + "name": "ADD" + }, + { + "begin": 882, + "end": 904, + "name": "PUSH", + "value": "0" + }, + { + "begin": 882, + "end": 904, + "name": "KECCAK256" + }, + { + "begin": 882, + "end": 904, + "name": "SLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP1" + }, + { + "begin": 863, + "end": 905, + "name": "DUP2" + }, + { + "begin": 863, + "end": 905, + "name": "ISZERO" + }, + { + "begin": 863, + "end": 905, + "name": "MUL" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP1" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "40" + }, + { + "begin": 863, + "end": 905, + "name": "MLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "0" + }, + { + "begin": 863, + "end": 905, + "name": "PUSH", + "value": "40" + }, + { + "begin": 863, + "end": 905, + "name": "MLOAD" + }, + { + "begin": 863, + "end": 905, + "name": "DUP1" + }, + { + "begin": 863, + "end": 905, + "name": "DUP4" + }, + { + "begin": 863, + "end": 905, + "name": "SUB" + }, + { + "begin": 863, + "end": 905, + "name": "DUP2" + }, + { + "begin": 863, + "end": 905, + "name": "DUP6" + }, + { + "begin": 863, + "end": 905, + "name": "DUP9" + }, + { + "begin": 863, + "end": 905, + "name": "DUP9" + }, + { + "begin": 863, + "end": 905, + "name": "CALL" + }, + { + "begin": 863, + "end": 905, + "name": "SWAP4" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 863, + "end": 905, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 863, + "end": 905, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "POP" + }, + { + "begin": 758, + "end": 910, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 644, + "end": 754, + "name": "tag", + "value": "27" + }, + { + "begin": 644, + "end": 754, + "name": "JUMPDEST" + }, + { + "begin": 711, + "end": 749, + "name": "PUSH [tag]", + "value": "42" + }, + { + "begin": 739, + "end": 748, + "name": "CALLVALUE" + }, + { + "begin": 711, + "end": 722, + "name": "PUSH", + "value": "0" + }, + { + "begin": 711, + "end": 734, + "name": "DUP1" + }, + { + "begin": 723, + "end": 733, + "name": "CALLER" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 711, + "end": 734, + "name": "AND" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 711, + "end": 734, + "name": "AND" + }, + { + "begin": 711, + "end": 734, + "name": "DUP2" + }, + { + "begin": 711, + "end": 734, + "name": "MSTORE" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "20" + }, + { + "begin": 711, + "end": 734, + "name": "ADD" + }, + { + "begin": 711, + "end": 734, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 734, + "name": "DUP2" + }, + { + "begin": 711, + "end": 734, + "name": "MSTORE" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "20" + }, + { + "begin": 711, + "end": 734, + "name": "ADD" + }, + { + "begin": 711, + "end": 734, + "name": "PUSH", + "value": "0" + }, + { + "begin": 711, + "end": 734, + "name": "KECCAK256" + }, + { + "begin": 711, + "end": 734, + "name": "SLOAD" + }, + { + "begin": 711, + "end": 738, + "name": "PUSH [tag]", + "value": "43" + }, + { + "begin": 711, + "end": 738, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 749, + "name": "SWAP2" + }, + { + "begin": 711, + "end": 749, + "name": "SWAP1" + }, + { + "begin": 711, + "end": 749, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 711, + "end": 749, + "name": "AND" + }, + { + "begin": 711, + "end": 749, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 711, + "end": 749, + "name": "tag", + "value": "42" + }, + { + "begin": 711, + "end": 749, + "name": "JUMPDEST" + }, + { + "begin": 685, + "end": 696, + "name": "PUSH", + "value": "0" + }, + { + "begin": 685, + "end": 708, + "name": "DUP1" + }, + { + "begin": 697, + "end": 707, + "name": "CALLER" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 685, + "end": 708, + "name": "AND" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 685, + "end": 708, + "name": "AND" + }, + { + "begin": 685, + "end": 708, + "name": "DUP2" + }, + { + "begin": 685, + "end": 708, + "name": "MSTORE" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "20" + }, + { + "begin": 685, + "end": 708, + "name": "ADD" + }, + { + "begin": 685, + "end": 708, + "name": "SWAP1" + }, + { + "begin": 685, + "end": 708, + "name": "DUP2" + }, + { + "begin": 685, + "end": 708, + "name": "MSTORE" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "20" + }, + { + "begin": 685, + "end": 708, + "name": "ADD" + }, + { + "begin": 685, + "end": 708, + "name": "PUSH", + "value": "0" + }, + { + "begin": 685, + "end": 708, + "name": "KECCAK256" + }, + { + "begin": 685, + "end": 749, + "name": "DUP2" + }, + { + "begin": 685, + "end": 749, + "name": "SWAP1" + }, + { + "begin": 685, + "end": 749, + "name": "SSTORE" + }, + { + "begin": 685, + "end": 749, + "name": "POP" + }, + { + "begin": 644, + "end": 754, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1018, + "end": 1130, + "name": "tag", + "value": "31" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMPDEST" + }, + { + "begin": 1084, + "end": 1088, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1114, + "name": "DUP1" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1115, + "end": 1124, + "name": "DUP4" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1125, + "name": "AND" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1125, + "name": "AND" + }, + { + "begin": 1103, + "end": 1125, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1125, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1125, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1125, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1125, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1125, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1125, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1125, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1125, + "name": "KECCAK256" + }, + { + "begin": 1103, + "end": 1125, + "name": "SLOAD" + }, + { + "begin": 1096, + "end": 1125, + "name": "SWAP1" + }, + { + "begin": 1096, + "end": 1125, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP2" + }, + { + "begin": 1018, + "end": 1130, + "name": "SWAP1" + }, + { + "begin": 1018, + "end": 1130, + "name": "POP" + }, + { + "begin": 1018, + "end": 1130, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "43" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "age(uint256)": "6ba61782", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mary A. Botanist\",\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xd545eab656870e8b80bd39971a7b5dd4d98e25821048764ec003c3f4be3432bf\",\"urls\":[\"bzz-raw://377d23420fe8bc074562c57540384149da4e5d79c44e6bc5ab71ed4a2d84139f\",\"dweb:/ipfs/QmVuMX6Dwf7zbBvR2LdY4HmupxDD5fq6dxUUsxZ1KqgPD2\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": {}, + "notice": "Calculate tree age in years, rounded up, for live trees" + } +} \ No newline at end of file diff --git a/src/utils/sample-data/sample-artifact-with-comments.json b/src/utils/sample-data/sample-artifact-with-comments.json new file mode 100644 index 0000000000..bea57d7386 --- /dev/null +++ b/src/utils/sample-data/sample-artifact-with-comments.json @@ -0,0 +1,4287 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "rings", + "type": "uint256" + } + ], + "name": "age", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "author": "Larry A. Gardner", + "details": "All function calls are currently implemented without side effects", + "methods": { + "age(uint256)": { + "author": "Mary A. Botanist", + "details": "The Alexandr N. Tetearing algorithm could increase precision", + "params": { + "rings": "The number of rings from dendrochronological sample" + }, + "return": "age in years, rounded up for partial years" + } + }, + "title": "A simulator for trees" + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50610650806100206000396000f3fe6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x650 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", + "sourceMap": "261:1289:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;261:1289:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100705760003560e01c80638da5cb5b1161004e5780638da5cb5b146100e5578063a2dea26f1461013c578063abaa99161461018d578063ffd40b561461019757610070565b80636ba61782146100755780636fab5ddf146100c45780638aa96f38146100ce575b600080fd5b34801561008157600080fd5b506100ae6004803603602081101561009857600080fd5b81019080803590602001909291905050506101fc565b6040518082815260200191505060405180910390f35b6100cc610209565b005b3480156100da57600080fd5b506100e36102b1565b005b3480156100f157600080fd5b506100fa6103bd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014857600080fd5b5061018b6004803603602081101561015f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506103e3565b005b6101956104b6565b005b3480156101a357600080fd5b506101e6600480360360208110156101ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061054b565b6040518082815260200191505060405180910390f35b6000600182019050919050565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156103ba573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161042e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f193505050501580156104b2573d6000803e3d6000fd5b5050565b610507346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461059390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015610611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x197 JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x6BA61782 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0xC4 JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x2B1 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFA PUSH2 0x3BD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x195 PUSH2 0x4B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x54B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x374 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x3BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x42E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x507 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x593 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x611 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0xB1 0xFB 0xAD 0xD7 0xF 0xC4 0x4C 0xBA PUSH28 0xC7CCCC76B76128E6192047CDB163ED15A2A7ACC1180C3964736F6C63 NUMBER STOP SDIV GT STOP ORIGIN ", + "sourceMap": "261:1289:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;966:88:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;966:88:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;410:99;;;:::i;:::-;;1332:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1332:100:0;;;:::i;:::-;;356:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;356:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1176:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1176:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1176:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1062:110;;;:::i;:::-;;1436:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1436:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1436:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;966:88;1017:7;1047:1;1039:5;:9;1032:16;;966:88;;;:::o;410:99::-;458:10;450:5;;:18;;;;;;;;;;;;;;;;;;495:9;474:11;:18;486:5;;;;;;;;;;;474:18;;;;;;;;;;;;;;;:30;;;;410:99::o;1332:100::-;579:5;;;;;;;;;;;565:19;;:10;:19;;;543:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:10;:19;;:42;1405:21;1385:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1385:42:0;1332:100::o;356:28::-;;;;;;;;;;;;;:::o;1176:152::-;1273:1;1248:11;:22;1260:9;1248:22;;;;;;;;;;;;;;;;:26;1240:35;;;;;;1281:9;:18;;:42;1300:11;:22;1312:9;1300:22;;;;;;;;;;;;;;;;1281:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1281:42:0;1176:152;:::o;1062:110::-;1129:38;1157:9;1129:11;:23;1141:10;1129:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;1103:11;:23;1115:10;1103:23;;;;;;;;;;;;;;;:64;;;;1062:110::o;1436:112::-;1502:4;1521:11;:22;1533:9;1521:22;;;;;;;;;;;;;;;;1514:29;;1436:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "323200", + "executionCost": "362", + "totalCost": "323562" + }, + "external": { + "Fal1out()": "41948", + "age(uint256)": "307", + "allocate()": "infinite", + "allocatorBalance(address)": "1262", + "collectAllocations()": "infinite", + "owner()": "1053", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "80" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "40" + }, + { + "begin": 261, + "end": 1550, + "name": "MSTORE" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "POP" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "CODECOPY" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a72315820b1fbadd70fc44cba7bc7cccc76b76128e6192047cdb163ed15a2a7acc1180c3964736f6c63430005110032", + ".code": [ + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "80" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "40" + }, + { + "begin": 261, + "end": 1550, + "name": "MSTORE" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "4" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLDATASIZE" + }, + { + "begin": 261, + "end": 1550, + "name": "LT" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "CALLDATALOAD" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 261, + "end": 1550, + "name": "SHR" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 261, + "end": 1550, + "name": "GT" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMP" + }, + { + "begin": 261, + "end": 1550, + "name": "tag", + "value": "9" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "6BA61782" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 261, + "end": 1550, + "name": "EQ" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPI" + }, + { + "begin": 261, + "end": 1550, + "name": "tag", + "value": "1" + }, + { + "begin": 261, + "end": 1550, + "name": "JUMPDEST" + }, + { + "begin": 261, + "end": 1550, + "name": "PUSH", + "value": "0" + }, + { + "begin": 261, + "end": 1550, + "name": "DUP1" + }, + { + "begin": 261, + "end": 1550, + "name": "REVERT" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "2" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "4" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLDATASIZE" + }, + { + "begin": 966, + "end": 1054, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "12" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP2" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "CALLDATALOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "20" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP3" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "11" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "40" + }, + { + "begin": 966, + "end": 1054, + "name": "MLOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP3" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP2" + }, + { + "begin": 966, + "end": 1054, + "name": "MSTORE" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "20" + }, + { + "begin": 966, + "end": 1054, + "name": "ADD" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "PUSH", + "value": "40" + }, + { + "begin": 966, + "end": 1054, + "name": "MLOAD" + }, + { + "begin": 966, + "end": 1054, + "name": "DUP1" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SUB" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "RETURN" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "3" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 410, + "end": 509, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 410, + "end": 509, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 410, + "end": 509, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "14" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 410, + "end": 509, + "name": "STOP" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "4" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "POP" + }, + { + "begin": 1332, + "end": 1432, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 1332, + "end": 1432, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "17" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 1332, + "end": 1432, + "name": "STOP" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "5" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "19" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 356, + "end": 384, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "40" + }, + { + "begin": 356, + "end": 384, + "name": "MLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "DUP1" + }, + { + "begin": 356, + "end": 384, + "name": "DUP3" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "DUP2" + }, + { + "begin": 356, + "end": 384, + "name": "MSTORE" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "20" + }, + { + "begin": 356, + "end": 384, + "name": "ADD" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP2" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "POP" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "40" + }, + { + "begin": 356, + "end": 384, + "name": "MLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "DUP1" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP2" + }, + { + "begin": 356, + "end": 384, + "name": "SUB" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "RETURN" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "6" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLDATASIZE" + }, + { + "begin": 1176, + "end": 1328, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP2" + }, + { + "begin": 1176, + "end": 1328, + "name": "ADD" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "DUP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "CALLDATALOAD" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1176, + "end": 1328, + "name": "AND" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1176, + "end": 1328, + "name": "ADD" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP3" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP2" + }, + { + "begin": 1176, + "end": 1328, + "name": "SWAP1" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "23" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1176, + "end": 1328, + "name": "STOP" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "7" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1062, + "end": 1172, + "name": "PUSH [tag]", + "value": "26" + }, + { + "begin": 1062, + "end": 1172, + "name": "PUSH [tag]", + "value": "27" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "26" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1062, + "end": 1172, + "name": "STOP" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "8" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "28" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH [tag]", + "value": "29" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "4" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLDATASIZE" + }, + { + "begin": 1436, + "end": 1548, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "30" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "CALLDATALOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1436, + "end": 1548, + "name": "AND" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP3" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH [tag]", + "value": "31" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "29" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1436, + "end": 1548, + "name": "MLOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP3" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "MSTORE" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1436, + "end": 1548, + "name": "ADD" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1436, + "end": 1548, + "name": "MLOAD" + }, + { + "begin": 1436, + "end": 1548, + "name": "DUP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SUB" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "RETURN" + }, + { + "begin": 966, + "end": 1054, + "name": "tag", + "value": "13" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMPDEST" + }, + { + "begin": 1017, + "end": 1024, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1047, + "end": 1048, + "name": "PUSH", + "value": "1" + }, + { + "begin": 1039, + "end": 1044, + "name": "DUP3" + }, + { + "begin": 1039, + "end": 1048, + "name": "ADD" + }, + { + "begin": 1032, + "end": 1048, + "name": "SWAP1" + }, + { + "begin": 1032, + "end": 1048, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP2" + }, + { + "begin": 966, + "end": 1054, + "name": "SWAP1" + }, + { + "begin": 966, + "end": 1054, + "name": "POP" + }, + { + "begin": 966, + "end": 1054, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 410, + "end": 509, + "name": "tag", + "value": "15" + }, + { + "begin": 410, + "end": 509, + "name": "JUMPDEST" + }, + { + "begin": 458, + "end": 468, + "name": "CALLER" + }, + { + "begin": 450, + "end": 455, + "name": "PUSH", + "value": "1" + }, + { + "begin": 450, + "end": 455, + "name": "PUSH", + "value": "0" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "100" + }, + { + "begin": 450, + "end": 468, + "name": "EXP" + }, + { + "begin": 450, + "end": 468, + "name": "DUP2" + }, + { + "begin": 450, + "end": 468, + "name": "SLOAD" + }, + { + "begin": 450, + "end": 468, + "name": "DUP2" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 450, + "end": 468, + "name": "MUL" + }, + { + "begin": 450, + "end": 468, + "name": "NOT" + }, + { + "begin": 450, + "end": 468, + "name": "AND" + }, + { + "begin": 450, + "end": 468, + "name": "SWAP1" + }, + { + "begin": 450, + "end": 468, + "name": "DUP4" + }, + { + "begin": 450, + "end": 468, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 450, + "end": 468, + "name": "AND" + }, + { + "begin": 450, + "end": 468, + "name": "MUL" + }, + { + "begin": 450, + "end": 468, + "name": "OR" + }, + { + "begin": 450, + "end": 468, + "name": "SWAP1" + }, + { + "begin": 450, + "end": 468, + "name": "SSTORE" + }, + { + "begin": 450, + "end": 468, + "name": "POP" + }, + { + "begin": 495, + "end": 504, + "name": "CALLVALUE" + }, + { + "begin": 474, + "end": 485, + "name": "PUSH", + "value": "0" + }, + { + "begin": 474, + "end": 492, + "name": "DUP1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "0" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "SLOAD" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "100" + }, + { + "begin": 486, + "end": 491, + "name": "EXP" + }, + { + "begin": 486, + "end": 491, + "name": "SWAP1" + }, + { + "begin": 486, + "end": 491, + "name": "DIV" + }, + { + "begin": 486, + "end": 491, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 486, + "end": 491, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 474, + "end": 492, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 474, + "end": 492, + "name": "AND" + }, + { + "begin": 474, + "end": 492, + "name": "DUP2" + }, + { + "begin": 474, + "end": 492, + "name": "MSTORE" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "20" + }, + { + "begin": 474, + "end": 492, + "name": "ADD" + }, + { + "begin": 474, + "end": 492, + "name": "SWAP1" + }, + { + "begin": 474, + "end": 492, + "name": "DUP2" + }, + { + "begin": 474, + "end": 492, + "name": "MSTORE" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "20" + }, + { + "begin": 474, + "end": 492, + "name": "ADD" + }, + { + "begin": 474, + "end": 492, + "name": "PUSH", + "value": "0" + }, + { + "begin": 474, + "end": 492, + "name": "KECCAK256" + }, + { + "begin": 474, + "end": 504, + "name": "DUP2" + }, + { + "begin": 474, + "end": 504, + "name": "SWAP1" + }, + { + "begin": 474, + "end": 504, + "name": "SSTORE" + }, + { + "begin": 474, + "end": 504, + "name": "POP" + }, + { + "begin": 410, + "end": 509, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1332, + "end": 1432, + "name": "tag", + "value": "18" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMPDEST" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "1" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "0" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "SLOAD" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "100" + }, + { + "begin": 579, + "end": 584, + "name": "EXP" + }, + { + "begin": 579, + "end": 584, + "name": "SWAP1" + }, + { + "begin": 579, + "end": 584, + "name": "DIV" + }, + { + "begin": 579, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 579, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 565, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 575, + "name": "CALLER" + }, + { + "begin": 565, + "end": 584, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 565, + "end": 584, + "name": "AND" + }, + { + "begin": 565, + "end": 584, + "name": "EQ" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 543, + "end": 635, + "name": "JUMPI" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "40" + }, + { + "begin": 543, + "end": 635, + "name": "MLOAD" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "4" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP3" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "SUB" + }, + { + "begin": 543, + "end": 635, + "name": "DUP3" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "17" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 543, + "end": 635, + "name": "DUP2" + }, + { + "begin": 543, + "end": 635, + "name": "MSTORE" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "20" + }, + { + "begin": 543, + "end": 635, + "name": "ADD" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP2" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "POP" + }, + { + "begin": 543, + "end": 635, + "name": "PUSH", + "value": "40" + }, + { + "begin": 543, + "end": 635, + "name": "MLOAD" + }, + { + "begin": 543, + "end": 635, + "name": "DUP1" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP2" + }, + { + "begin": 543, + "end": 635, + "name": "SUB" + }, + { + "begin": 543, + "end": 635, + "name": "SWAP1" + }, + { + "begin": 543, + "end": 635, + "name": "REVERT" + }, + { + "begin": 543, + "end": 635, + "name": "tag", + "value": "35" + }, + { + "begin": 543, + "end": 635, + "name": "JUMPDEST" + }, + { + "begin": 1385, + "end": 1395, + "name": "CALLER" + }, + { + "begin": 1385, + "end": 1404, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1385, + "end": 1404, + "name": "AND" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 1405, + "end": 1426, + "name": "SELFBALANCE" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP2" + }, + { + "begin": 1385, + "end": 1427, + "name": "ISZERO" + }, + { + "begin": 1385, + "end": 1427, + "name": "MUL" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1385, + "end": 1427, + "name": "MLOAD" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1385, + "end": 1427, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1385, + "end": 1427, + "name": "MLOAD" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP1" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP4" + }, + { + "begin": 1385, + "end": 1427, + "name": "SUB" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP2" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP6" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP9" + }, + { + "begin": 1385, + "end": 1427, + "name": "DUP9" + }, + { + "begin": 1385, + "end": 1427, + "name": "CALL" + }, + { + "begin": 1385, + "end": 1427, + "name": "SWAP4" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1385, + "end": 1427, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "37" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1385, + "end": 1427, + "name": "POP" + }, + { + "begin": 1332, + "end": 1432, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 356, + "end": 384, + "name": "tag", + "value": "21" + }, + { + "begin": 356, + "end": 384, + "name": "JUMPDEST" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "1" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "0" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "SLOAD" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "100" + }, + { + "begin": 356, + "end": 384, + "name": "EXP" + }, + { + "begin": 356, + "end": 384, + "name": "SWAP1" + }, + { + "begin": 356, + "end": 384, + "name": "DIV" + }, + { + "begin": 356, + "end": 384, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 356, + "end": 384, + "name": "AND" + }, + { + "begin": 356, + "end": 384, + "name": "DUP2" + }, + { + "begin": 356, + "end": 384, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1176, + "end": 1328, + "name": "tag", + "value": "25" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMPDEST" + }, + { + "begin": 1273, + "end": 1274, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1248, + "end": 1259, + "name": "DUP1" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1260, + "end": 1269, + "name": "DUP4" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1248, + "end": 1270, + "name": "AND" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1248, + "end": 1270, + "name": "AND" + }, + { + "begin": 1248, + "end": 1270, + "name": "DUP2" + }, + { + "begin": 1248, + "end": 1270, + "name": "MSTORE" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1248, + "end": 1270, + "name": "ADD" + }, + { + "begin": 1248, + "end": 1270, + "name": "SWAP1" + }, + { + "begin": 1248, + "end": 1270, + "name": "DUP2" + }, + { + "begin": 1248, + "end": 1270, + "name": "MSTORE" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1248, + "end": 1270, + "name": "ADD" + }, + { + "begin": 1248, + "end": 1270, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1248, + "end": 1270, + "name": "KECCAK256" + }, + { + "begin": 1248, + "end": 1270, + "name": "SLOAD" + }, + { + "begin": 1248, + "end": 1274, + "name": "GT" + }, + { + "begin": 1240, + "end": 1275, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 1240, + "end": 1275, + "name": "JUMPI" + }, + { + "begin": 1240, + "end": 1275, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1240, + "end": 1275, + "name": "DUP1" + }, + { + "begin": 1240, + "end": 1275, + "name": "REVERT" + }, + { + "begin": 1240, + "end": 1275, + "name": "tag", + "value": "39" + }, + { + "begin": 1240, + "end": 1275, + "name": "JUMPDEST" + }, + { + "begin": 1281, + "end": 1290, + "name": "DUP1" + }, + { + "begin": 1281, + "end": 1299, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1281, + "end": 1299, + "name": "AND" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 1300, + "end": 1311, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP1" + }, + { + "begin": 1312, + "end": 1321, + "name": "DUP5" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1300, + "end": 1322, + "name": "AND" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1300, + "end": 1322, + "name": "AND" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP2" + }, + { + "begin": 1300, + "end": 1322, + "name": "MSTORE" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1300, + "end": 1322, + "name": "ADD" + }, + { + "begin": 1300, + "end": 1322, + "name": "SWAP1" + }, + { + "begin": 1300, + "end": 1322, + "name": "DUP2" + }, + { + "begin": 1300, + "end": 1322, + "name": "MSTORE" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1300, + "end": 1322, + "name": "ADD" + }, + { + "begin": 1300, + "end": 1322, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1300, + "end": 1322, + "name": "KECCAK256" + }, + { + "begin": 1300, + "end": 1322, + "name": "SLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP2" + }, + { + "begin": 1281, + "end": 1323, + "name": "ISZERO" + }, + { + "begin": 1281, + "end": 1323, + "name": "MUL" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1281, + "end": 1323, + "name": "MLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1281, + "end": 1323, + "name": "PUSH", + "value": "40" + }, + { + "begin": 1281, + "end": 1323, + "name": "MLOAD" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP1" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP4" + }, + { + "begin": 1281, + "end": 1323, + "name": "SUB" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP2" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP6" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP9" + }, + { + "begin": 1281, + "end": 1323, + "name": "DUP9" + }, + { + "begin": 1281, + "end": 1323, + "name": "CALL" + }, + { + "begin": 1281, + "end": 1323, + "name": "SWAP4" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1281, + "end": 1323, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "40" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 1281, + "end": 1323, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "POP" + }, + { + "begin": 1176, + "end": 1328, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1062, + "end": 1172, + "name": "tag", + "value": "27" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMPDEST" + }, + { + "begin": 1129, + "end": 1167, + "name": "PUSH [tag]", + "value": "42" + }, + { + "begin": 1157, + "end": 1166, + "name": "CALLVALUE" + }, + { + "begin": 1129, + "end": 1140, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP1" + }, + { + "begin": 1141, + "end": 1151, + "name": "CALLER" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1129, + "end": 1152, + "name": "AND" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1129, + "end": 1152, + "name": "AND" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP2" + }, + { + "begin": 1129, + "end": 1152, + "name": "MSTORE" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1129, + "end": 1152, + "name": "ADD" + }, + { + "begin": 1129, + "end": 1152, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1152, + "name": "DUP2" + }, + { + "begin": 1129, + "end": 1152, + "name": "MSTORE" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1129, + "end": 1152, + "name": "ADD" + }, + { + "begin": 1129, + "end": 1152, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1129, + "end": 1152, + "name": "KECCAK256" + }, + { + "begin": 1129, + "end": 1152, + "name": "SLOAD" + }, + { + "begin": 1129, + "end": 1156, + "name": "PUSH [tag]", + "value": "43" + }, + { + "begin": 1129, + "end": 1156, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1167, + "name": "SWAP2" + }, + { + "begin": 1129, + "end": 1167, + "name": "SWAP1" + }, + { + "begin": 1129, + "end": 1167, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 1129, + "end": 1167, + "name": "AND" + }, + { + "begin": 1129, + "end": 1167, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 1129, + "end": 1167, + "name": "tag", + "value": "42" + }, + { + "begin": 1129, + "end": 1167, + "name": "JUMPDEST" + }, + { + "begin": 1103, + "end": 1114, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP1" + }, + { + "begin": 1115, + "end": 1125, + "name": "CALLER" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1126, + "name": "AND" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1103, + "end": 1126, + "name": "AND" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1126, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1126, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1126, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1126, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1126, + "name": "MSTORE" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1103, + "end": 1126, + "name": "ADD" + }, + { + "begin": 1103, + "end": 1126, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1103, + "end": 1126, + "name": "KECCAK256" + }, + { + "begin": 1103, + "end": 1167, + "name": "DUP2" + }, + { + "begin": 1103, + "end": 1167, + "name": "SWAP1" + }, + { + "begin": 1103, + "end": 1167, + "name": "SSTORE" + }, + { + "begin": 1103, + "end": 1167, + "name": "POP" + }, + { + "begin": 1062, + "end": 1172, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 1436, + "end": 1548, + "name": "tag", + "value": "31" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMPDEST" + }, + { + "begin": 1502, + "end": 1506, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1521, + "end": 1532, + "name": "DUP1" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1533, + "end": 1542, + "name": "DUP4" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1521, + "end": 1543, + "name": "AND" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 1521, + "end": 1543, + "name": "AND" + }, + { + "begin": 1521, + "end": 1543, + "name": "DUP2" + }, + { + "begin": 1521, + "end": 1543, + "name": "MSTORE" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1521, + "end": 1543, + "name": "ADD" + }, + { + "begin": 1521, + "end": 1543, + "name": "SWAP1" + }, + { + "begin": 1521, + "end": 1543, + "name": "DUP2" + }, + { + "begin": 1521, + "end": 1543, + "name": "MSTORE" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "20" + }, + { + "begin": 1521, + "end": 1543, + "name": "ADD" + }, + { + "begin": 1521, + "end": 1543, + "name": "PUSH", + "value": "0" + }, + { + "begin": 1521, + "end": 1543, + "name": "KECCAK256" + }, + { + "begin": 1521, + "end": 1543, + "name": "SLOAD" + }, + { + "begin": 1514, + "end": 1543, + "name": "SWAP1" + }, + { + "begin": 1514, + "end": 1543, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP2" + }, + { + "begin": 1436, + "end": 1548, + "name": "SWAP1" + }, + { + "begin": 1436, + "end": 1548, + "name": "POP" + }, + { + "begin": 1436, + "end": 1548, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "43" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "46" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "age(uint256)": "6ba61782", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rings\",\"type\":\"uint256\"}],\"name\":\"age\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Larry A. Gardner\",\"details\":\"All function calls are currently implemented without side effects\",\"methods\":{\"age(uint256)\":{\"author\":\"Mary A. Botanist\",\"details\":\"The Alexandr N. Tetearing algorithm could increase precision\",\"params\":{\"rings\":\"The number of rings from dendrochronological sample\"},\"return\":\"age in years, rounded up for partial years\"}},\"title\":\"A simulator for trees\"},\"userdoc\":{\"methods\":{\"age(uint256)\":{\"notice\":\"Calculate tree age in years, rounded up, for live trees\"}},\"notice\":\"You can use this contract for only the most basic simulation\"}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0xad082f74ba1b39235d2aae9ebe7367b10a7b164c4c5f9a6ebb139bce106b72cb\",\"urls\":[\"bzz-raw://d6d6235ca9a20e1cfc3da11e0bdfce0bdf5549e8fc52c64911857953fcd58bd8\",\"dweb:/ipfs/QmZJXfB8A9yQf6ixs7Amswj8SovAWXVJbMNM1qCw7uzMxN\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": { + "age(uint256)": { + "notice": "Calculate tree age in years, rounded up, for live trees" + } + }, + "notice": "You can use this contract for only the most basic simulation" + } +} \ No newline at end of file diff --git a/src/utils/sample-data/sample-artifact.json b/src/utils/sample-data/sample-artifact.json new file mode 100644 index 0000000000..d4696d1293 --- /dev/null +++ b/src/utils/sample-data/sample-artifact.json @@ -0,0 +1,3771 @@ +{ + "abi": [ + { + "constant": false, + "inputs": [], + "name": "Fal1out", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "allocate", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "allocator", + "type": "address" + } + ], + "name": "allocatorBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "collectAllocations", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "allocator", + "type": "address" + } + ], + "name": "sendAllocation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "methods": {} + }, + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506105f0806100206000396000f3fe6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F0 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", + "sourceMap": "51:886:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:886:0;;;;;;;" + }, + "deployedBytecode": { + "linkReferences": {}, + "object": "6080604052600436106100555760003560e01c80636fab5ddf1461005a5780638aa96f38146100645780638da5cb5b1461007b578063a2dea26f146100d2578063abaa991614610123578063ffd40b561461012d575b600080fd5b610062610192565b005b34801561007057600080fd5b5061007961023a565b005b34801561008757600080fd5b5061009061035d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100de57600080fd5b50610121600480360360208110156100f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610383565b005b61012b610456565b005b34801561013957600080fd5b5061017c6004803603602081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104eb565b6040518082815260200191505060405180910390f35b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f63616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561035a573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116103ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610452573d6000803e3d6000fd5b5050565b6104a7346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461053390919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000808284019050838110156105b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b809150509291505056fea265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FAB5DDF EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x8AA96F38 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0xA2DEA26F EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xABAA9916 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0xFFD40B56 EQ PUSH2 0x12D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x192 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x79 PUSH2 0x23A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x90 PUSH2 0x35D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x383 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x12B PUSH2 0x456 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x4EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLER PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x63616C6C6572206973206E6F7420746865206F776E6572000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x35A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x452 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x4A7 CALLVALUE PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x533 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 PUSH11 0x4EE66BDDA0FFE5072DEB89 0xed 0x27 0x49 CALLDATALOAD TIMESTAMP 0xd0 0x49 SGT 0xe8 POP 0xea EQ REVERT 0x2c DUP16 0xe5 0xd5 0xc8 0xee 0xbf PUSH5 0x736F6C6343 STOP SDIV 0xc STOP ORIGIN ", + "sourceMap": "51:886:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;200:99;;;:::i;:::-;;719:100;;8:9:-1;5:2;;;30:1;27;20:12;5:2;719:100:0;;;:::i;:::-;;146:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;146:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;563:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;563:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;563:152:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;449:110;;;:::i;:::-;;823:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;823:112:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;823:112:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;200:99;248:10;240:5;;:18;;;;;;;;;;;;;;;;;;285:9;264:11;:18;276:5;;;;;;;;;;;264:18;;;;;;;;;;;;;;;:30;;;;200:99::o;719:100::-;369:5;;;;;;;;;;;355:19;;:10;:19;;;333:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;772:10;:19;;:42;800:4;792:21;;;772:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;772:42:0;719:100::o;146:28::-;;;;;;;;;;;;;:::o;563:152::-;660:1;635:11;:22;647:9;635:22;;;;;;;;;;;;;;;;:26;627:35;;;;;;668:9;:18;;:42;687:11;:22;699:9;687:22;;;;;;;;;;;;;;;;668:42;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;668:42:0;563:152;:::o;449:110::-;516:38;544:9;516:11;:23;528:10;516:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;490:11;:23;502:10;490:23;;;;;;;;;;;;;;;:64;;;;449:110::o;823:112::-;889:4;908:11;:22;920:9;908:22;;;;;;;;;;;;;;;;901:29;;823:112;;;:::o;834:176:1:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "304000", + "executionCost": "343", + "totalCost": "304343" + }, + "external": { + "Fal1out()": "40703", + "allocate()": "infinite", + "allocatorBalance(address)": "684", + "collectAllocations()": "infinite", + "owner()": "475", + "sendAllocation(address)": "infinite" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "80" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "40" + }, + { + "begin": 51, + "end": 937, + "name": "MSTORE" + }, + { + "begin": 51, + "end": 937, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "1" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 51, + "end": 937, + "name": "POP" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH #[$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [$]", + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "CODECOPY" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "RETURN" + } + ], + ".data": { + "0": { + ".auxdata": "a265627a7a723158206a4ee66bdda0ffe5072deb89ed27493542d04913e850ea14fd2c8fe5d5c8eebf64736f6c634300050c0032", + ".code": [ + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "80" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "40" + }, + { + "begin": 51, + "end": 937, + "name": "MSTORE" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "4" + }, + { + "begin": 51, + "end": 937, + "name": "CALLDATASIZE" + }, + { + "begin": 51, + "end": 937, + "name": "LT" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "1" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "CALLDATALOAD" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "E0" + }, + { + "begin": 51, + "end": 937, + "name": "SHR" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "6FAB5DDF" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "2" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "8AA96F38" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "3" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "8DA5CB5B" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "4" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "A2DEA26F" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "5" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "ABAA9916" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "6" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "FFD40B56" + }, + { + "begin": 51, + "end": 937, + "name": "EQ" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH [tag]", + "value": "7" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPI" + }, + { + "begin": 51, + "end": 937, + "name": "tag", + "value": "1" + }, + { + "begin": 51, + "end": 937, + "name": "JUMPDEST" + }, + { + "begin": 51, + "end": 937, + "name": "PUSH", + "value": "0" + }, + { + "begin": 51, + "end": 937, + "name": "DUP1" + }, + { + "begin": 51, + "end": 937, + "name": "REVERT" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "2" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 200, + "end": 299, + "name": "PUSH [tag]", + "value": "8" + }, + { + "begin": 200, + "end": 299, + "name": "PUSH [tag]", + "value": "9" + }, + { + "begin": 200, + "end": 299, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "8" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 200, + "end": 299, + "name": "STOP" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "3" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "10" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "POP" + }, + { + "begin": 719, + "end": 819, + "name": "PUSH [tag]", + "value": "11" + }, + { + "begin": 719, + "end": 819, + "name": "PUSH [tag]", + "value": "12" + }, + { + "begin": 719, + "end": 819, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "11" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 719, + "end": 819, + "name": "STOP" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "4" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "13" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "13" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH [tag]", + "value": "14" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH [tag]", + "value": "15" + }, + { + "begin": 146, + "end": 174, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "14" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "40" + }, + { + "begin": 146, + "end": 174, + "name": "MLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "DUP1" + }, + { + "begin": 146, + "end": 174, + "name": "DUP3" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "DUP2" + }, + { + "begin": 146, + "end": 174, + "name": "MSTORE" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "20" + }, + { + "begin": 146, + "end": 174, + "name": "ADD" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP2" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "POP" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "40" + }, + { + "begin": 146, + "end": 174, + "name": "MLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "DUP1" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP2" + }, + { + "begin": 146, + "end": 174, + "name": "SUB" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "RETURN" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "5" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "16" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH [tag]", + "value": "17" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "4" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "CALLDATASIZE" + }, + { + "begin": 563, + "end": 715, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "18" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "18" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "DUP2" + }, + { + "begin": 563, + "end": 715, + "name": "ADD" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "DUP1" + }, + { + "begin": 563, + "end": 715, + "name": "CALLDATALOAD" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 563, + "end": 715, + "name": "AND" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH", + "value": "20" + }, + { + "begin": 563, + "end": 715, + "name": "ADD" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP3" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP2" + }, + { + "begin": 563, + "end": 715, + "name": "SWAP1" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "PUSH [tag]", + "value": "19" + }, + { + "begin": 563, + "end": 715, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "17" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 563, + "end": 715, + "name": "STOP" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "6" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 449, + "end": 559, + "name": "PUSH [tag]", + "value": "20" + }, + { + "begin": 449, + "end": 559, + "name": "PUSH [tag]", + "value": "21" + }, + { + "begin": 449, + "end": 559, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "20" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 449, + "end": 559, + "name": "STOP" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "7" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "CALLVALUE" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 30, + "end": 31, + "name": "PUSH", + "value": "0" + }, + { + "begin": 27, + "end": 28, + "name": "DUP1" + }, + { + "begin": 20, + "end": 32, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "22" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH [tag]", + "value": "23" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "4" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "CALLDATASIZE" + }, + { + "begin": 823, + "end": 935, + "name": "SUB" + }, + { + "begin": 13, + "end": 15, + "name": "PUSH", + "value": "20" + }, + { + "begin": 8, + "end": 11, + "name": "DUP2" + }, + { + "begin": 5, + "end": 16, + "name": "LT" + }, + { + "begin": 2, + "end": 4, + "name": "ISZERO" + }, + { + "begin": 2, + "end": 4, + "name": "PUSH [tag]", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPI" + }, + { + "begin": 29, + "end": 30, + "name": "PUSH", + "value": "0" + }, + { + "begin": 26, + "end": 27, + "name": "DUP1" + }, + { + "begin": 19, + "end": 31, + "name": "REVERT" + }, + { + "begin": 2, + "end": 4, + "name": "tag", + "value": "24" + }, + { + "begin": 2, + "end": 4, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "DUP2" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "CALLDATALOAD" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 823, + "end": 935, + "name": "AND" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "20" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP3" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH [tag]", + "value": "25" + }, + { + "begin": 823, + "end": 935, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "23" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "40" + }, + { + "begin": 823, + "end": 935, + "name": "MLOAD" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "DUP3" + }, + { + "begin": 823, + "end": 935, + "name": "DUP2" + }, + { + "begin": 823, + "end": 935, + "name": "MSTORE" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "20" + }, + { + "begin": 823, + "end": 935, + "name": "ADD" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "PUSH", + "value": "40" + }, + { + "begin": 823, + "end": 935, + "name": "MLOAD" + }, + { + "begin": 823, + "end": 935, + "name": "DUP1" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SUB" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "RETURN" + }, + { + "begin": 200, + "end": 299, + "name": "tag", + "value": "9" + }, + { + "begin": 200, + "end": 299, + "name": "JUMPDEST" + }, + { + "begin": 248, + "end": 258, + "name": "CALLER" + }, + { + "begin": 240, + "end": 245, + "name": "PUSH", + "value": "1" + }, + { + "begin": 240, + "end": 245, + "name": "PUSH", + "value": "0" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "100" + }, + { + "begin": 240, + "end": 258, + "name": "EXP" + }, + { + "begin": 240, + "end": 258, + "name": "DUP2" + }, + { + "begin": 240, + "end": 258, + "name": "SLOAD" + }, + { + "begin": 240, + "end": 258, + "name": "DUP2" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 240, + "end": 258, + "name": "MUL" + }, + { + "begin": 240, + "end": 258, + "name": "NOT" + }, + { + "begin": 240, + "end": 258, + "name": "AND" + }, + { + "begin": 240, + "end": 258, + "name": "SWAP1" + }, + { + "begin": 240, + "end": 258, + "name": "DUP4" + }, + { + "begin": 240, + "end": 258, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 240, + "end": 258, + "name": "AND" + }, + { + "begin": 240, + "end": 258, + "name": "MUL" + }, + { + "begin": 240, + "end": 258, + "name": "OR" + }, + { + "begin": 240, + "end": 258, + "name": "SWAP1" + }, + { + "begin": 240, + "end": 258, + "name": "SSTORE" + }, + { + "begin": 240, + "end": 258, + "name": "POP" + }, + { + "begin": 285, + "end": 294, + "name": "CALLVALUE" + }, + { + "begin": 264, + "end": 275, + "name": "PUSH", + "value": "0" + }, + { + "begin": 264, + "end": 282, + "name": "DUP1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "0" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "SLOAD" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "100" + }, + { + "begin": 276, + "end": 281, + "name": "EXP" + }, + { + "begin": 276, + "end": 281, + "name": "SWAP1" + }, + { + "begin": 276, + "end": 281, + "name": "DIV" + }, + { + "begin": 276, + "end": 281, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 276, + "end": 281, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 264, + "end": 282, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 264, + "end": 282, + "name": "AND" + }, + { + "begin": 264, + "end": 282, + "name": "DUP2" + }, + { + "begin": 264, + "end": 282, + "name": "MSTORE" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "20" + }, + { + "begin": 264, + "end": 282, + "name": "ADD" + }, + { + "begin": 264, + "end": 282, + "name": "SWAP1" + }, + { + "begin": 264, + "end": 282, + "name": "DUP2" + }, + { + "begin": 264, + "end": 282, + "name": "MSTORE" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "20" + }, + { + "begin": 264, + "end": 282, + "name": "ADD" + }, + { + "begin": 264, + "end": 282, + "name": "PUSH", + "value": "0" + }, + { + "begin": 264, + "end": 282, + "name": "KECCAK256" + }, + { + "begin": 264, + "end": 294, + "name": "DUP2" + }, + { + "begin": 264, + "end": 294, + "name": "SWAP1" + }, + { + "begin": 264, + "end": 294, + "name": "SSTORE" + }, + { + "begin": 264, + "end": 294, + "name": "POP" + }, + { + "begin": 200, + "end": 299, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 719, + "end": 819, + "name": "tag", + "value": "12" + }, + { + "begin": 719, + "end": 819, + "name": "JUMPDEST" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "1" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "0" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "SLOAD" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "100" + }, + { + "begin": 369, + "end": 374, + "name": "EXP" + }, + { + "begin": 369, + "end": 374, + "name": "SWAP1" + }, + { + "begin": 369, + "end": 374, + "name": "DIV" + }, + { + "begin": 369, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 369, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 355, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 365, + "name": "CALLER" + }, + { + "begin": 355, + "end": 374, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 355, + "end": 374, + "name": "AND" + }, + { + "begin": 355, + "end": 374, + "name": "EQ" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH [tag]", + "value": "28" + }, + { + "begin": 333, + "end": 425, + "name": "JUMPI" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "40" + }, + { + "begin": 333, + "end": 425, + "name": "MLOAD" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "4" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP3" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "SUB" + }, + { + "begin": 333, + "end": 425, + "name": "DUP3" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "17" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "63616C6C6572206973206E6F7420746865206F776E6572000000000000000000" + }, + { + "begin": 333, + "end": 425, + "name": "DUP2" + }, + { + "begin": 333, + "end": 425, + "name": "MSTORE" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "20" + }, + { + "begin": 333, + "end": 425, + "name": "ADD" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP2" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "POP" + }, + { + "begin": 333, + "end": 425, + "name": "PUSH", + "value": "40" + }, + { + "begin": 333, + "end": 425, + "name": "MLOAD" + }, + { + "begin": 333, + "end": 425, + "name": "DUP1" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP2" + }, + { + "begin": 333, + "end": 425, + "name": "SUB" + }, + { + "begin": 333, + "end": 425, + "name": "SWAP1" + }, + { + "begin": 333, + "end": 425, + "name": "REVERT" + }, + { + "begin": 333, + "end": 425, + "name": "tag", + "value": "28" + }, + { + "begin": 333, + "end": 425, + "name": "JUMPDEST" + }, + { + "begin": 772, + "end": 782, + "name": "CALLER" + }, + { + "begin": 772, + "end": 791, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 772, + "end": 791, + "name": "AND" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 800, + "end": 804, + "name": "ADDRESS" + }, + { + "begin": 792, + "end": 813, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 792, + "end": 813, + "name": "AND" + }, + { + "begin": 792, + "end": 813, + "name": "BALANCE" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP1" + }, + { + "begin": 772, + "end": 814, + "name": "DUP2" + }, + { + "begin": 772, + "end": 814, + "name": "ISZERO" + }, + { + "begin": 772, + "end": 814, + "name": "MUL" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP1" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "40" + }, + { + "begin": 772, + "end": 814, + "name": "MLOAD" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "0" + }, + { + "begin": 772, + "end": 814, + "name": "PUSH", + "value": "40" + }, + { + "begin": 772, + "end": 814, + "name": "MLOAD" + }, + { + "begin": 772, + "end": 814, + "name": "DUP1" + }, + { + "begin": 772, + "end": 814, + "name": "DUP4" + }, + { + "begin": 772, + "end": 814, + "name": "SUB" + }, + { + "begin": 772, + "end": 814, + "name": "DUP2" + }, + { + "begin": 772, + "end": 814, + "name": "DUP6" + }, + { + "begin": 772, + "end": 814, + "name": "DUP9" + }, + { + "begin": 772, + "end": 814, + "name": "DUP9" + }, + { + "begin": 772, + "end": 814, + "name": "CALL" + }, + { + "begin": 772, + "end": 814, + "name": "SWAP4" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 772, + "end": 814, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "30" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "30" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 772, + "end": 814, + "name": "POP" + }, + { + "begin": 719, + "end": 819, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 146, + "end": 174, + "name": "tag", + "value": "15" + }, + { + "begin": 146, + "end": 174, + "name": "JUMPDEST" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "1" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "0" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "SLOAD" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "100" + }, + { + "begin": 146, + "end": 174, + "name": "EXP" + }, + { + "begin": 146, + "end": 174, + "name": "SWAP1" + }, + { + "begin": 146, + "end": 174, + "name": "DIV" + }, + { + "begin": 146, + "end": 174, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 146, + "end": 174, + "name": "AND" + }, + { + "begin": 146, + "end": 174, + "name": "DUP2" + }, + { + "begin": 146, + "end": 174, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 563, + "end": 715, + "name": "tag", + "value": "19" + }, + { + "begin": 563, + "end": 715, + "name": "JUMPDEST" + }, + { + "begin": 660, + "end": 661, + "name": "PUSH", + "value": "0" + }, + { + "begin": 635, + "end": 646, + "name": "DUP1" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "0" + }, + { + "begin": 647, + "end": 656, + "name": "DUP4" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 635, + "end": 657, + "name": "AND" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 635, + "end": 657, + "name": "AND" + }, + { + "begin": 635, + "end": 657, + "name": "DUP2" + }, + { + "begin": 635, + "end": 657, + "name": "MSTORE" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "20" + }, + { + "begin": 635, + "end": 657, + "name": "ADD" + }, + { + "begin": 635, + "end": 657, + "name": "SWAP1" + }, + { + "begin": 635, + "end": 657, + "name": "DUP2" + }, + { + "begin": 635, + "end": 657, + "name": "MSTORE" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "20" + }, + { + "begin": 635, + "end": 657, + "name": "ADD" + }, + { + "begin": 635, + "end": 657, + "name": "PUSH", + "value": "0" + }, + { + "begin": 635, + "end": 657, + "name": "KECCAK256" + }, + { + "begin": 635, + "end": 657, + "name": "SLOAD" + }, + { + "begin": 635, + "end": 661, + "name": "GT" + }, + { + "begin": 627, + "end": 662, + "name": "PUSH [tag]", + "value": "32" + }, + { + "begin": 627, + "end": 662, + "name": "JUMPI" + }, + { + "begin": 627, + "end": 662, + "name": "PUSH", + "value": "0" + }, + { + "begin": 627, + "end": 662, + "name": "DUP1" + }, + { + "begin": 627, + "end": 662, + "name": "REVERT" + }, + { + "begin": 627, + "end": 662, + "name": "tag", + "value": "32" + }, + { + "begin": 627, + "end": 662, + "name": "JUMPDEST" + }, + { + "begin": 668, + "end": 677, + "name": "DUP1" + }, + { + "begin": 668, + "end": 686, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 668, + "end": 686, + "name": "AND" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "8FC" + }, + { + "begin": 687, + "end": 698, + "name": "PUSH", + "value": "0" + }, + { + "begin": 687, + "end": 709, + "name": "DUP1" + }, + { + "begin": 699, + "end": 708, + "name": "DUP5" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 687, + "end": 709, + "name": "AND" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 687, + "end": 709, + "name": "AND" + }, + { + "begin": 687, + "end": 709, + "name": "DUP2" + }, + { + "begin": 687, + "end": 709, + "name": "MSTORE" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "20" + }, + { + "begin": 687, + "end": 709, + "name": "ADD" + }, + { + "begin": 687, + "end": 709, + "name": "SWAP1" + }, + { + "begin": 687, + "end": 709, + "name": "DUP2" + }, + { + "begin": 687, + "end": 709, + "name": "MSTORE" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "20" + }, + { + "begin": 687, + "end": 709, + "name": "ADD" + }, + { + "begin": 687, + "end": 709, + "name": "PUSH", + "value": "0" + }, + { + "begin": 687, + "end": 709, + "name": "KECCAK256" + }, + { + "begin": 687, + "end": 709, + "name": "SLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP1" + }, + { + "begin": 668, + "end": 710, + "name": "DUP2" + }, + { + "begin": 668, + "end": 710, + "name": "ISZERO" + }, + { + "begin": 668, + "end": 710, + "name": "MUL" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP1" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "40" + }, + { + "begin": 668, + "end": 710, + "name": "MLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "0" + }, + { + "begin": 668, + "end": 710, + "name": "PUSH", + "value": "40" + }, + { + "begin": 668, + "end": 710, + "name": "MLOAD" + }, + { + "begin": 668, + "end": 710, + "name": "DUP1" + }, + { + "begin": 668, + "end": 710, + "name": "DUP4" + }, + { + "begin": 668, + "end": 710, + "name": "SUB" + }, + { + "begin": 668, + "end": 710, + "name": "DUP2" + }, + { + "begin": 668, + "end": 710, + "name": "DUP6" + }, + { + "begin": 668, + "end": 710, + "name": "DUP9" + }, + { + "begin": 668, + "end": 710, + "name": "DUP9" + }, + { + "begin": 668, + "end": 710, + "name": "CALL" + }, + { + "begin": 668, + "end": 710, + "name": "SWAP4" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 668, + "end": 710, + "name": "ISZERO" + }, + { + "begin": 8, + "end": 17, + "name": "DUP1" + }, + { + "begin": 5, + "end": 7, + "name": "ISZERO" + }, + { + "begin": 5, + "end": 7, + "name": "PUSH [tag]", + "value": "33" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPI" + }, + { + "begin": 45, + "end": 61, + "name": "RETURNDATASIZE" + }, + { + "begin": 42, + "end": 43, + "name": "PUSH", + "value": "0" + }, + { + "begin": 39, + "end": 40, + "name": "DUP1" + }, + { + "begin": 24, + "end": 62, + "name": "RETURNDATACOPY" + }, + { + "begin": 77, + "end": 93, + "name": "RETURNDATASIZE" + }, + { + "begin": 74, + "end": 75, + "name": "PUSH", + "value": "0" + }, + { + "begin": 67, + "end": 94, + "name": "REVERT" + }, + { + "begin": 5, + "end": 7, + "name": "tag", + "value": "33" + }, + { + "begin": 5, + "end": 7, + "name": "JUMPDEST" + }, + { + "begin": 668, + "end": 710, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "POP" + }, + { + "begin": 563, + "end": 715, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 449, + "end": 559, + "name": "tag", + "value": "21" + }, + { + "begin": 449, + "end": 559, + "name": "JUMPDEST" + }, + { + "begin": 516, + "end": 554, + "name": "PUSH [tag]", + "value": "35" + }, + { + "begin": 544, + "end": 553, + "name": "CALLVALUE" + }, + { + "begin": 516, + "end": 527, + "name": "PUSH", + "value": "0" + }, + { + "begin": 516, + "end": 539, + "name": "DUP1" + }, + { + "begin": 528, + "end": 538, + "name": "CALLER" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 516, + "end": 539, + "name": "AND" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 516, + "end": 539, + "name": "AND" + }, + { + "begin": 516, + "end": 539, + "name": "DUP2" + }, + { + "begin": 516, + "end": 539, + "name": "MSTORE" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "20" + }, + { + "begin": 516, + "end": 539, + "name": "ADD" + }, + { + "begin": 516, + "end": 539, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 539, + "name": "DUP2" + }, + { + "begin": 516, + "end": 539, + "name": "MSTORE" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "20" + }, + { + "begin": 516, + "end": 539, + "name": "ADD" + }, + { + "begin": 516, + "end": 539, + "name": "PUSH", + "value": "0" + }, + { + "begin": 516, + "end": 539, + "name": "KECCAK256" + }, + { + "begin": 516, + "end": 539, + "name": "SLOAD" + }, + { + "begin": 516, + "end": 543, + "name": "PUSH [tag]", + "value": "36" + }, + { + "begin": 516, + "end": 543, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 554, + "name": "SWAP2" + }, + { + "begin": 516, + "end": 554, + "name": "SWAP1" + }, + { + "begin": 516, + "end": 554, + "name": "PUSH", + "value": "FFFFFFFF" + }, + { + "begin": 516, + "end": 554, + "name": "AND" + }, + { + "begin": 516, + "end": 554, + "name": "JUMP", + "value": "[in]" + }, + { + "begin": 516, + "end": 554, + "name": "tag", + "value": "35" + }, + { + "begin": 516, + "end": 554, + "name": "JUMPDEST" + }, + { + "begin": 490, + "end": 501, + "name": "PUSH", + "value": "0" + }, + { + "begin": 490, + "end": 513, + "name": "DUP1" + }, + { + "begin": 502, + "end": 512, + "name": "CALLER" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 490, + "end": 513, + "name": "AND" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 490, + "end": 513, + "name": "AND" + }, + { + "begin": 490, + "end": 513, + "name": "DUP2" + }, + { + "begin": 490, + "end": 513, + "name": "MSTORE" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "20" + }, + { + "begin": 490, + "end": 513, + "name": "ADD" + }, + { + "begin": 490, + "end": 513, + "name": "SWAP1" + }, + { + "begin": 490, + "end": 513, + "name": "DUP2" + }, + { + "begin": 490, + "end": 513, + "name": "MSTORE" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "20" + }, + { + "begin": 490, + "end": 513, + "name": "ADD" + }, + { + "begin": 490, + "end": 513, + "name": "PUSH", + "value": "0" + }, + { + "begin": 490, + "end": 513, + "name": "KECCAK256" + }, + { + "begin": 490, + "end": 554, + "name": "DUP2" + }, + { + "begin": 490, + "end": 554, + "name": "SWAP1" + }, + { + "begin": 490, + "end": 554, + "name": "SSTORE" + }, + { + "begin": 490, + "end": 554, + "name": "POP" + }, + { + "begin": 449, + "end": 559, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 823, + "end": 935, + "name": "tag", + "value": "25" + }, + { + "begin": 823, + "end": 935, + "name": "JUMPDEST" + }, + { + "begin": 889, + "end": 893, + "name": "PUSH", + "value": "0" + }, + { + "begin": 908, + "end": 919, + "name": "DUP1" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "0" + }, + { + "begin": 920, + "end": 929, + "name": "DUP4" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 908, + "end": 930, + "name": "AND" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 908, + "end": 930, + "name": "AND" + }, + { + "begin": 908, + "end": 930, + "name": "DUP2" + }, + { + "begin": 908, + "end": 930, + "name": "MSTORE" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "20" + }, + { + "begin": 908, + "end": 930, + "name": "ADD" + }, + { + "begin": 908, + "end": 930, + "name": "SWAP1" + }, + { + "begin": 908, + "end": 930, + "name": "DUP2" + }, + { + "begin": 908, + "end": 930, + "name": "MSTORE" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "20" + }, + { + "begin": 908, + "end": 930, + "name": "ADD" + }, + { + "begin": 908, + "end": 930, + "name": "PUSH", + "value": "0" + }, + { + "begin": 908, + "end": 930, + "name": "KECCAK256" + }, + { + "begin": 908, + "end": 930, + "name": "SLOAD" + }, + { + "begin": 901, + "end": 930, + "name": "SWAP1" + }, + { + "begin": 901, + "end": 930, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP2" + }, + { + "begin": 823, + "end": 935, + "name": "SWAP1" + }, + { + "begin": 823, + "end": 935, + "name": "POP" + }, + { + "begin": 823, + "end": 935, + "name": "JUMP", + "value": "[out]" + }, + { + "begin": 834, + "end": 1010, + "name": "tag", + "value": "36" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMPDEST" + }, + { + "begin": 892, + "end": 899, + "name": "PUSH", + "value": "0" + }, + { + "begin": 911, + "end": 920, + "name": "DUP1" + }, + { + "begin": 927, + "end": 928, + "name": "DUP3" + }, + { + "begin": 923, + "end": 924, + "name": "DUP5" + }, + { + "begin": 923, + "end": 928, + "name": "ADD" + }, + { + "begin": 911, + "end": 928, + "name": "SWAP1" + }, + { + "begin": 911, + "end": 928, + "name": "POP" + }, + { + "begin": 951, + "end": 952, + "name": "DUP4" + }, + { + "begin": 946, + "end": 947, + "name": "DUP2" + }, + { + "begin": 946, + "end": 952, + "name": "LT" + }, + { + "begin": 946, + "end": 952, + "name": "ISZERO" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH [tag]", + "value": "39" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPI" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "8C379A000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "4" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "DUP3" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "1B" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "536166654D6174683A206164646974696F6E206F766572666C6F770000000000" + }, + { + "begin": 938, + "end": 984, + "name": "DUP2" + }, + { + "begin": 938, + "end": 984, + "name": "MSTORE" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "20" + }, + { + "begin": 938, + "end": 984, + "name": "ADD" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "POP" + }, + { + "begin": 938, + "end": 984, + "name": "PUSH", + "value": "40" + }, + { + "begin": 938, + "end": 984, + "name": "MLOAD" + }, + { + "begin": 938, + "end": 984, + "name": "DUP1" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP2" + }, + { + "begin": 938, + "end": 984, + "name": "SUB" + }, + { + "begin": 938, + "end": 984, + "name": "SWAP1" + }, + { + "begin": 938, + "end": 984, + "name": "REVERT" + }, + { + "begin": 938, + "end": 984, + "name": "tag", + "value": "39" + }, + { + "begin": 938, + "end": 984, + "name": "JUMPDEST" + }, + { + "begin": 1002, + "end": 1003, + "name": "DUP1" + }, + { + "begin": 995, + "end": 1003, + "name": "SWAP2" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 995, + "end": 1003, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP3" + }, + { + "begin": 834, + "end": 1010, + "name": "SWAP2" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "POP" + }, + { + "begin": 834, + "end": 1010, + "name": "JUMP", + "value": "[out]" + } + ] + } + } + }, + "methodIdentifiers": { + "Fal1out()": "6fab5ddf", + "allocate()": "abaa9916", + "allocatorBalance(address)": "ffd40b56", + "collectAllocations()": "8aa96f38", + "owner()": "8da5cb5b", + "sendAllocation(address)": "a2dea26f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[],\"name\":\"Fal1out\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"allocate\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"allocatorBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"collectAllocations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"allocator\",\"type\":\"address\"}],\"name\":\"sendAllocation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"browser/Fallout.sol\":\"Fallout\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"browser/Fallout.sol\":{\"keccak256\":\"0x3e98b9d316e26b66db2ad8a57532a58f4c1c352f87859863d719cea4164b719d\",\"urls\":[\"bzz-raw://e6c562e74cc92f8e7487768f0a534cf591f04d21b4d40a285b35fc5267562af3\",\"dweb:/ipfs/QmafXnUVPwjfwcQoYmMkChGQzPgfeSuqLHp81kkZBqn7jq\"]},\"browser/SafeMath.sol\":{\"keccak256\":\"0x440e126d35c767f263ad60029d68b9f1a946caedcc51ae10266f28e305fffe40\",\"urls\":[\"bzz-raw://87eaf2dfa0a988fd31e8b44703ffbf21a99a8c663263c2fad2c26dc9a120d5c3\",\"dweb:/ipfs/QmenpSEG3kX4SbXDuDVDi7EwHgSrRTYrbEdJ1H2H14HxGZ\"]}},\"version\":1}", + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/src/utils/template.ts b/src/utils/template.ts new file mode 100644 index 0000000000..78ed582dab --- /dev/null +++ b/src/utils/template.ts @@ -0,0 +1,122 @@ +import { FunctionDocumentation, TemplateDoc, MethodDoc, ContractDoc, ContractDocumentation, ParameterDocumentation } from "./types" +type HTMLContent = string + +export const htmlTemplate = (content: HTMLContent) => ` + + + + + + + + + ${content} + + +` + +export const template = (name: string, contractDoc: ContractDocumentation, functions: FunctionDocumentation[]) => ` + + +
+ + ${functions.length == 0 ? "No contract to display" : renderHeader(name, contractDoc)} + + ${functions.map((item) => ` +
${item.name} - ${item.type}
+
+ ${renderParameterDocumentation(item.inputs)} + + ${getMethodDetails(item.devdoc)} + +

Returns:

+ + ${renderParameterDocumentation(item.outputs)} + + `).join('\n')} + +
+` + +// const contractDocTemplate: TemplateDoc = { +// author: (author: string) => '',//`Author: ${author}`, +// details: (details: string) => `

${details}

`, +// title: (title: string) => { +// return title ? +// `${title}` +// : '' +// }, +// notice: (notice: string) => `

${notice}

`, +// methods: () => '' // Methods is managed by getMethod() +// } +const devMethodDocTemplate: Partial> = { + author: (author: string) => `

Created By ${author}

`, + details: (details: string) => `

${details}

`, + return: (value: string) => `

Return : ${value}

`, + notice: (notice: string) => `

${notice}

`, + // returns: () => '', // Implemented by getParams() + params: () => '' // Implemented by getParams() +} + +export const renderHeader = (name: string, contractDoc: ContractDocumentation) => ` +

${name} ${contractDoc.title ? `: ${contractDoc.title}` : ''}

+ + ${contractDoc.notice ? `

${contractDoc.notice}

` : ''} + + ${contractDoc.author ? `

Author: ${contractDoc.author}

` : ''} + +

Functions

+` + +export const renderParameterDocumentation = (parameters: ParameterDocumentation[]) => ` + ${parameters.length > 0 ? ` + + + + + + + + + + ${parameters.map((output) => (` + + + + `))} + +
NameTypeDescription
${output.name}${output.type}${output.description}
` : + '

No parameters

'} +` + +export const getMethodDetails = (devMethod?: Partial) => { + return !devMethod + ? '

**Add Documentation for the method here**

' + : Object.keys(devMethod) + .filter((key) => key !== 'params') + .map((key) => { + (devMethodDocTemplate as any)[key]((devMethod as any)[key]) + }) + .join('\n') +} diff --git a/src/utils/types.ts b/src/utils/types.ts new file mode 100644 index 0000000000..efcdc3f446 --- /dev/null +++ b/src/utils/types.ts @@ -0,0 +1,36 @@ +import { UserMethodDoc, DevMethodDoc, DeveloperDocumentation, UserDocumentation } from "@remixproject/plugin"; + +export interface MethodsDocumentation { + [x: string]: UserMethodDoc | DevMethodDoc +} + +export interface ContractDocumentation { + methods: MethodsDocumentation; + author: string; + title: string; + details: string; + notice: string; +} + +export type MethodDoc = DevMethodDoc & UserMethodDoc + +export type TemplateDoc = { [key in keyof T]: (...params: any[]) => string } + +// Contract +export type ContractDoc = DeveloperDocumentation & UserDocumentation + +export interface FunctionDocumentation { + name: string + type: string + devdoc?: Partial + inputs: ParameterDocumentation[] + outputs: ParameterDocumentation[] +} + +export interface ParameterDocumentation { + name: string + type: string + description: string +} + +export type HTMLContent = string diff --git a/src/utils/utils.test.ts b/src/utils/utils.test.ts new file mode 100644 index 0000000000..1bce6e3af7 --- /dev/null +++ b/src/utils/utils.test.ts @@ -0,0 +1,93 @@ +const open = require('open') + +import { getContractDoc, mergeParametersWithDevdoc, getFunctionDocumentation, getContractDocumentation } from './utils'; +import { FunctionDescription } from '@remixproject/plugin'; +import { buildFakeArtifactWithComments, buildFakeABIParameter } from './faker' + +jest.setTimeout(10000) + +describe('Publisher tests', () => { + + describe('getContractDocumentation', () => { + test('getContractDocumentation', () => { + const result = getContractDocumentation(buildFakeArtifactWithComments()) + + const result2 = { + methods: + { + 'age(uint256)': + { + author: 'Mary A. Botanist', + details: + 'The Alexandr N. Tetearing algorithm could increase precision', + params: [Object], + return: 'age in years, rounded up for partial years' + } + }, + notice: + 'You can use this contract for only the most basic simulation', + author: 'Larry A. Gardner', + details: + 'All function calls are currently implemented without side effects', + title: 'A simulator for trees' + } + + expect(result).toBeDefined() + }) + }) + + describe('getContractDoc', () => { + test('getContractDoc', () => { + + const template = getContractDoc("Fallout", buildFakeArtifactWithComments()); + + console.log("Template", template) + + expect(template).toBeDefined() + }) + }) + + describe('getFunctionDocumentation', () => { + test('getFunctionDocumentation', () => { + const abiItem: FunctionDescription = { + constant: false, + inputs: [], + name: "Fal1out", + outputs: [], + payable: true, + stateMutability: "payable", + type: "function" + } + + const result = getFunctionDocumentation(abiItem, {}) + + expect(result).toBeDefined() + }) + }) + + describe('mergeParametersWithDevdoc', () => { + test('mergeParametersWithDevdoc', () => { + const abiParameters = [buildFakeABIParameter()] + const devParams = {} + const result = mergeParametersWithDevdoc(abiParameters, devParams) + + expect(result.length).toEqual(1) + }) + + test('mergeParametersWithDevdoc with documentation', () => { + const abiParameters = [buildFakeABIParameter()] + const devParams = {} + const result = mergeParametersWithDevdoc(abiParameters, devParams) + + expect(result.length).toEqual(1) + }) + }) + + + test.skip('html generation', async () => { + await open('https://ipfs.io/ipfs/QmPYQyWyTrUZt3tjiPsEnkRQxedChYUjgEk9zLQ36SfpyW', { app: ['google chrome', '--incognito'] }); + // start server + // generate html + // server it + }) +}) \ No newline at end of file diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000000..b9418f697a --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,94 @@ +import { CompilationResult, CompiledContract, FunctionDescription, ABIDescription, DevMethodDoc, UserMethodDoc, ABIParameter, DeveloperDocumentation, UserDocumentation } from "@remixproject/plugin" + +import { EthDocumentation, FileName, Documentation, ContractName } from '../types' +import { template } from './template' +import { ContractDocumentation, MethodDoc, FunctionDocumentation, ParameterDocumentation, MethodsDocumentation } from './types' + +export const createDocumentation = (fileName: FileName, compilationResult: CompilationResult) => { + console.log("Filename", fileName) + const result = new Map(); + + const contracts = compilationResult.contracts[fileName] + console.log("Contracts", contracts) + + Object.keys(contracts).forEach((name) => { + console.log("CompiledContract", JSON.stringify(contracts[name])) + result.set(name, getContractDoc(name, contracts[name])) + }) + + return result +} + +export const getContractDoc = (name: string, contract: CompiledContract) => { + const contractDoc: ContractDocumentation = getContractDocumentation(contract) + + const functionsDocumentation = contract.abi + .map((def: ABIDescription) => { + if (def.type === 'constructor') { + def.name = 'constructor' + // because "constructor" is a string and not a { notice } object for userdoc we need to do that + const methodDoc = { + ...(contract.devdoc.methods.constructor || {}), + notice: contract.userdoc.methods.constructor as string + } + return getFunctionDocumentation(def, methodDoc) + } else { + if (def.type === 'fallback') { + def.name = 'fallback' + } + const method = Object.keys(contractDoc.methods).find((key) => key.includes(def.name as string)) as string + const methodDoc = contractDoc.methods[method] + return getFunctionDocumentation(def as FunctionDescription, methodDoc) + } + }) + + return template(name, contractDoc, functionsDocumentation) +} + +export const getContractDocumentation = (contract: CompiledContract) => { + let methods: MethodsDocumentation = {}; + + Object.keys(contract.userdoc.methods).map((item) => { + if (contract.devdoc.methods[item]) { + const finalResult = { + ...contract.userdoc.methods[item], + ...contract.devdoc.methods[item] + } + methods[item] = finalResult + } else { + methods[item] = contract.userdoc.methods[item] + } + }) + + const contractDoc = { ...contract.userdoc, ...contract.devdoc, methods } + + return contractDoc +} + +export const getFunctionDocumentation = (def: FunctionDescription, devdoc?: Partial) => { + const doc = devdoc || {} + const devparams = doc.params || {} + const inputsWithDescription = mergeParametersWithDevdoc(def.inputs || [], devparams) + const outputsWithDescription = mergeParametersWithDevdoc(def.outputs || [], devparams) + const type = def.constant ? 'view' : 'read' + + return { + name: def.name, + type, + devdoc: devdoc, + inputs: inputsWithDescription, + outputs: outputsWithDescription + } as FunctionDocumentation +} + +export const mergeParametersWithDevdoc = (params: ABIParameter[], devparams: any) => { + return params.map((input) => { + const description = devparams[input.name] || '' + return { + name: input.name, + type: input.type, + description + } as ParameterDocumentation + }) +} + diff --git a/src/views/ErrorView.tsx b/src/views/ErrorView.tsx new file mode 100644 index 0000000000..e943b17f15 --- /dev/null +++ b/src/views/ErrorView.tsx @@ -0,0 +1,31 @@ +import React from "react" + +export const ErrorView: React.FC = () => { + return ( +
+ Error page +
Sorry, something unexpected happened.
+
+ Please raise an issue:{" "} + + Here + +
+
+ ) +} diff --git a/src/views/HomeView.tsx b/src/views/HomeView.tsx new file mode 100644 index 0000000000..059bd092e0 --- /dev/null +++ b/src/views/HomeView.tsx @@ -0,0 +1,128 @@ +import React, { useState, useEffect } from "react" +import { AppContext } from "../AppContext" +import { ContractName, Documentation } from "../types" +import { publish } from '../utils' +import { htmlTemplate } from "../utils/template" + +export const HomeView: React.FC = () => { + const [activeItem, setActiveItem] = useState("") + const [isPublishing, setIsPublishing] = useState(false) + const [htmlDocumentation, setHtmlDocumentation] = useState("") + + useEffect(() => { + async function publishDocumentation() { + try { + + const hash = await publish(htmlDocumentation) + console.log("Hash", hash) + setIsPublishing(false) + + const url = `https://ipfs.io/ipfs/${hash}`; + + window.open(url); + + } catch (error) { + setIsPublishing(false) + } + } + + if (isPublishing) { + publishDocumentation() + } + + }, [isPublishing]) + + + const displayDocumentation = (client: any, contractName: ContractName, documentation: Documentation) => { + + console.log("Display Documentation", contractName, documentation) + + client.emit('documentation-generated', documentation) + } + + return ( + + {({ clientInstance, contracts, setContracts }) => +
+ {[...contracts.keys()].length === 0 && +

Compile a contract with Solidity Compiler

+ } + + {[...contracts.keys()].length > 0 && +
+
+ {[...contracts.keys()].map((item) => { + const documentation = contracts.get(item) as string; + return ( + + ) + })} +
+
+ +
+
+ {activeItem !== "" && + { + console.log("Is publishing") + setIsPublishing(true); + }} />} +
+
} +
+ } +
+ ) +} + +interface PublishButtonProps { + isPublishing: boolean + onClick: any +} + +export const PublishButton: React.FC = ({ isPublishing, onClick }) => { + return () +} + +// +// +// diff --git a/src/views/index.ts b/src/views/index.ts new file mode 100644 index 0000000000..1f487c9455 --- /dev/null +++ b/src/views/index.ts @@ -0,0 +1,2 @@ +export { HomeView } from "./HomeView" +export { ErrorView } from "./ErrorView" diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000000..0d36c4819f --- /dev/null +++ b/tslint.json @@ -0,0 +1,16 @@ +{ + "extends": [ + "tslint:recommended", + "tslint-react", + "tslint-config-prettier" + ], + "rulesDirectory": [ + "tslint-plugin-prettier" + ], + "rules": { + "prettier": true, + "interface-name": false, + "no-console": false, + "jsx-no-lambda": false + } + } \ No newline at end of file