From 5cfebd2680d9fb103a15381e4c2847934f9f2e42 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 09:48:54 +0900 Subject: Fix typos --- packages/contracts/test/multi_sig_with_time_lock.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/contracts/test/multi_sig_with_time_lock.ts b/packages/contracts/test/multi_sig_with_time_lock.ts index d35efe9da..e322242cc 100644 --- a/packages/contracts/test/multi_sig_with_time_lock.ts +++ b/packages/contracts/test/multi_sig_with_time_lock.ts @@ -46,7 +46,7 @@ describe('MultiSigWalletWithTimeLock', () => { describe('changeTimeLock', () => { describe('initially non-time-locked', async () => { - before('deploy a walet', async () => { + before('deploy a wallet', async () => { const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [ owners, SIGNATURES_REQUIRED, @@ -143,7 +143,7 @@ describe('MultiSigWalletWithTimeLock', () => { }); }); describe('initially time-locked', async () => { - before('deploy a walet', async () => { + before('deploy a wallet', async () => { const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [ owners, SIGNATURES_REQUIRED, -- cgit v1.2.3 From 6c02722f56dd37dd4237248e73d070755f86f318 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 09:50:24 +0900 Subject: Make deployer tests run on inprocess ganache --- packages/deployer/package.json | 1 + packages/deployer/test/deployer_test.ts | 3 ++- packages/deployer/test/util/constants.ts | 1 - packages/deployer/test/util/provider.ts | 6 ++++++ 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 packages/deployer/test/util/provider.ts (limited to 'packages') diff --git a/packages/deployer/package.json b/packages/deployer/package.json index f6eff9973..97c2f15b1 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -47,6 +47,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/deployer/README.md", "devDependencies": { + "@0xproject/dev-utils": "^0.3.4", "@0xproject/monorepo-scripts": "^0.1.16", "@0xproject/tslint-config": "^0.4.14", "@types/require-from-string": "^1.2.0", diff --git a/packages/deployer/test/deployer_test.ts b/packages/deployer/test/deployer_test.ts index 9c34d74aa..eadb535ab 100644 --- a/packages/deployer/test/deployer_test.ts +++ b/packages/deployer/test/deployer_test.ts @@ -8,6 +8,7 @@ import { CompilerOptions, ContractArtifact, ContractNetworkData, DoneCallback } import { constructor_args, exchange_binary } from './fixtures/exchange_bin'; import { constants } from './util/constants'; +import { provider } from './util/provider'; const expect = chai.expect; @@ -26,7 +27,7 @@ describe('#Deployer', () => { const deployerOpts = { artifactsDir, networkId: constants.networkId, - jsonrpcUrl: constants.jsonrpcUrl, + web3Provider: provider, defaults: { gasPrice: constants.gasPrice, }, diff --git a/packages/deployer/test/util/constants.ts b/packages/deployer/test/util/constants.ts index 5385b8d17..b93081a80 100644 --- a/packages/deployer/test/util/constants.ts +++ b/packages/deployer/test/util/constants.ts @@ -2,7 +2,6 @@ import { BigNumber } from '@0xproject/utils'; export const constants = { networkId: 0, - jsonrpcUrl: 'http://localhost:8545', optimizerEnabled: false, gasPrice: new BigNumber(20000000000), timeoutMs: 30000, diff --git a/packages/deployer/test/util/provider.ts b/packages/deployer/test/util/provider.ts new file mode 100644 index 000000000..bc0f55028 --- /dev/null +++ b/packages/deployer/test/util/provider.ts @@ -0,0 +1,6 @@ +import { web3Factory } from '@0xproject/dev-utils'; +import * as Web3 from 'web3'; + +const web3ProviderConfig = { shouldUseInProcessGanache: true }; +const web3Instance = web3Factory.create(web3ProviderConfig); +export const provider = web3Instance.currentProvider; -- cgit v1.2.3 From 5e4e27fed5b9b7c889e6e6e1805377b9eff31a3a Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 11:35:58 +0900 Subject: Update dev-utils and subproviders tests to use ganache in-process provider --- packages/dev-utils/test/blockchain_lifecycle_test.ts | 2 +- packages/dev-utils/test/rpc_test.ts | 2 +- .../subproviders/test/unit/ledger_subprovider_test.ts | 7 ++----- .../test/unit/redundant_rpc_subprovider_test.ts | 9 +++++++++ packages/subproviders/test/utils/configs.ts | 5 +++++ packages/subproviders/test/utils/subprovider.ts | 18 ++++++++++++++++++ 6 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 packages/subproviders/test/utils/configs.ts create mode 100644 packages/subproviders/test/utils/subprovider.ts (limited to 'packages') diff --git a/packages/dev-utils/test/blockchain_lifecycle_test.ts b/packages/dev-utils/test/blockchain_lifecycle_test.ts index 5ed67e012..077f6f2f1 100644 --- a/packages/dev-utils/test/blockchain_lifecycle_test.ts +++ b/packages/dev-utils/test/blockchain_lifecycle_test.ts @@ -8,7 +8,7 @@ import { BlockchainLifecycle, web3Factory } from '../src'; const expect = chai.expect; describe('BlockchainLifecycle tests', () => { - const web3Provider = web3Factory.getRpcProvider(); + const web3Provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); const web3Wrapper = new Web3Wrapper(web3Provider); const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); describe('#startAsync/revertAsync', () => { diff --git a/packages/dev-utils/test/rpc_test.ts b/packages/dev-utils/test/rpc_test.ts index 1bdea3613..233d8035e 100644 --- a/packages/dev-utils/test/rpc_test.ts +++ b/packages/dev-utils/test/rpc_test.ts @@ -8,7 +8,7 @@ import { web3Factory } from '../src'; const expect = chai.expect; describe('RPC tests', () => { - const web3Provider = web3Factory.getRpcProvider(); + const web3Provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); const web3Wrapper = new Web3Wrapper(web3Provider); describe('#mineBlockAsync', () => { it('increases block number when called', async () => { diff --git a/packages/subproviders/test/unit/ledger_subprovider_test.ts b/packages/subproviders/test/unit/ledger_subprovider_test.ts index 3cb487f02..a3800434a 100644 --- a/packages/subproviders/test/unit/ledger_subprovider_test.ts +++ b/packages/subproviders/test/unit/ledger_subprovider_test.ts @@ -4,12 +4,12 @@ import * as ethUtils from 'ethereumjs-util'; import * as _ from 'lodash'; import Web3 = require('web3'); import Web3ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { LedgerSubprovider } from '../../src'; import { DoneCallback, LedgerCommunicationClient, LedgerSubproviderErrors } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { reportCallbackErrors } from '../utils/report_callback_errors'; +import { subprovider as ganacheSubprovider } from '../utils/subprovider'; chaiSetup.configure(); const expect = chai.expect; @@ -99,10 +99,7 @@ describe('LedgerSubprovider', () => { before(() => { provider = new Web3ProviderEngine(); provider.addProvider(ledgerSubprovider); - const httpProvider = new RpcSubprovider({ - rpcUrl: 'http://localhost:8545', - }); - provider.addProvider(httpProvider); + provider.addProvider(ganacheSubprovider); provider.start(); }); describe('success cases', () => { diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index a347ab765..ab540e202 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -3,11 +3,13 @@ import * as chai from 'chai'; import * as _ from 'lodash'; import Web3 = require('web3'); import Web3ProviderEngine = require('web3-provider-engine'); +import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { RedundantRPCSubprovider } from '../../src'; import { DoneCallback } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { reportCallbackErrors } from '../utils/report_callback_errors'; +import { subprovider as ganacheSubprovider } from '../utils/subprovider'; const expect = chai.expect; chaiSetup.configure(); @@ -18,6 +20,8 @@ describe('RedundantRpcSubprovider', () => { provider = new Web3ProviderEngine(); const endpoints = ['http://localhost:8545']; const redundantSubprovider = new RedundantRPCSubprovider(endpoints); + // Hack: Hot-swap rpc with ganacheSubprovider + (redundantSubprovider as any)._rpcs = [ganacheSubprovider]; provider.addProvider(redundantSubprovider); provider.start(); @@ -38,6 +42,11 @@ describe('RedundantRpcSubprovider', () => { provider = new Web3ProviderEngine(); const endpoints = ['http://does-not-exist:3000', 'http://localhost:8545']; const redundantSubprovider = new RedundantRPCSubprovider(endpoints); + // Hack: Hot-swap rpcs with [nonExistentSubprovider, ganacheSubprovider] + const nonExistentSubprovider = new RpcSubprovider({ + rpcUrl: 'http://does-not-exist:3000', + }); + (redundantSubprovider as any)._rpcs = [nonExistentSubprovider, ganacheSubprovider]; provider.addProvider(redundantSubprovider); provider.start(); diff --git a/packages/subproviders/test/utils/configs.ts b/packages/subproviders/test/utils/configs.ts new file mode 100644 index 000000000..341037e4f --- /dev/null +++ b/packages/subproviders/test/utils/configs.ts @@ -0,0 +1,5 @@ +export const configs = { + port: 8545, + networkId: 50, + mnemonic: 'concert load couple harbor equip island argue ramp clarify fence smart topic', +}; diff --git a/packages/subproviders/test/utils/subprovider.ts b/packages/subproviders/test/utils/subprovider.ts new file mode 100644 index 000000000..b1c459746 --- /dev/null +++ b/packages/subproviders/test/utils/subprovider.ts @@ -0,0 +1,18 @@ +import * as fs from 'fs'; + +import { GanacheSubprovider } from '../../src/subproviders/ganache'; +import { configs } from '../utils/configs'; + +const logger = { + log: (arg: any) => { + fs.appendFileSync('ganache.log', `${arg}\n`); + }, +}; + +export const subprovider = new GanacheSubprovider({ + logger, + verbose: false, + port: configs.port, + networkId: configs.networkId, + mnemonic: configs.mnemonic, +}); -- cgit v1.2.3 From 43e07e7ce3dd61af8048c20aa2355010f0c72c22 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 16:31:57 +0900 Subject: Update 0x.js to run tests against in-process ganache --- packages/0x.js/package.json | 7 ++++-- packages/0x.js/test/0x.js_test.ts | 28 ++++++++++++++++++---- packages/0x.js/test/assert_test.ts | 2 +- packages/0x.js/test/ether_token_wrapper_test.ts | 2 +- packages/0x.js/test/event_watcher_test.ts | 3 +-- packages/0x.js/test/exchange_wrapper_test.ts | 2 +- .../test/token_transfer_proxy_wrapper_test.ts | 2 +- packages/0x.js/test/token_wrapper_test.ts | 21 +++++++++++++--- packages/0x.js/test/utils/constants.ts | 1 + packages/0x.js/test/utils/fill_scenarios.ts | 1 + packages/0x.js/test/utils/web3_wrapper.ts | 10 +++++--- 11 files changed, 60 insertions(+), 19 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 882b40733..0a91343c7 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -21,7 +21,7 @@ "test": "run-s clean test:commonjs", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", + "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/src/artifacts/$i.json test/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp scripts", "build:umd:prod": "NODE_ENV=production webpack", "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", @@ -33,7 +33,7 @@ "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json" }, "config": { - "artifacts": "TokenTransferProxy Exchange TokenRegistry Token EtherToken", + "artifacts": "Exchange DummyToken ZRXToken Token WETH9 TokenTransferProxy MultiSigWallet MultiSigWalletWithTimeLock MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress MaliciousToken TokenRegistry Arbitrage EtherDelta AccountLevels", "postpublish": { "assets": [ "packages/0x.js/_bundles/index.js", @@ -60,8 +60,10 @@ "node": ">=6.0.0" }, "devDependencies": { + "@0xproject/deployer": "^0.3.5", "@0xproject/dev-utils": "^0.3.4", "@0xproject/monorepo-scripts": "^0.1.16", + "@0xproject/subproviders": "^0.8.4", "@0xproject/tslint-config": "^0.4.14", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", @@ -90,6 +92,7 @@ "tslint": "5.8.0", "typedoc": "0xProject/typedoc", "typescript": "2.7.1", + "web3-provider-engine": "^13.0.1", "webpack": "^3.1.0" }, "dependencies": { diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index 70e85aa52..2ae944a99 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -1,17 +1,31 @@ +import { Deployer } from '@0xproject/deployer'; import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import * as _ from 'lodash'; import 'mocha'; +import * as path from 'path'; import * as Sinon from 'sinon'; import { ApprovalContractEventArgs, LogWithDecodedArgs, Order, TokenEvents, ZeroEx } from '../src'; +import { runMigrationsAsync } from './migrations/migrate'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { TokenUtils } from './utils/token_utils'; import { web3, web3Wrapper } from './utils/web3_wrapper'; +const artifactsDir = path.resolve('test', 'artifacts'); +const deployerOpts = { + artifactsDir, + web3Provider: web3.currentProvider, + networkId: constants.TESTRPC_NETWORK_ID, + defaults: { + gas: devConstants.GAS_ESTIMATE, + }, +}; +const deployer = new Deployer(deployerOpts); + const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); chaiSetup.configure(); const expect = chai.expect; @@ -19,10 +33,14 @@ const expect = chai.expect; const SHOULD_ADD_PERSONAL_MESSAGE_PREFIX = false; describe('ZeroEx library', () => { - const config = { - networkId: constants.TESTRPC_NETWORK_ID, - }; - const zeroEx = new ZeroEx(web3.currentProvider, config); + let zeroEx: ZeroEx; + before(async () => { + await runMigrationsAsync(deployer); + const config = { + networkId: constants.TESTRPC_NETWORK_ID, + }; + zeroEx = new ZeroEx(web3.currentProvider, config); + }); describe('#setProvider', () => { it('overrides provider in nested web3s and invalidates contractInstances', async () => { // Instantiate the contract instances with the current provider @@ -31,7 +49,7 @@ describe('ZeroEx library', () => { expect((zeroEx.exchange as any)._exchangeContractIfExists).to.not.be.undefined(); expect((zeroEx.tokenRegistry as any)._tokenRegistryContractIfExists).to.not.be.undefined(); - const newProvider = web3Factory.getRpcProvider(); + const newProvider = web3.currentProvider; // Add property to newProvider so that we can differentiate it from old provider (newProvider as any).zeroExTestId = 1; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); diff --git a/packages/0x.js/test/assert_test.ts b/packages/0x.js/test/assert_test.ts index c4451742f..4f3894a59 100644 --- a/packages/0x.js/test/assert_test.ts +++ b/packages/0x.js/test/assert_test.ts @@ -6,11 +6,11 @@ import { ZeroEx } from '../src'; import { assert } from '../src/utils/assert'; import { constants } from './utils/constants'; +import { web3 } from './utils/web3_wrapper'; const expect = chai.expect; describe('Assertion library', () => { - const web3 = web3Factory.create(); const config = { networkId: constants.TESTRPC_NETWORK_ID, }; diff --git a/packages/0x.js/test/ether_token_wrapper_test.ts b/packages/0x.js/test/ether_token_wrapper_test.ts index 6237ccf23..6687c48e1 100644 --- a/packages/0x.js/test/ether_token_wrapper_test.ts +++ b/packages/0x.js/test/ether_token_wrapper_test.ts @@ -260,7 +260,7 @@ describe('EtherTokenWrapper', () => { callbackNeverToBeCalled, ); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = web3Factory.getRpcProvider(); + const newProvider = web3.currentProvider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); await zeroEx.etherToken.depositAsync(etherTokenAddress, transferAmount, addressWithETH); zeroEx.etherToken.subscribe( diff --git a/packages/0x.js/test/event_watcher_test.ts b/packages/0x.js/test/event_watcher_test.ts index 2fa6c0580..269cd5bdb 100644 --- a/packages/0x.js/test/event_watcher_test.ts +++ b/packages/0x.js/test/event_watcher_test.ts @@ -13,12 +13,12 @@ import { DoneCallback } from '../src/types'; import { chaiSetup } from './utils/chai_setup'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; +import { web3 } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; describe('EventWatcher', () => { - let web3: Web3; let stubs: Sinon.SinonStub[] = []; let eventWatcher: EventWatcher; let web3Wrapper: Web3Wrapper; @@ -53,7 +53,6 @@ describe('EventWatcher', () => { transactionIndex: 0, }; before(async () => { - web3 = web3Factory.create(); const pollingIntervalMs = 10; web3Wrapper = new Web3Wrapper(web3.currentProvider); eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalMs); diff --git a/packages/0x.js/test/exchange_wrapper_test.ts b/packages/0x.js/test/exchange_wrapper_test.ts index cfc390bae..ba401d952 100644 --- a/packages/0x.js/test/exchange_wrapper_test.ts +++ b/packages/0x.js/test/exchange_wrapper_test.ts @@ -977,7 +977,7 @@ describe('ExchangeWrapper', () => { ); zeroEx.exchange.subscribe(ExchangeEvents.LogFill, indexFilterValues, callbackNeverToBeCalled); - const newProvider = web3Factory.getRpcProvider(); + const newProvider = web3.currentProvider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); const callback = reportNodeCallbackErrors(done)( diff --git a/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts b/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts index fb003634a..092ac51ad 100644 --- a/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts +++ b/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts @@ -5,10 +5,10 @@ import { ZeroEx } from '../src'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; +import { web3 } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; -const web3 = web3Factory.create(); describe('TokenTransferProxyWrapper', () => { let zeroEx: ZeroEx; diff --git a/packages/0x.js/test/token_wrapper_test.ts b/packages/0x.js/test/token_wrapper_test.ts index 0c6335d5e..988532abd 100644 --- a/packages/0x.js/test/token_wrapper_test.ts +++ b/packages/0x.js/test/token_wrapper_test.ts @@ -1,9 +1,11 @@ import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; +import { EmptyWalletSubprovider } from '@0xproject/subproviders'; import { BigNumber } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as chai from 'chai'; import 'mocha'; import * as Web3 from 'web3'; +import Web3ProviderEngine = require('web3-provider-engine'); import { ApprovalContractEventArgs, @@ -191,7 +193,8 @@ describe('TokenWrapper', () => { let zeroExWithoutAccounts: ZeroEx; before(async () => { const hasAddresses = false; - const web3WithoutAccounts = web3Factory.create({ hasAddresses }); + const emptyWalletProvider = addEmptyWalletSubprovider(web3.currentProvider); + const web3WithoutAccounts = new Web3(emptyWalletProvider); zeroExWithoutAccounts = new ZeroEx(web3WithoutAccounts.currentProvider, config); }); it('should return balance even when called with Web3 provider instance without addresses', async () => { @@ -303,7 +306,8 @@ describe('TokenWrapper', () => { let zeroExWithoutAccounts: ZeroEx; before(async () => { const hasAddresses = false; - const web3WithoutAccounts = web3Factory.create({ hasAddresses }); + const emptyWalletProvider = addEmptyWalletSubprovider(web3.currentProvider); + const web3WithoutAccounts = new Web3(emptyWalletProvider); zeroExWithoutAccounts = new ZeroEx(web3WithoutAccounts.currentProvider, config); }); it('should get the proxy allowance', async () => { @@ -424,7 +428,7 @@ describe('TokenWrapper', () => { ); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackNeverToBeCalled); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = web3Factory.getRpcProvider(); + const newProvider = web3.currentProvider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackToBeCalled); await zeroEx.token.transferAsync(tokenAddress, coinbase, addressWithoutFunds, transferAmount); @@ -515,3 +519,14 @@ describe('TokenWrapper', () => { }); }); // tslint:disable:max-file-line-count + +function addEmptyWalletSubprovider(provider: Web3.Provider): Web3.Provider { + const providerEngine = new Web3ProviderEngine(); + providerEngine.addProvider(new EmptyWalletSubprovider()); + const currentSubproviders = (provider as any)._providers; + for (const subprovider of currentSubproviders) { + providerEngine.addProvider(subprovider); + } + providerEngine.start(); + return providerEngine; +} diff --git a/packages/0x.js/test/utils/constants.ts b/packages/0x.js/test/utils/constants.ts index cf030259c..3b74fa863 100644 --- a/packages/0x.js/test/utils/constants.ts +++ b/packages/0x.js/test/utils/constants.ts @@ -6,4 +6,5 @@ export const constants = { KOVAN_RPC_URL: 'https://kovan.infura.io/', ROPSTEN_RPC_URL: 'https://ropsten.infura.io/', ZRX_DECIMALS: 18, + NULL_BYTES: '0x', }; diff --git a/packages/0x.js/test/utils/fill_scenarios.ts b/packages/0x.js/test/utils/fill_scenarios.ts index 8b1308298..25e2aa36f 100644 --- a/packages/0x.js/test/utils/fill_scenarios.ts +++ b/packages/0x.js/test/utils/fill_scenarios.ts @@ -33,6 +33,7 @@ export class FillScenarios { } public async initTokenBalancesAsync() { const web3Wrapper = (this._zeroEx as any)._web3Wrapper as Web3Wrapper; + const networkId = await web3Wrapper.getNetworkIdAsync(); for (const token of this._tokens) { if (token.symbol !== 'ZRX' && token.symbol !== 'WETH') { const defaults = {}; diff --git a/packages/0x.js/test/utils/web3_wrapper.ts b/packages/0x.js/test/utils/web3_wrapper.ts index 4b374fc7e..35898f553 100644 --- a/packages/0x.js/test/utils/web3_wrapper.ts +++ b/packages/0x.js/test/utils/web3_wrapper.ts @@ -1,6 +1,10 @@ -import { web3Factory } from '@0xproject/dev-utils'; +import { devConstants, web3Factory } from '@0xproject/dev-utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as Web3 from 'web3'; -export const web3 = web3Factory.create(); -export const web3Wrapper = new Web3Wrapper(web3.currentProvider); +import { constants } from './constants'; + +const web3 = web3Factory.create({ shouldUseInProcessGanache: true }); +const web3Wrapper = new Web3Wrapper(web3.currentProvider); + +export { web3, web3Wrapper }; -- cgit v1.2.3 From 2106d7476d40288bf2be91ade17673637cb6f223 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 16:32:32 +0900 Subject: Add contract artifacts to 0x.js tests --- packages/0x.js/test/artifacts/AccountLevels.json | 40 + packages/0x.js/test/artifacts/Arbitrage.json | 122 +++ packages/0x.js/test/artifacts/DummyToken.json | 325 ++++++++ packages/0x.js/test/artifacts/EtherDelta.json | 876 +++++++++++++++++++++ packages/0x.js/test/artifacts/Exchange.json | 634 +++++++++++++++ packages/0x.js/test/artifacts/MaliciousToken.json | 196 +++++ packages/0x.js/test/artifacts/MultiSigWallet.json | 552 +++++++++++++ .../test/artifacts/MultiSigWalletWithTimeLock.json | 633 +++++++++++++++ ...tWithTimeLockExceptRemoveAuthorizedAddress.json | 687 ++++++++++++++++ packages/0x.js/test/artifacts/Token.json | 180 +++++ packages/0x.js/test/artifacts/TokenRegistry.json | 565 +++++++++++++ .../0x.js/test/artifacts/TokenTransferProxy.json | 198 +++++ packages/0x.js/test/artifacts/WETH9.json | 300 +++++++ packages/0x.js/test/artifacts/ZRXToken.json | 247 ++++++ 14 files changed, 5555 insertions(+) create mode 100644 packages/0x.js/test/artifacts/AccountLevels.json create mode 100644 packages/0x.js/test/artifacts/Arbitrage.json create mode 100644 packages/0x.js/test/artifacts/DummyToken.json create mode 100644 packages/0x.js/test/artifacts/EtherDelta.json create mode 100644 packages/0x.js/test/artifacts/Exchange.json create mode 100644 packages/0x.js/test/artifacts/MaliciousToken.json create mode 100644 packages/0x.js/test/artifacts/MultiSigWallet.json create mode 100644 packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json create mode 100644 packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json create mode 100644 packages/0x.js/test/artifacts/Token.json create mode 100644 packages/0x.js/test/artifacts/TokenRegistry.json create mode 100644 packages/0x.js/test/artifacts/TokenTransferProxy.json create mode 100644 packages/0x.js/test/artifacts/WETH9.json create mode 100644 packages/0x.js/test/artifacts/ZRXToken.json (limited to 'packages') diff --git a/packages/0x.js/test/artifacts/AccountLevels.json b/packages/0x.js/test/artifacts/AccountLevels.json new file mode 100644 index 000000000..10fb43495 --- /dev/null +++ b/packages/0x.js/test/artifacts/AccountLevels.json @@ -0,0 +1,40 @@ +{ + "contract_name": "AccountLevels", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x48558bbda893aa15786836980a5fffb694db15163d462619c4dcb0f8ad97977b", + "source_tree_hash": "0x48558bbda893aa15786836980a5fffb694db15163d462619c4dcb0f8ad97977b", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "user", + "type": "address" + } + ], + "name": "accountLevel", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b60c48061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cbd0519146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050608e565b6040518082815260200191505060405180910390f35b60008090509190505600a165627a7a7230582071479bf14ae41db7a142de2a52f72ff30c74a36832d9aa0c7c79cabc3fc309740029", + "runtime_bytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cbd0519146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050608e565b6040518082815260200191505060405180910390f35b60008090509190505600a165627a7a7230582071479bf14ae41db7a142de2a52f72ff30c74a36832d9aa0c7c79cabc3fc309740029", + "updated_at": 1522264007240, + "source_map": "26:388:0:-;;;;;;;;;;;;;;;;;", + "source_map_runtime": "26:388:0:-;;;;;;;;;;;;;;;;;;;;;;;;328:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;381:4;404:1;397:8;;328:84;;;:::o", + "sources": [ + "AccountLevels.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Arbitrage.json b/packages/0x.js/test/artifacts/Arbitrage.json new file mode 100644 index 000000000..30fbfe981 --- /dev/null +++ b/packages/0x.js/test/artifacts/Arbitrage.json @@ -0,0 +1,122 @@ +{ + "contract_name": "Arbitrage", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x7f576bef315ae5d4154097970f03a291f99185d88f8318de3c3acfcb6c942b5d", + "source_tree_hash": "0x9d4dca59038ae8c995d9d06db8e5184dc52133935ab31834e98ca16a4cba24a5", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "tokenAddress", + "type": "address" + } + ], + "name": "setAllowances", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "addresses", + "type": "address[6]" + }, + { + "name": "values", + "type": "uint256[12]" + }, + { + "name": "v", + "type": "uint8[2]" + }, + { + "name": "r", + "type": "bytes32[2]" + }, + { + "name": "s", + "type": "bytes32[2]" + } + ], + "name": "makeAtomicTrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_exchangeAddress", + "type": "address" + }, + { + "name": "_etherDeltaAddress", + "type": "address" + }, + { + "name": "_proxyAddress", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b60405160608061118b83398101604052808051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050611039806101526000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633c059027146100675780638da5cb5b146100a0578063f2fde38b146100f5578063f41cd0591461012e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061016c565b005b34156100ab57600080fd5b6100b36104c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561010057600080fd5b61012c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104e8565b005b341561013957600080fd5b61016a6004808060c001909190806101800190919080604001909190806040019091908060400190919050506105bd565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101c957600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156102b057600080fd5b5af115156102bd57600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103ac57600080fd5b5af115156103b957600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156104a757600080fd5b5af115156104b457600080fd5b50505060405180519050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156105ba57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061857600080fd5b6106de856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c6020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050506107ab565b6107a4856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050610b4b565b5050505050565b6107b3610fa7565b6107bb610fe5565b600060a0604051908101604052808960006006811015156107d857fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600160068110151561081d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600260068110151561086257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960036006811015156108a757fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960046006811015156108ec57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250925060c060405190810160405280886000600c8110151561093d57fe5b60200201518152602001886001600c8110151561095657fe5b60200201518152602001886002600c8110151561096f57fe5b60200201518152602001886003600c8110151561098857fe5b60200201518152602001886004600c811015156109a157fe5b60200201518152602001886005600c811015156109ba57fe5b60200201518152509150866006600c811015156109d357fe5b60200201519050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663741bcc938484848a6000600281101515610a2a57fe5b60200201518a6000600281101515610a3e57fe5b60200201518a6000600281101515610a5257fe5b60200201516040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018087600560200280838360005b83811015610aad578082015181840152602081019050610a92565b5050505090500186600660200280838360005b83811015610adb578082015181840152602081019050610ac0565b505050509050018581526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019650505050505050600060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b5050505050505050505050565b600084600b600c81101515610b5c57fe5b60200201519050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663338b5dea876002600681101515610bb057fe5b6020020151876007600c81101515610bc457fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c4d57600080fd5b5af11515610c5a57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a19b14a876002600681101515610caa57fe5b6020020151876007600c81101515610cbe57fe5b6020020151896003600681101515610cd257fe5b6020020151896008600c81101515610ce657fe5b60200201518a6009600c81101515610cfa57fe5b60200201518b600a600c81101515610d0e57fe5b60200201518d6005600681101515610d2257fe5b60200201518c6001600281101515610d3657fe5b60200201518c6001600281101515610d4a57fe5b60200201518c6001600281101515610d5e57fe5b60200201518c6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b1515610e9557600080fd5b5af11515610ea257600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e281a98876003600681101515610ef257fe5b6020020151876008600c81101515610f0657fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f8f57600080fd5b5af11515610f9c57600080fd5b505050505050505050565b60a0604051908101604052806005905b600073ffffffffffffffffffffffffffffffffffffffff16815260200190600190039081610fb75790505090565b60c0604051908101604052806006905b6000815260200190600190039081610ff557905050905600a165627a7a72305820f64651fe495923a4929a666119d398ca846e3fcd286321f7d76b56484a07d6080029", + "runtime_bytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633c059027146100675780638da5cb5b146100a0578063f2fde38b146100f5578063f41cd0591461012e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061016c565b005b34156100ab57600080fd5b6100b36104c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561010057600080fd5b61012c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104e8565b005b341561013957600080fd5b61016a6004808060c001909190806101800190919080604001909190806040019091908060400190919050506105bd565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101c957600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156102b057600080fd5b5af115156102bd57600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103ac57600080fd5b5af115156103b957600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156104a757600080fd5b5af115156104b457600080fd5b50505060405180519050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156105ba57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061857600080fd5b6106de856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c6020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050506107ab565b6107a4856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050610b4b565b5050505050565b6107b3610fa7565b6107bb610fe5565b600060a0604051908101604052808960006006811015156107d857fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600160068110151561081d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600260068110151561086257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960036006811015156108a757fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960046006811015156108ec57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250925060c060405190810160405280886000600c8110151561093d57fe5b60200201518152602001886001600c8110151561095657fe5b60200201518152602001886002600c8110151561096f57fe5b60200201518152602001886003600c8110151561098857fe5b60200201518152602001886004600c811015156109a157fe5b60200201518152602001886005600c811015156109ba57fe5b60200201518152509150866006600c811015156109d357fe5b60200201519050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663741bcc938484848a6000600281101515610a2a57fe5b60200201518a6000600281101515610a3e57fe5b60200201518a6000600281101515610a5257fe5b60200201516040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018087600560200280838360005b83811015610aad578082015181840152602081019050610a92565b5050505090500186600660200280838360005b83811015610adb578082015181840152602081019050610ac0565b505050509050018581526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019650505050505050600060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b5050505050505050505050565b600084600b600c81101515610b5c57fe5b60200201519050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663338b5dea876002600681101515610bb057fe5b6020020151876007600c81101515610bc457fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c4d57600080fd5b5af11515610c5a57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a19b14a876002600681101515610caa57fe5b6020020151876007600c81101515610cbe57fe5b6020020151896003600681101515610cd257fe5b6020020151896008600c81101515610ce657fe5b60200201518a6009600c81101515610cfa57fe5b60200201518b600a600c81101515610d0e57fe5b60200201518d6005600681101515610d2257fe5b60200201518c6001600281101515610d3657fe5b60200201518c6001600281101515610d4a57fe5b60200201518c6001600281101515610d5e57fe5b60200201518c6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b1515610e9557600080fd5b5af11515610ea257600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e281a98876003600681101515610ef257fe5b6020020151876008600c81101515610f0657fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f8f57600080fd5b5af11515610f9c57600080fd5b505050505050505050565b60a0604051908101604052806005905b600073ffffffffffffffffffffffffffffffffffffffff16815260200190600190039081610fb75790505090565b60c0604051908101604052806006905b6000815260200190600190039081610ff557905050905600a165627a7a72305820f64651fe495923a4929a666119d398ca846e3fcd286321f7d76b56484a07d6080029", + "updated_at": 1522264004856, + "source_map": "427:3407:0:-;;;586:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:10:9;295:5;;:18;;;;;;;;;;;;;;;;;;712:16:0;692:8;;:37;;;;;;;;;;;;;;;;;;763:18;739:10;;:43;;;;;;;;;;;;;;;;;;807:13;792:12;;:28;;;;;;;;;;;;;;;;;;586:241;;;427:3407;;;;;;", + "source_map_runtime": "427:3407:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;1113:11;379:5:9;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;1133:12:0;1113:33;;1156:5;:13;;;1178:10;;;;;;;;;;;569;1156:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1210:5;:13;;;1224:12;;;;;;;;;;;569:10;1210:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:5;:13;;;1271:5;;;;;;;;;;;569:10;1257:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;;:::o;220:20:9:-;;;;;;;;;;;;;:::o;409:167::-;379:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;525:1;505:22;;:8;:22;;;;501:69;;;551:8;543:5;;:16;;;;;;;;;;;;;;;;;;501:69;409:167;:::o;1765:264:0:-;379:5:9;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;1920:45:0;1938:9;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:6;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1957:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:45::i;:::-;1975:47;1995:9;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:6;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2014:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2017:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:47::i;:::-;1765:264;;;;;:::o;2879:953::-;3026:32;;:::i;:::-;3273:26;;:::i;:::-;3561:25;3026:237;;;;;;;;;3075:9;3085:1;3075:12;;;;;;;;;;;;;3026:237;;;;;;;;3110:9;3120:1;3110:12;;;;;;;;;;;;;3026:237;;;;;;;;3145:9;3155:1;3145:12;;;;;;;;;;;;;3026:237;;;;;;;;3185:9;3195:1;3185:12;;;;;;;;;;;;;3026:237;;;;;;;;3225:9;3235:1;3225:12;;;;;;;;;;;;;3026:237;;;;;;;;;3273:278;;;;;;;;;3316:6;3323:1;3316:9;;;;;;;;;;;;;3273:278;;;;3359:6;3366:1;3359:9;;;;;;;;;;;;;3273:278;;;;3402:6;3409:1;3402:9;;;;;;;;;;;;;3273:278;;;;3437:6;3444:1;3437:9;;;;;;;;;;;;;3273:278;;;;3472:6;3479:1;3472:9;;;;;;;;;;;;;3273:278;;;;3523:6;3530:1;3523:9;;;;;;;;;;;;;3273:278;;;;;3589:6;3596:1;3589:9;;;;;;;;;;;;;3561:37;;3732:8;;;;;;;;;;;:24;;;3757:14;3773:11;3786:20;3808:1;3810;3808:4;;;;;;;;;;;;;3814:1;3816;3814:4;;;;;;;;;;;;;3820:1;3822;3820:4;;;;;;;;;;;;;3732:93;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3732:93:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3732:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:953;;;;;;;;:::o;2035:838::-;2184:11;2198:6;2205:2;2198:10;;;;;;;;;;;;;2184:24;;2218:10;;;;;;;;;;;:23;;;2255:9;2265:1;2255:12;;;;;;;;;;;;;2308:6;2315:1;2308:9;;;;;;;;;;;;;2218:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:10;;;;;;;;;;;:16;;;2380:9;2390:1;2380:12;;;;;;;;;;;;;2433:6;2440:1;2433:9;;;;;;;;;;;;;2469;2479:1;2469:12;;;;;;;;;;;;;2523:6;2530:1;2523:9;;;;;;;;;;;;;2560:6;2567:1;2560:9;;;;;;;;;;;;;2594:6;2601:2;2594:10;;;;;;;;;;;;;2627:9;2637:1;2627:12;;;;;;;;;;;;;2661:1;2663;2661:4;;;;;;;;;;;;;2679:1;2681;2679:4;;;;;;;;;;;;;2697:1;2699;2697:4;;;;;;;;;;;;;2715:6;2350:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:10;;;;;;;;;;;:24;;;2779:9;2789:1;2779:12;;;;;;;;;;;;;2833:6;2840:1;2833:9;;;;;;;;;;;;;2741:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2035:838;;;;;;:::o;427:3407::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "Arbitrage.sol", + "EtherDelta/AccountLevels.sol", + "EtherDelta/EtherDelta.sol", + "previous/Ownable/Ownable_v1.sol", + "previous/SafeMath/SafeMath_v1.sol", + "previous/Token/Token_v1.sol", + "protocol/Exchange/Exchange.sol", + "protocol/TokenTransferProxy/TokenTransferProxy.sol", + "tokens/Token/Token.sol", + "utils/Ownable/Ownable.sol", + "utils/SafeMath/SafeMath.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/DummyToken.json b/packages/0x.js/test/artifacts/DummyToken.json new file mode 100644 index 000000000..8b429341a --- /dev/null +++ b/packages/0x.js/test/artifacts/DummyToken.json @@ -0,0 +1,325 @@ +{ + "contract_name": "DummyToken", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x457cd1abe6333f2131eb9663c76a52857bc3e37606b3997b8c6683267b2049e3", + "source_tree_hash": "0x2f9492eca3d4b55758be98c05afd51d51310ed97769b69ae7d45366f038de653", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_target", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "setBalance", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint256" + }, + { + "name": "_totalSupply", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b60405162001200380380620012008339810160405280805182019190602001805182019190602001805190602001909190805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360049080519060200190620000a59291906200011a565b508260059080519060200190620000be9291906200011a565b508160068190555080600281905550806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050620001c9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015d57805160ff19168380011785556200018e565b828001600101855582156200018e579182015b828111156200018d57825182559160200191906001019062000170565b5b5090506200019d9190620001a1565b5090565b620001c691905b80821115620001c2576000816000905550600101620001a8565b5090565b90565b61102780620001d96000396000f3006060604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca578063095ea7b31461015857806318160ddd146101b257806323b872dd146101db578063313ce5671461025457806370a082311461027d5780638da5cb5b146102ca57806395d89b411461031f578063a0712d68146103ad578063a9059cbb146103d0578063dd62ed3e1461042a578063e30443bc14610496578063f2fde38b146104d8575b600080fd5b34156100d557600080fd5b6100dd610511565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011d578082015181840152602081019050610102565b50505050905090810190601f16801561014a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016357600080fd5b610198600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105af565b604051808215151515815260200191505060405180910390f35b34156101bd57600080fd5b6101c56106a1565b6040518082815260200191505060405180910390f35b34156101e657600080fd5b61023a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b604051808215151515815260200191505060405180910390f35b341561025f57600080fd5b6102676109c8565b6040518082815260200191505060405180910390f35b341561028857600080fd5b6102b4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109ce565b6040518082815260200191505060405180910390f35b34156102d557600080fd5b6102dd610a16565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032a57600080fd5b610332610a3c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610372578082015181840152602081019050610357565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b857600080fd5b6103ce6004808035906020019091905050610ada565b005b34156103db57600080fd5b610410600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b91565b604051808215151515815260200191505060405180910390f35b341561043557600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b6040518082815260200191505060405180910390f35b34156104a157600080fd5b6104d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610df8565b005b34156104e357600080fd5b61050f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eed565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107775750828110155b801561080157506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b151561080c57600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109575782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b68056bc75e2d631000008111151515610af257600080fd5b610b3a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc4565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b8860025482610fc4565b60028190555050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610c5f57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1515610c6a57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5657600080fd5b610e5f836109ce565b905080821015610e8957610e7e600254610e798385610fe2565b610fe2565b600281905550610ea5565b610e9e600254610e998484610fe2565b610fc4565b6002819055505b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610fc15780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000808284019050838110151515610fd857fe5b8091505092915050565b6000828211151515610ff057fe5b8183039050929150505600a165627a7a723058201d6cf34616ce150ab8d20d5cddf4c35caccd9a84e830cf07ed9bd0b1bd52e40d0029", + "runtime_bytecode": "0x6060604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca578063095ea7b31461015857806318160ddd146101b257806323b872dd146101db578063313ce5671461025457806370a082311461027d5780638da5cb5b146102ca57806395d89b411461031f578063a0712d68146103ad578063a9059cbb146103d0578063dd62ed3e1461042a578063e30443bc14610496578063f2fde38b146104d8575b600080fd5b34156100d557600080fd5b6100dd610511565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011d578082015181840152602081019050610102565b50505050905090810190601f16801561014a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016357600080fd5b610198600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105af565b604051808215151515815260200191505060405180910390f35b34156101bd57600080fd5b6101c56106a1565b6040518082815260200191505060405180910390f35b34156101e657600080fd5b61023a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b604051808215151515815260200191505060405180910390f35b341561025f57600080fd5b6102676109c8565b6040518082815260200191505060405180910390f35b341561028857600080fd5b6102b4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109ce565b6040518082815260200191505060405180910390f35b34156102d557600080fd5b6102dd610a16565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032a57600080fd5b610332610a3c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610372578082015181840152602081019050610357565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b857600080fd5b6103ce6004808035906020019091905050610ada565b005b34156103db57600080fd5b610410600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b91565b604051808215151515815260200191505060405180910390f35b341561043557600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b6040518082815260200191505060405180910390f35b34156104a157600080fd5b6104d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610df8565b005b34156104e357600080fd5b61050f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eed565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107775750828110155b801561080157506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b151561080c57600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109575782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b68056bc75e2d631000008111151515610af257600080fd5b610b3a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc4565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b8860025482610fc4565b60028190555050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610c5f57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1515610c6a57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5657600080fd5b610e5f836109ce565b905080821015610e8957610e7e600254610e798385610fe2565b610fe2565b600281905550610ea5565b610e9e600254610e998484610fe2565b610fc4565b6002819055505b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610fc15780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000808284019050838110151515610fd857fe5b8091505092915050565b6000828211151515610ff057fe5b8183039050929150505600a165627a7a723058201d6cf34616ce150ab8d20d5cddf4c35caccd9a84e830cf07ed9bd0b1bd52e40d0029", + "updated_at": 1522263983736, + "source_map": "139:831:0:-;;;263:303;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:10:5;295:5;;:18;;;;;;;;;;;;;;;;;;417:5:0;410:4;:12;;;;;;;;;;;;:::i;:::-;;441:7;432:6;:16;;;;;;;;;;;;:::i;:::-;;469:9;458:8;:20;;;;502:12;488:11;:26;;;;547:12;524:8;:20;533:10;524:20;;;;;;;;;;;;;;;:35;;;;263:303;;;;139:831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "source_map_runtime": "139:831:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;186:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1091:498:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;236:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1073:130:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:20:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;210:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;342:225:1;;;;;;;;;;;;;;;;;;;;;;;;;;107:322:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:396:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:167:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;853:214:2:-;933:4;985:6;953:7;:19;961:10;953:19;;;;;;;;;;;;;;;:29;973:8;953:29;;;;;;;;;;;;;;;:38;;;;1022:8;1001:38;;1010:10;1001:38;;;1032:6;1001:38;;;;;;;;;;;;;;;;;;1056:4;1049:11;;853:214;;;;:::o;1472:23::-;;;;:::o;1091:498:4:-;1186:4;1206:14;1223:7;:14;1231:5;1223:14;;;;;;;;;;;;;;;:26;1238:10;1223:26;;;;;;;;;;;;;;;;1206:43;;1286:6;1267:8;:15;1276:5;1267:15;;;;;;;;;;;;;;;;:25;;:48;;;;;1309:6;1296:9;:19;;1267:48;:91;;;;;1345:8;:13;1354:3;1345:13;;;;;;;;;;;;;;;;1335:6;1319:8;:13;1328:3;1319:13;;;;;;;;;;;;;;;;:22;:39;;1267:91;1259:100;;;;;;;;1386:6;1369:8;:13;1378:3;1369:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1421:6;1402:8;:15;1411:5;1402:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;745:10;1441:9;:20;1437:87;;;1507:6;1477:7;:14;1485:5;1477:14;;;;;;;;;;;;;;;:26;1492:10;1477:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;1437:87;1549:3;1533:28;;1542:5;1533:28;;;1554:6;1533:28;;;;;;;;;;;;;;;;;;1578:4;1571:11;;1091:498;;;;;;:::o;236:20:0:-;;;;:::o;1073:130:2:-;1153:4;1180:8;:16;1189:6;1180:16;;;;;;;;;;;;;;;;1173:23;;1073:130;;;:::o;220:20:5:-;;;;;;;;;;;;;:::o;210::0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;342:225:1:-;416:21;406:6;:31;;398:40;;;;;;;;471:37;479:6;487:8;:20;496:10;487:20;;;;;;;;;;;;;;;;471:7;:37::i;:::-;448:8;:20;457:10;448:20;;;;;;;;;;;;;;;:60;;;;532:28;540:11;;553:6;532:7;:28::i;:::-;518:11;:42;;;;342:225;:::o;107:322:2:-;183:4;235:6;211:8;:20;220:10;211:20;;;;;;;;;;;;;;;;:30;;:73;;;;;271:8;:13;280:3;271:13;;;;;;;;;;;;;;;;261:6;245:8;:13;254:3;245:13;;;;;;;;;;;;;;;;:22;:39;;211:73;203:82;;;;;;;;319:6;295:8;:20;304:10;295:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;352:6;335:8;:13;344:3;335:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;389:3;368:33;;377:10;368:33;;;394:6;368:33;;;;;;;;;;;;;;;;;;418:4;411:11;;107:322;;;;:::o;1209:157::-;1307:4;1334:7;:15;1342:6;1334:15;;;;;;;;;;;;;;;:25;1350:8;1334:25;;;;;;;;;;;;;;;;1327:32;;1209:157;;;;:::o;572:396:0:-;669:16;379:5:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;688:18:0;698:7;688:9;:18::i;:::-;669:37;;729:11;720:6;:20;716:210;;;770:50;778:11;;791:28;799:11;812:6;791:7;:28::i;:::-;770:7;:50::i;:::-;756:11;:64;;;;716:210;;;865:50;873:11;;886:28;894:6;902:11;886:7;:28::i;:::-;865:7;:50::i;:::-;851:11;:64;;;;716:210;955:6;935:8;:17;944:7;935:17;;;;;;;;;;;;;;;:26;;;;572:396;;;:::o;409:167:5:-;379:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;525:1;505:22;;:8;:22;;;;501:69;;;551:8;543:5;;:16;;;;;;;;;;;;;;;;;;501:69;409:167;:::o;536:166:6:-;616:7;639:6;652:1;648;:5;639:14;;675:1;670;:6;;663:14;;;;;;694:1;687:8;;536:166;;;;;:::o;384:146::-;464:7;499:1;494;:6;;487:14;;;;;;522:1;518;:5;511:12;;384:146;;;;:::o", + "sources": [ + "DummyToken.sol", + "Mintable/Mintable.sol", + "tokens/ERC20Token/ERC20Token.sol", + "tokens/Token/Token.sol", + "tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol", + "utils/Ownable/Ownable.sol", + "utils/SafeMath/SafeMath.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/EtherDelta.json b/packages/0x.js/test/artifacts/EtherDelta.json new file mode 100644 index 000000000..3355cd846 --- /dev/null +++ b/packages/0x.js/test/artifacts/EtherDelta.json @@ -0,0 +1,876 @@ +{ + "contract_name": "EtherDelta", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x59958cfb8ac22a16c3eda18ef389dd9354143b2a64b8e4c8c298c4cd9c38673e", + "source_tree_hash": "0x00c7e1f07a9b18919e3f2989e837a31bd5089a3f877f8facd320d60b919c6023", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "user", + "type": "address" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "trade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "order", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "bytes32" + } + ], + "name": "orderFills", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "cancelOrder", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "depositToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "user", + "type": "address" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "amountFilled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "feeMake_", + "type": "uint256" + } + ], + "name": "changeFeeMake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "feeMake", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "feeRebate_", + "type": "uint256" + } + ], + "name": "changeFeeRebate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "feeAccount", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "user", + "type": "address" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "sender", + "type": "address" + } + ], + "name": "testTrade", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "feeAccount_", + "type": "address" + } + ], + "name": "changeFeeAccount", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "feeRebate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "feeTake_", + "type": "uint256" + } + ], + "name": "changeFeeTake", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "admin_", + "type": "address" + } + ], + "name": "changeAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "bytes32" + } + ], + "name": "orders", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "feeTake", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "accountLevelsAddr_", + "type": "address" + } + ], + "name": "changeAccountLevelsAddr", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "accountLevelsAddr", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "user", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "tokenGet", + "type": "address" + }, + { + "name": "amountGet", + "type": "uint256" + }, + { + "name": "tokenGive", + "type": "address" + }, + { + "name": "amountGive", + "type": "uint256" + }, + { + "name": "expires", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "user", + "type": "address" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "availableVolume", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "admin_", + "type": "address" + }, + { + "name": "feeAccount_", + "type": "address" + }, + { + "name": "accountLevelsAddr_", + "type": "address" + }, + { + "name": "feeMake_", + "type": "uint256" + }, + { + "name": "feeTake_", + "type": "uint256" + }, + { + "name": "feeRebate_", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": false, + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "tokenGet", + "type": "address" + }, + { + "indexed": false, + "name": "amountGet", + "type": "uint256" + }, + { + "indexed": false, + "name": "tokenGive", + "type": "address" + }, + { + "indexed": false, + "name": "amountGive", + "type": "uint256" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + }, + { + "indexed": false, + "name": "nonce", + "type": "uint256" + }, + { + "indexed": false, + "name": "user", + "type": "address" + } + ], + "name": "Order", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "tokenGet", + "type": "address" + }, + { + "indexed": false, + "name": "amountGet", + "type": "uint256" + }, + { + "indexed": false, + "name": "tokenGive", + "type": "address" + }, + { + "indexed": false, + "name": "amountGive", + "type": "uint256" + }, + { + "indexed": false, + "name": "expires", + "type": "uint256" + }, + { + "indexed": false, + "name": "nonce", + "type": "uint256" + }, + { + "indexed": false, + "name": "user", + "type": "address" + }, + { + "indexed": false, + "name": "v", + "type": "uint8" + }, + { + "indexed": false, + "name": "r", + "type": "bytes32" + }, + { + "indexed": false, + "name": "s", + "type": "bytes32" + } + ], + "name": "Cancel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "tokenGet", + "type": "address" + }, + { + "indexed": false, + "name": "amountGet", + "type": "uint256" + }, + { + "indexed": false, + "name": "tokenGive", + "type": "address" + }, + { + "indexed": false, + "name": "amountGive", + "type": "uint256" + }, + { + "indexed": false, + "name": "get", + "type": "address" + }, + { + "indexed": false, + "name": "give", + "type": "address" + } + ], + "name": "Trade", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "user", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "balance", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "user", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "balance", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b60405160c08061356283398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600381905550816004819055508060058190555050505050505061341e806101446000396000f300606060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a19b14a146101645780630b9276661461022e57806319774d43146102aa578063278b8c0e146103045780632e1a7d4d146103a6578063338b5dea146103c957806346be96c31461040b578063508493bc146104e057806354d03b5c1461054c578063577863941461056f5780635e1d7ae41461059857806365e17c9d146105bb5780636c86888b1461061057806371ffcb1614610711578063731c2f811461074a5780638823a9c0146107735780638f283970146107965780639e281a98146107cf578063bb5f462914610811578063c281309e1461086f578063d0e30db014610898578063e8f6bc2e146108a2578063f3412942146108db578063f7888aec14610930578063f851a4401461099c578063fb6e155f146109f1575b341561015f57600080fd5b600080fd5b341561016f57600080fd5b61022c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091908035906020019091905050610ac6565b005b341561023957600080fd5b6102a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050610fb1565b005b34156102b557600080fd5b6102ee600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061122d565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b6103a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611252565b005b34156103b157600080fd5b6103c76004808035906020019091905050611650565b005b34156103d457600080fd5b610409600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118cf565b005b341561041657600080fd5b6104ca600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611c18565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b610536600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d9a565b6040518082815260200191505060405180910390f35b341561055757600080fd5b61056d6004808035906020019091905050611dbf565b005b341561057a57600080fd5b610582611e33565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105b96004808035906020019091905050611e39565b005b34156105c657600080fd5b6105ce611eb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b6106f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611edf565b604051808215151515815260200191505060405180910390f35b341561071c57600080fd5b610748600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fa2565b005b341561075557600080fd5b61075d612041565b6040518082815260200191505060405180910390f35b341561077e57600080fd5b6107946004808035906020019091905050612047565b005b34156107a157600080fd5b6107cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c7565b005b34156107da57600080fd5b61080f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612165565b005b341561081c57600080fd5b610855600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612503565b604051808215151515815260200191505060405180910390f35b341561087a57600080fd5b610882612532565b6040518082815260200191505060405180910390f35b6108a0612538565b005b34156108ad57600080fd5b6108d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061270c565b005b34156108e657600080fd5b6108ee6127ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093b57600080fd5b610986600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d1565b6040518082815260200191505060405180910390f35b34156109a757600080fd5b6109af612858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fc57600080fd5b610ab0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061287d565b6040518082815260200191505060405180910390f35b60006002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515610bd257600080fd5b5050604051805190509050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680610d3757508573ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515610d1657600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015610d435750874311155b8015610db057508a610dad600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000205484612c29565b11155b1515610dbb57600080fd5b610dc98c8c8c8c8a87612c47565b610e2b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000205483612c29565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e868e02811515610eb857fe5b048a33604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b6000600230888888888888604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af115156110bd57600080fd5b50506040518051905090506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8587878787878733604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a150505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b60006002308b8b8b8b8b8b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561135e57600080fd5b5050604051805190509050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806114c357503373ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115156114a257600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b15156114ce57600080fd5b88600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b08a8a8a8a8a8a338b8b8b604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019a505050505050505050505060405180910390a150505050505050505050565b80600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116c357600080fd5b611733600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af19250505015156117d457600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56760003383600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a150565b60008273ffffffffffffffffffffffffffffffffffffffff1614156118f357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156119c957600080fd5b5af115156119d657600080fd5b5050506040518051905015156119eb57600080fd5b611a71600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612c29565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b6000806002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515611d2557600080fd5b5050604051805190509050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008260001916600019168152602001908152602001600020549150509a9950505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1a57600080fd5b600354811115611e2957600080fd5b8060038190555050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e9457600080fd5b600554811080611ea5575060045481115b15611eaf57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611f7e575082611f7b8e8e8e8e8e8e8e8e8e8e61287d565b10155b1515611f8d5760009050611f92565b600190505b9c9b505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a257600080fd5b6004548111806120b3575060055481105b156120bd57600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212257600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008273ffffffffffffffffffffffffffffffffffffffff16141561218957600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561221257600080fd5b612298600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156123ba57600080fd5b5af115156123c757600080fd5b5050506040518051905015156123dc57600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60045481565b6125a8600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612c29565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d760003334600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806002308f8f8f8f8f8f604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561298d57600080fd5b5050604051805190509250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff1680612af257508773ffffffffffffffffffffffffffffffffffffffff1660018460405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515612ad157600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015612afe5750894311155b1515612b0d5760009350612c18565b612b6f8d600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020546133a6565b91508a612bf8600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6133bf565b811515612c0157fe5b04905080821015612c1457819350612c18565b8093505b5050509a9950505050505050505050565b6000808284019050838110151515612c3d57fe5b8091505092915050565b600080600080670de0b6b3a7640000612c62866003546133bf565b811515612c6b57fe5b049350670de0b6b3a7640000612c83866004546133bf565b811515612c8c57fe5b049250600091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612de357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbd0519876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612d9157600080fd5b5af11515612d9e57600080fd5b5050506040518051905090506001811415612dd557670de0b6b3a7640000612dc8866005546133bf565b811515612dd157fe5b0491505b6002811415612de2578291505b5b612e72600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e6d8786612c29565b6133a6565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8a600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f85612f7f8886612c29565b876133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c4600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bf6130b98787612c29565b856133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613200600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a6131f18a896133bf565b8115156131fa57fe5b046133a6565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331a600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a61330b8a896133bf565b81151561331457fe5b04612c29565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050505050565b60008282111515156133b457fe5b818303905092915050565b600080828402905060008414806133e057508284828115156133dd57fe5b04145b15156133e857fe5b80915050929150505600a165627a7a723058203c9c2c2b69e0aacdb48368e242a9d53c06d54a4a9ab509c4269b1f898b2d364b0029", + "runtime_bytecode": "0x606060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a19b14a146101645780630b9276661461022e57806319774d43146102aa578063278b8c0e146103045780632e1a7d4d146103a6578063338b5dea146103c957806346be96c31461040b578063508493bc146104e057806354d03b5c1461054c578063577863941461056f5780635e1d7ae41461059857806365e17c9d146105bb5780636c86888b1461061057806371ffcb1614610711578063731c2f811461074a5780638823a9c0146107735780638f283970146107965780639e281a98146107cf578063bb5f462914610811578063c281309e1461086f578063d0e30db014610898578063e8f6bc2e146108a2578063f3412942146108db578063f7888aec14610930578063f851a4401461099c578063fb6e155f146109f1575b341561015f57600080fd5b600080fd5b341561016f57600080fd5b61022c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091908035906020019091905050610ac6565b005b341561023957600080fd5b6102a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050610fb1565b005b34156102b557600080fd5b6102ee600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061122d565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b6103a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611252565b005b34156103b157600080fd5b6103c76004808035906020019091905050611650565b005b34156103d457600080fd5b610409600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118cf565b005b341561041657600080fd5b6104ca600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611c18565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b610536600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d9a565b6040518082815260200191505060405180910390f35b341561055757600080fd5b61056d6004808035906020019091905050611dbf565b005b341561057a57600080fd5b610582611e33565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105b96004808035906020019091905050611e39565b005b34156105c657600080fd5b6105ce611eb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b6106f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611edf565b604051808215151515815260200191505060405180910390f35b341561071c57600080fd5b610748600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fa2565b005b341561075557600080fd5b61075d612041565b6040518082815260200191505060405180910390f35b341561077e57600080fd5b6107946004808035906020019091905050612047565b005b34156107a157600080fd5b6107cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c7565b005b34156107da57600080fd5b61080f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612165565b005b341561081c57600080fd5b610855600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612503565b604051808215151515815260200191505060405180910390f35b341561087a57600080fd5b610882612532565b6040518082815260200191505060405180910390f35b6108a0612538565b005b34156108ad57600080fd5b6108d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061270c565b005b34156108e657600080fd5b6108ee6127ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093b57600080fd5b610986600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d1565b6040518082815260200191505060405180910390f35b34156109a757600080fd5b6109af612858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fc57600080fd5b610ab0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061287d565b6040518082815260200191505060405180910390f35b60006002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515610bd257600080fd5b5050604051805190509050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680610d3757508573ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515610d1657600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015610d435750874311155b8015610db057508a610dad600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000205484612c29565b11155b1515610dbb57600080fd5b610dc98c8c8c8c8a87612c47565b610e2b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000205483612c29565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e868e02811515610eb857fe5b048a33604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b6000600230888888888888604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af115156110bd57600080fd5b50506040518051905090506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8587878787878733604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a150505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b60006002308b8b8b8b8b8b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561135e57600080fd5b5050604051805190509050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806114c357503373ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115156114a257600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b15156114ce57600080fd5b88600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b08a8a8a8a8a8a338b8b8b604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019a505050505050505050505060405180910390a150505050505050505050565b80600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116c357600080fd5b611733600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af19250505015156117d457600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56760003383600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a150565b60008273ffffffffffffffffffffffffffffffffffffffff1614156118f357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156119c957600080fd5b5af115156119d657600080fd5b5050506040518051905015156119eb57600080fd5b611a71600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612c29565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b6000806002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515611d2557600080fd5b5050604051805190509050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008260001916600019168152602001908152602001600020549150509a9950505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1a57600080fd5b600354811115611e2957600080fd5b8060038190555050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e9457600080fd5b600554811080611ea5575060045481115b15611eaf57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611f7e575082611f7b8e8e8e8e8e8e8e8e8e8e61287d565b10155b1515611f8d5760009050611f92565b600190505b9c9b505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a257600080fd5b6004548111806120b3575060055481105b156120bd57600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212257600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008273ffffffffffffffffffffffffffffffffffffffff16141561218957600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561221257600080fd5b612298600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156123ba57600080fd5b5af115156123c757600080fd5b5050506040518051905015156123dc57600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60045481565b6125a8600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612c29565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d760003334600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806002308f8f8f8f8f8f604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561298d57600080fd5b5050604051805190509250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff1680612af257508773ffffffffffffffffffffffffffffffffffffffff1660018460405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515612ad157600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015612afe5750894311155b1515612b0d5760009350612c18565b612b6f8d600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020546133a6565b91508a612bf8600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6133bf565b811515612c0157fe5b04905080821015612c1457819350612c18565b8093505b5050509a9950505050505050505050565b6000808284019050838110151515612c3d57fe5b8091505092915050565b600080600080670de0b6b3a7640000612c62866003546133bf565b811515612c6b57fe5b049350670de0b6b3a7640000612c83866004546133bf565b811515612c8c57fe5b049250600091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612de357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbd0519876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612d9157600080fd5b5af11515612d9e57600080fd5b5050506040518051905090506001811415612dd557670de0b6b3a7640000612dc8866005546133bf565b811515612dd157fe5b0491505b6002811415612de2578291505b5b612e72600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e6d8786612c29565b6133a6565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8a600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f85612f7f8886612c29565b876133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c4600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bf6130b98787612c29565b856133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613200600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a6131f18a896133bf565b8115156131fa57fe5b046133a6565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331a600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a61330b8a896133bf565b81151561331457fe5b04612c29565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050505050565b60008282111515156133b457fe5b818303905092915050565b600080828402905060008414806133e057508284828115156133dd57fe5b04145b15156133e857fe5b80915050929150505600a165627a7a723058203c9c2c2b69e0aacdb48368e242a9d53c06d54a4a9ab509c4269b1f898b2d364b0029", + "updated_at": 1522264006874, + "source_map": "196:8564:1:-;;;1660:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:6;1802:5;;:14;;;;;;;;;;;;;;;;;;1839:11;1826:10;;:24;;;;;;;;;;;;;;;;;;1880:18;1860:17;;:38;;;;;;;;;;;;;;;;;;1918:8;1908:7;:18;;;;1946:8;1936:7;:18;;;;1976:10;1964:9;:22;;;;1660:333;;;;;;196:8564;;;;;;", + "source_map_runtime": "196:8564:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:5;;;4729:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:278;;;;;;;;;;;;;;;;;;;;;;;;;;3447:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7895:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2448:152;;;;;;;;;;;;;;;;;;;;;;;;;;430:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:188;;;;;;;;;;;;;;;;;;;;;;;;;;280:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6729:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:176;;;;;;;;;;;;;;;;;;;;;;;;;;2038:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:357;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;484:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:175;;;;;;2152:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;348:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4259:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;234:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7178:711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:810;4947:12;4962:72;4969:4;4975:8;4985:9;4996;5007:10;5019:7;5028:5;4962:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4947:87;;5064:6;:12;5071:4;5064:12;;;;;;;;;;;;;;;:18;5077:4;5064:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;;;;5153:4;5086:71;;:63;5137:4;5096:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5143:1;5145;5147;5086:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;5064:93;5063:134;;;;;5190:7;5174:12;:23;;5063:134;:202;;;;;5256:9;5213:39;5221:10;:16;5232:4;5221:16;;;;;;;;;;;;;;;:22;5238:4;5221:22;;;;;;;;;;;;;;;;;;5245:6;5213:7;:39::i;:::-;:52;;5063:202;5048:227;5044:238;;;5277:5;;;5044:238;5292:71;5306:8;5316:9;5327;5338:10;5350:4;5356:6;5292:13;:71::i;:::-;5398:39;5406:10;:16;5417:4;5406:16;;;;;;;;;;;;;;;:22;5423:4;5406:22;;;;;;;;;;;;;;;;;;5430:6;5398:7;:39::i;:::-;5373:10;:16;5384:4;5373:16;;;;;;;;;;;;;;;:22;5390:4;5373:22;;;;;;;;;;;;;;;;;:64;;;;5447:85;5453:8;5463:6;5471:9;5504;5495:6;5482:10;:19;:31;;;;;;;;5515:4;5521:10;5447:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:810;;;;;;;;;;;;:::o;4380:343::-;4501:12;4516:72;4523:4;4529:8;4539:9;4550;4561:10;4573:7;4582:5;4516:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:87;;4625:4;4598:6;:18;4605:10;4598:18;;;;;;;;;;;;;;;:24;4617:4;4598:24;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4639:77;4645:8;4655:9;4666;4677:10;4689:7;4698:5;4705:10;4639:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:343;;;;;;;:::o;935:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8230:528::-;8388:12;8403:72;8410:4;8416:8;8426:9;8437;8448:10;8460:7;8469:5;8403:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8388:87;;8491:6;:18;8498:10;8491:18;;;;;;;;;;;;;;;:24;8510:4;8491:24;;;;;;;;;;;;;;;;;;;;;;;;;;;:105;;;;8586:10;8519:77;;:63;8570:4;8529:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8576:1;8578;8580;8519:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;8491:105;8489:108;8485:119;;;8599:5;;;8485:119;8645:9;8614:10;:22;8625:10;8614:22;;;;;;;;;;;;;;;:28;8637:4;8614:28;;;;;;;;;;;;;;;;;:40;;;;8664:87;8671:8;8681:9;8692;8703:10;8715:7;8724:5;8731:10;8743:1;8746;8749;8664:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:528;;;;;;;;;;:::o;3163:278::-;3232:6;3208;:9;3215:1;3208:9;;;;;;;;;;;;;:21;3218:10;3208:21;;;;;;;;;;;;;;;;:30;3204:41;;;3240:5;;;3204:41;3279:38;3287:6;:9;3294:1;3287:9;;;;;;;;;;;;;:21;3297:10;3287:21;;;;;;;;;;;;;;;;3310:6;3279:7;:38::i;:::-;3255:6;:9;3262:1;3255:9;;;;;;;;;;;;;:21;3265:10;3255:21;;;;;;;;;;;;;;;:62;;;;3332:10;:15;;3354:6;3332:31;;;;;;;;;;;;;;;;;3331:32;3327:43;;;3365:5;;;3327:43;3380:54;3389:1;3392:10;3404:6;3412;:9;3419:1;3412:9;;;;;;;;;;;;;:21;3422:10;3412:21;;;;;;;;;;;;;;;;3380:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:278;:::o;3447:443::-;3651:1;3644:5;:8;;;3640:19;;;3654:5;;;3640:19;3680:5;3674:25;;;3700:10;3712:4;3718:6;3674:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3673:52;3669:63;;;3727:5;;;3669:63;3770:42;3778:6;:13;3785:5;3778:13;;;;;;;;;;;;;;;:25;3792:10;3778:25;;;;;;;;;;;;;;;;3805:6;3770:7;:42::i;:::-;3742:6;:13;3749:5;3742:13;;;;;;;;;;;;;;;:25;3756:10;3742:25;;;;;;;;;;;;;;;:70;;;;3822:61;3830:5;3837:10;3849:6;3857;:13;3864:5;3857:13;;;;;;;;;;;;;;;:25;3871:10;3857:25;;;;;;;;;;;;;;;;3822:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3447:443;;:::o;7895:329::-;8075:4;8091:12;8106:72;8113:4;8119:8;8129:9;8140;8151:10;8163:7;8172:5;8106:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8091:87;;8195:10;:16;8206:4;8195:16;;;;;;;;;;;;;;;:22;8212:4;8195:22;;;;;;;;;;;;;;;;;;8188:29;;7895:329;;;;;;;;;;;;;:::o;594:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2448:152::-;2514:5;;;;;;;;;;;2500:19;;:10;:19;;;;2496:30;;;2521:5;;;2496:30;2551:7;;2540:8;:18;2536:29;;;2560:5;;;2536:29;2585:8;2575:7;:18;;;;2448:152;:::o;430:19::-;;;;:::o;2788:188::-;2858:5;;;;;;;;;;;2844:19;;:10;:19;;;;2840:30;;;2865:5;;;2840:30;2897:9;;2884:10;:22;:46;;;;2923:7;;2910:10;:20;2884:46;2880:57;;;2932:5;;;2880:57;2959:10;2947:9;:22;;;;2788:188;:::o;280:25::-;;;;;;;;;;;;;:::o;6729:443::-;6935:4;6998:6;6970;:16;6977:8;6970:16;;;;;;;;;;;;;;;:24;6987:6;6970:24;;;;;;;;;;;;;;;;:34;;:150;;;;;7114:6;7020:90;7036:8;7046:9;7057;7068:10;7080:7;7089:5;7096:4;7102:1;7105;7108;7020:15;:90::i;:::-;:100;;6970:150;6955:175;6951:193;;;7139:5;7132:12;;;;6951:193;7161:4;7154:11;;6729:443;;;;;;;;;;;;;;;:::o;2314:128::-;2389:5;;;;;;;;;;;2375:19;;:10;:19;;;;2371:30;;;2396:5;;;2371:30;2424:11;2411:10;;:24;;;;;;;;;;;;;;;;;;2314:128;:::o;538:21::-;;;;:::o;2606:176::-;2672:5;;;;;;;;;;;2658:19;;:10;:19;;;;2654:30;;;2679:5;;;2654:30;2709:7;;2698:8;:18;:42;;;;2731:9;;2720:8;:20;2698:42;2694:53;;;2742:5;;;2694:53;2767:8;2757:7;:18;;;;2606:176;:::o;2038:108::-;2103:5;;;;;;;;;;;2089:19;;:10;:19;;;;2085:30;;;2110:5;;;2085:30;2133:6;2125:5;;:14;;;;;;;;;;;;;;;;;;2038:108;:::o;3896:357::-;3968:1;3961:5;:8;;;3957:19;;;3971:5;;;3957:19;4018:6;3990;:13;3997:5;3990:13;;;;;;;;;;;;;;;:25;4004:10;3990:25;;;;;;;;;;;;;;;;:34;3986:45;;;4026:5;;;3986:45;4069:42;4077:6;:13;4084:5;4077:13;;;;;;;;;;;;;;;:25;4091:10;4077:25;;;;;;;;;;;;;;;;4104:6;4069:7;:42::i;:::-;4041:6;:13;4048:5;4041:13;;;;;;;;;;;;;;;:25;4055:10;4041:25;;;;;;;;;;;;;;;:70;;;;4132:5;4126:21;;;4148:10;4160:6;4126:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4125:42;4121:53;;;4169:5;;;4121:53;4184:62;4193:5;4200:10;4212:6;4220;:13;4227:5;4220:13;;;;;;;;;;;;;;;:25;4234:10;4220:25;;;;;;;;;;;;;;;;4184:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:357;;:::o;742:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;484:19::-;;;;:::o;2982:175::-;3043:41;3051:6;:9;3058:1;3051:9;;;;;;;;;;;;;:21;3061:10;3051:21;;;;;;;;;;;;;;;;3074:9;3043:7;:41::i;:::-;3019:6;:9;3026:1;3019:9;;;;;;;;;;;;;:21;3029:10;3019:21;;;;;;;;;;;;;;;:65;;;;3094:56;3102:1;3105:10;3117:9;3128:6;:9;3135:1;3128:9;;;;;;;;;;;;;:21;3138:10;3128:21;;;;;;;;;;;;;;;;3094:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:175::o;2152:156::-;2241:5;;;;;;;;;;;2227:19;;:10;:19;;;;2223:30;;;2248:5;;;2223:30;2283:18;2263:17;;:38;;;;;;;;;;;;;;;;;;2152:156;:::o;348:32::-;;;;;;;;;;;;;:::o;4259:115::-;4325:4;4348:6;:13;4355:5;4348:13;;;;;;;;;;;;;;;:19;4362:4;4348:19;;;;;;;;;;;;;;;;4341:26;;4259:115;;;;:::o;234:20::-;;;;;;;;;;;;;:::o;7178:711::-;7361:4;7377:12;7657:15;7727;7392:72;7399:4;7405:8;7415:9;7426;7437:10;7449:7;7458:5;7392:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7377:87;;7494:6;:12;7501:4;7494:12;;;;;;;;;;;;;;;:18;7507:4;7494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;;;;7583:4;7516:71;;:63;7567:4;7526:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:1;7575;7577;7516:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;7494:93;7493:134;;;;;7620:7;7604:12;:23;;7493:134;7478:159;7474:173;;;7646:1;7639:8;;;;7474:173;7675:42;7683:9;7694:10;:16;7705:4;7694:16;;;;;;;;;;;;;;;:22;7711:4;7694:22;;;;;;;;;;;;;;;;;;7675:7;:42::i;:::-;7657:60;;7791:10;7745:43;7753:6;:17;7760:9;7753:17;;;;;;;;;;;;;;;:23;7771:4;7753:23;;;;;;;;;;;;;;;;7778:9;7745:7;:43::i;:::-;:56;;;;;;;;7727:74;;7826:10;7815;:21;7811:44;;;7845:10;7838:17;;;;7811:44;7872:10;7865:17;;7178:711;;;;;;;;;;;;;;;;:::o;536:166:3:-;616:7;639:6;652:1;648;:5;639:14;;675:1;670;:6;;663:14;;;;;;694:1;687:8;;536:166;;;;;:::o;5545:1178:1:-;5683:16;5748;5813:18;5889:17;5730:7;5702:24;5710:6;5718:7;;5702;:24::i;:::-;:36;;;;;;;;5683:55;;5795:7;5767:24;5775:6;5783:7;;5767;:24::i;:::-;:36;;;;;;;;5748:55;;5834:1;5813:22;;5870:3;5849:17;;;;;;;;;;;:24;;;;5845:277;;;5923:17;;;;;;;;;;;5909:45;;;5955:4;5909:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5889:71;;5992:1;5978:12;:15;5974:75;;;6041:7;6011:26;6019:6;6027:9;;6011:7;:26::i;:::-;:38;;;;;;;;5995:54;;5974:75;6081:1;6067:12;:15;6063:48;;;6100:11;6084:27;;6063:48;5845:277;6162:67;6170:6;:16;6177:8;6170:16;;;;;;;;;;;;;;;:28;6187:10;6170:28;;;;;;;;;;;;;;;;6200;6208:6;6216:11;6200:7;:28::i;:::-;6162:7;:67::i;:::-;6131:6;:16;6138:8;6131:16;;;;;;;;;;;;;;;:28;6148:10;6131:28;;;;;;;;;;;;;;;:98;;;;6264:85;6272:6;:16;6279:8;6272:16;;;;;;;;;;;;;;;:22;6289:4;6272:22;;;;;;;;;;;;;;;;6296:52;6304:30;6312:6;6320:13;6304:7;:30::i;:::-;6336:11;6296:7;:52::i;:::-;6264:7;:85::i;:::-;6239:6;:16;6246:8;6239:16;;;;;;;;;;;;;;;:22;6256:4;6239:22;;;;;;;;;;;;;;;:110;;;;6390:96;6398:6;:16;6405:8;6398:16;;;;;;;;;;;;;;;:28;6415:10;;;;;;;;;;;6398:28;;;;;;;;;;;;;;;;6428:57;6436:33;6444:11;6457;6436:7;:33::i;:::-;6471:13;6428:7;:57::i;:::-;6390:7;:96::i;:::-;6359:6;:16;6366:8;6359:16;;;;;;;;;;;;;;;:28;6376:10;;;;;;;;;;;6359:28;;;;;;;;;;;;;;;:127;;;;6522:73;6530:6;:17;6537:9;6530:17;;;;;;;;;;;;;;;:23;6548:4;6530:23;;;;;;;;;;;;;;;;6585:9;6555:27;6563:10;6575:6;6555:7;:27::i;:::-;:39;;;;;;;;6522:7;:73::i;:::-;6496:6;:17;6503:9;6496:17;;;;;;;;;;;;;;;:23;6514:4;6496:23;;;;;;;;;;;;;;;:99;;;;6637:79;6645:6;:17;6652:9;6645:17;;;;;;;;;;;;;;;:29;6663:10;6645:29;;;;;;;;;;;;;;;;6706:9;6676:27;6684:10;6696:6;6676:7;:27::i;:::-;:39;;;;;;;;6637:7;:79::i;:::-;6605:6;:17;6612:9;6605:17;;;;;;;;;;;;;;;:29;6623:10;6605:29;;;;;;;;;;;;;;;:111;;;;5545:1178;;;;;;;;;;:::o;384:146:3:-;464:7;499:1;494;:6;;487:14;;;;;;522:1;518;:5;511:12;;384:146;;;;:::o;50:180::-;130:7;153:6;166:1;162;:5;153:14;;189:1;184;:6;:20;;;;203:1;198;194;:5;;;;;;;;:10;184:20;177:28;;;;;;222:1;215:8;;50:180;;;;;:::o", + "sources": [ + "AccountLevels.sol", + "EtherDelta.sol", + "tokens/Token/Token.sol", + "utils/SafeMath/SafeMath.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Exchange.json b/packages/0x.js/test/artifacts/Exchange.json new file mode 100644 index 000000000..8e01d7c13 --- /dev/null +++ b/packages/0x.js/test/artifacts/Exchange.json @@ -0,0 +1,634 @@ +{ + "contract_name": "Exchange", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x50d9d5de7ea3f16b7e655c3ed280d1d7ff50422b4fc42ae609422eab5028d2ca", + "source_tree_hash": "0xed7525b123061d69ae37377fac4a2f71e09eaa0e91a9bcf12359a60cd61aadac", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "isRoundingError", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "filled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "cancelled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "fillOrdersUpTo", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "cancelTakerTokenAmount", + "type": "uint256" + } + ], + "name": "cancelOrder", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZRX_TOKEN_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrKillOrders", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrKillOrder", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "getUnavailableTakerTokenAmount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "signer", + "type": "address" + }, + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "getPartialAmount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_TRANSFER_PROXY_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrders", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "cancelTakerTokenAmounts", + "type": "uint256[]" + } + ], + "name": "batchCancelOrders", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrder", + "outputs": [ + { + "name": "filledTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + } + ], + "name": "getOrderHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EXTERNAL_QUERY_GAS_LIMIT", + "outputs": [ + { + "name": "", + "type": "uint16" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_zrxToken", + "type": "address" + }, + { + "name": "_tokenTransferProxy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidMakerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidTakerFee", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "cancelledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "errorId", + "type": "uint8" + }, + { + "indexed": true, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogError", + "type": "event" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b604051604080612c2583398101604052808051906020019091908051906020019091905050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050612b5f806100c66000396000f3006060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee14610101578063288cdc911461014e5780632ac1262214610189578063363349be146101c4578063394c21e7146103be5780633b30ba591461044d5780634f150787146104a2578063741bcc93146106b45780637e9abb50146107555780638163681e1461079057806398024a8b14610814578063add1cbc51461085d578063b7b2c7d6146108b2578063baa0181d14610acf578063bc61394a14610c21578063cfc4d0ec14610ce1578063f06bbf7514610d6f578063ffa1ad7414610da0575b600080fd5b341561010c57600080fd5b6101346004808035906020019091908035906020019091908035906020019091905050610e2e565b604051808215151515815260200191505060405180910390f35b341561015957600080fd5b610173600480803560001916906020019091905050610e86565b6040518082815260200191505060405180910390f35b341561019457600080fd5b6101ae600480803560001916906020019091905050610e9e565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6103a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561024a57848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610205565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102c657848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610281565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610eb6565b6040518082815260200191505060405180910390f35b34156103c957600080fd5b6104376004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190505061101b565b6040518082815260200191505060405180910390f35b341561045857600080fd5b610460611503565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104ad57600080fd5b6106b260048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561052857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104e3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156105a457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061055f565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611528565b005b34156106bf57600080fd5b6107536004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115e5565b005b341561076057600080fd5b61077a60048080356000191690602001909190505061160a565b6040518082815260200191505060405180910390f35b341561079b57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611653565b604051808215151515815260200191505060405180910390f35b341561081f57600080fd5b610847600480803590602001909190803590602001909190803590602001909190505061174d565b6040518082815260200191505060405180910390f35b341561086857600080fd5b61087061176b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108bd57600080fd5b610acd60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561093857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108f3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109b457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061096f565b505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611791565b005b3415610ada57600080fd5b610c1f60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b5557848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610b10565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610bd157848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b8c565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611851565b005b3415610c2c57600080fd5b610ccb6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118c4565b6040518082815260200191505060405180910390f35b3415610cec57600080fd5b610d516004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091905050612064565b60405180826000191660001916815260200191505060405180910390f35b3415610d7a57600080fd5b610d8261230f565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610dab57600080fd5b610db3612315565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df3578082015181840152602081019050610dd8565b50505050905090810190601f168015610e205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600084801515610e3d57fe5b86850991506000821415610e545760009250610e7d565b610e73610e6483620f424061234e565b610e6e888761234e565b612381565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b6000806000809150600090505b895181101561100b57896000815181101515610edb57fe5b906020019060200201516003600581101515610ef357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610f1c57fe5b906020019060200201516003600581101515610f3457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f5b57600080fd5b610fef82610fea8c84815181101515610f7057fe5b906020019060200201518c85815181101515610f8857fe5b90602001906020020151610f9c8d8861239c565b8c8c88815181101515610fab57fe5b906020019060200201518c89815181101515610fc357fe5b906020019060200201518c8a815181101515610fdb57fe5b906020019060200201516118c4565b6123b5565b915087821415610ffe5761100b565b8080600101915050610ec3565b8192505050979650505050505050565b6000611025612a67565b6000806101606040519081016040528088600060058110151561104457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561107357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860026005811015156110a257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110d157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600460058110151561110057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561112f57fe5b6020020151815260200187600160068110151561114857fe5b6020020151815260200187600260068110151561116157fe5b6020020151815260200187600360068110151561117a57fe5b6020020151815260200187600460068110151561119357fe5b602002015181526020016111a78989612064565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111ee57600080fd5b60008360a00151118015611206575060008360c00151115b80156112125750600085115b151561121d57600080fd5b8261012001514210151561127a57826101400151600019166000600381111561124257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b6112958360c0015161129085610140015161160a565b61239c565b91506112a185836123d3565b905060008114156112fb5782610140015160001916600160038111156112c357fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b611325600360008561014001516000191660001916815260200190815260200160002054826123b5565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b045871318660400151876060015161145d878a60c001518b60a0015161174d565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b86518110156115dc576115cf878281518110151561154857fe5b90602001906020020151878381518110151561156057fe5b90602001906020020151878481518110151561157857fe5b90602001906020020151878581518110151561159057fe5b9060200190602002015187868151811015156115a857fe5b9060200190602002015187878151811015156115c057fe5b906020019060200201516115e5565b808060010191505061152e565b50505050505050565b836115f687878760008888886118c4565b14151561160257600080fd5b505050505050565b600061164c60026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123b5565b9050919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1151561170b57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b600061176261175c858461234e565b84612381565b90509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b87518110156118475761183988828151811015156117b157fe5b9060200190602002015188838151811015156117c957fe5b9060200190602002015188848151811015156117e157fe5b906020019060200201518888868151811015156117fa57fe5b90602001906020020151888781518110151561181257fe5b90602001906020020151888881518110151561182a57fe5b906020019060200201516118c4565b508080600101915050611797565b5050505050505050565b60008090505b83518110156118be576118b0848281518110151561187157fe5b90602001906020020151848381518110151561188957fe5b9060200190602002015184848151811015156118a157fe5b9060200190602002015161101b565b508080600101915050611857565b50505050565b60006118ce612a67565b600080600080610160604051908101604052808e60006005811015156118f057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561191f57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561194e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561197d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119ac57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119db57fe5b602002015181526020018d60016006811015156119f457fe5b602002015181526020018d6002600681101515611a0d57fe5b602002015181526020018d6003600681101515611a2657fe5b602002015181526020018d6004600681101515611a3f57fe5b60200201518152602001611a538f8f612064565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611aca57503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611ad557600080fd5b60008560a00151118015611aed575060008560c00151115b8015611af9575060008b115b1515611b0457600080fd5b611b1a85600001518661014001518b8b8b611653565b1515611b2557600080fd5b84610120015142101515611b82578461014001516000191660006003811115611b4a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611b9d8560c00151611b9887610140015161160a565b61239c565b9350611ba98b856123d3565b95506000861415611c03578461014001516000191660016003811115611bcb57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611c16868660c001518760a00151610e2e565b15611c6a578461014001516000191660026003811115611c3257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b89158015611c7f5750611c7d85876123ec565b155b15611cd25784610140015160001916600380811115611c9a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611ce5868660c001518760a0015161174d565b9250611d11600260008761014001516000191660001916815260200190815260200160002054876123b5565b600260008761014001516000191660001916815260200190815260200160002081905550611d4985604001518660000151338661273c565b1515611d5457600080fd5b611d6885606001513387600001518961273c565b1515611d7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e725760008560e001511115611e1057611dcd868660c001518760e0015161174d565b9150611e046000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000015187608001518561273c565b1515611e0f57600080fd5b5b60008561010001511115611e7157611e32868660c0015187610100015161174d565b9050611e656000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387608001518461273c565b1515611e7057600080fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561207657fe5b602002015184600160058110151561208a57fe5b602002015185600260058110151561209e57fe5b60200201518660036005811015156120b257fe5b60200201518760046005811015156120c657fe5b60200201518760006006811015156120da57fe5b60200201518860016006811015156120ee57fe5b602002015189600260068110151561210257fe5b60200201518a600360068110151561211657fe5b60200201518b600460068110151561212a57fe5b60200201518c600560068110151561213e57fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c505050505050505050505050506040518091039020905092915050565b61138781565b6040805190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6000808284029050600084148061236f575082848281151561236c57fe5b04145b151561237757fe5b8091505092915050565b600080828481151561238f57fe5b0490508091505092915050565b60008282111515156123aa57fe5b818303905092915050565b60008082840190508381101515156123c957fe5b8091505092915050565b60008183106123e257816123e4565b825b905092915050565b60008060008060008060008060003397506124108a8c60c001518d60a0015161174d565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126bd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff161495506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff1614945061250b8a8c60c001518d60e0015161174d565b93506125218a8c60c001518d610100015161174d565b92508561252e5783612539565b61253887856123b5565b5b9150846125465782612551565b6125508a846123b5565b5b9050816125836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161288b565b10806125bc5750816125ba6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161294e565b105b806125f05750806125ee6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61288b565b105b806126245750806126226000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61294e565b105b15612632576000985061272e565b8515801561266b57508661264e8c604001518d6000015161288b565b108061266a5750866126688c604001518d6000015161294e565b105b5b15612679576000985061272e565b841580156126aa5750896126918c606001518a61288b565b10806126a95750896126a78c606001518a61294e565b105b5b156126b8576000985061272e565b612729565b866126d08c604001518d6000015161288b565b10806126ec5750866126ea8c604001518d6000015161294e565b105b806127035750896127018c606001518a61288b565b105b8061271a5750896127188c606001518a61294e565b105b15612728576000985061272e565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561286a57600080fd5b5af1151561287757600080fd5b505050604051805190509050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561292e57600080fd5b87f1151561293b57600080fd5b5050505060405180519050905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a4757600080fd5b87f11515612a5457600080fd5b5050505060405180519050905092915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000801916815250905600a165627a7a72305820b801c0ef623f52d9211fad0d14f56dea047af15d059f311166c24afd65803a320029", + "runtime_bytecode": "0x6060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee14610101578063288cdc911461014e5780632ac1262214610189578063363349be146101c4578063394c21e7146103be5780633b30ba591461044d5780634f150787146104a2578063741bcc93146106b45780637e9abb50146107555780638163681e1461079057806398024a8b14610814578063add1cbc51461085d578063b7b2c7d6146108b2578063baa0181d14610acf578063bc61394a14610c21578063cfc4d0ec14610ce1578063f06bbf7514610d6f578063ffa1ad7414610da0575b600080fd5b341561010c57600080fd5b6101346004808035906020019091908035906020019091908035906020019091905050610e2e565b604051808215151515815260200191505060405180910390f35b341561015957600080fd5b610173600480803560001916906020019091905050610e86565b6040518082815260200191505060405180910390f35b341561019457600080fd5b6101ae600480803560001916906020019091905050610e9e565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6103a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561024a57848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610205565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102c657848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610281565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610eb6565b6040518082815260200191505060405180910390f35b34156103c957600080fd5b6104376004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190505061101b565b6040518082815260200191505060405180910390f35b341561045857600080fd5b610460611503565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104ad57600080fd5b6106b260048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561052857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104e3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156105a457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061055f565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611528565b005b34156106bf57600080fd5b6107536004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115e5565b005b341561076057600080fd5b61077a60048080356000191690602001909190505061160a565b6040518082815260200191505060405180910390f35b341561079b57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611653565b604051808215151515815260200191505060405180910390f35b341561081f57600080fd5b610847600480803590602001909190803590602001909190803590602001909190505061174d565b6040518082815260200191505060405180910390f35b341561086857600080fd5b61087061176b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108bd57600080fd5b610acd60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561093857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108f3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109b457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061096f565b505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611791565b005b3415610ada57600080fd5b610c1f60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b5557848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610b10565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610bd157848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b8c565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611851565b005b3415610c2c57600080fd5b610ccb6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118c4565b6040518082815260200191505060405180910390f35b3415610cec57600080fd5b610d516004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091905050612064565b60405180826000191660001916815260200191505060405180910390f35b3415610d7a57600080fd5b610d8261230f565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610dab57600080fd5b610db3612315565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df3578082015181840152602081019050610dd8565b50505050905090810190601f168015610e205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600084801515610e3d57fe5b86850991506000821415610e545760009250610e7d565b610e73610e6483620f424061234e565b610e6e888761234e565b612381565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b6000806000809150600090505b895181101561100b57896000815181101515610edb57fe5b906020019060200201516003600581101515610ef357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610f1c57fe5b906020019060200201516003600581101515610f3457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f5b57600080fd5b610fef82610fea8c84815181101515610f7057fe5b906020019060200201518c85815181101515610f8857fe5b90602001906020020151610f9c8d8861239c565b8c8c88815181101515610fab57fe5b906020019060200201518c89815181101515610fc357fe5b906020019060200201518c8a815181101515610fdb57fe5b906020019060200201516118c4565b6123b5565b915087821415610ffe5761100b565b8080600101915050610ec3565b8192505050979650505050505050565b6000611025612a67565b6000806101606040519081016040528088600060058110151561104457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561107357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860026005811015156110a257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110d157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600460058110151561110057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561112f57fe5b6020020151815260200187600160068110151561114857fe5b6020020151815260200187600260068110151561116157fe5b6020020151815260200187600360068110151561117a57fe5b6020020151815260200187600460068110151561119357fe5b602002015181526020016111a78989612064565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111ee57600080fd5b60008360a00151118015611206575060008360c00151115b80156112125750600085115b151561121d57600080fd5b8261012001514210151561127a57826101400151600019166000600381111561124257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b6112958360c0015161129085610140015161160a565b61239c565b91506112a185836123d3565b905060008114156112fb5782610140015160001916600160038111156112c357fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b611325600360008561014001516000191660001916815260200190815260200160002054826123b5565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b045871318660400151876060015161145d878a60c001518b60a0015161174d565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b86518110156115dc576115cf878281518110151561154857fe5b90602001906020020151878381518110151561156057fe5b90602001906020020151878481518110151561157857fe5b90602001906020020151878581518110151561159057fe5b9060200190602002015187868151811015156115a857fe5b9060200190602002015187878151811015156115c057fe5b906020019060200201516115e5565b808060010191505061152e565b50505050505050565b836115f687878760008888886118c4565b14151561160257600080fd5b505050505050565b600061164c60026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123b5565b9050919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1151561170b57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b600061176261175c858461234e565b84612381565b90509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b87518110156118475761183988828151811015156117b157fe5b9060200190602002015188838151811015156117c957fe5b9060200190602002015188848151811015156117e157fe5b906020019060200201518888868151811015156117fa57fe5b90602001906020020151888781518110151561181257fe5b90602001906020020151888881518110151561182a57fe5b906020019060200201516118c4565b508080600101915050611797565b5050505050505050565b60008090505b83518110156118be576118b0848281518110151561187157fe5b90602001906020020151848381518110151561188957fe5b9060200190602002015184848151811015156118a157fe5b9060200190602002015161101b565b508080600101915050611857565b50505050565b60006118ce612a67565b600080600080610160604051908101604052808e60006005811015156118f057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561191f57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561194e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561197d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119ac57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119db57fe5b602002015181526020018d60016006811015156119f457fe5b602002015181526020018d6002600681101515611a0d57fe5b602002015181526020018d6003600681101515611a2657fe5b602002015181526020018d6004600681101515611a3f57fe5b60200201518152602001611a538f8f612064565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611aca57503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611ad557600080fd5b60008560a00151118015611aed575060008560c00151115b8015611af9575060008b115b1515611b0457600080fd5b611b1a85600001518661014001518b8b8b611653565b1515611b2557600080fd5b84610120015142101515611b82578461014001516000191660006003811115611b4a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611b9d8560c00151611b9887610140015161160a565b61239c565b9350611ba98b856123d3565b95506000861415611c03578461014001516000191660016003811115611bcb57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611c16868660c001518760a00151610e2e565b15611c6a578461014001516000191660026003811115611c3257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b89158015611c7f5750611c7d85876123ec565b155b15611cd25784610140015160001916600380811115611c9a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611ce5868660c001518760a0015161174d565b9250611d11600260008761014001516000191660001916815260200190815260200160002054876123b5565b600260008761014001516000191660001916815260200190815260200160002081905550611d4985604001518660000151338661273c565b1515611d5457600080fd5b611d6885606001513387600001518961273c565b1515611d7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e725760008560e001511115611e1057611dcd868660c001518760e0015161174d565b9150611e046000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000015187608001518561273c565b1515611e0f57600080fd5b5b60008561010001511115611e7157611e32868660c0015187610100015161174d565b9050611e656000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387608001518461273c565b1515611e7057600080fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561207657fe5b602002015184600160058110151561208a57fe5b602002015185600260058110151561209e57fe5b60200201518660036005811015156120b257fe5b60200201518760046005811015156120c657fe5b60200201518760006006811015156120da57fe5b60200201518860016006811015156120ee57fe5b602002015189600260068110151561210257fe5b60200201518a600360068110151561211657fe5b60200201518b600460068110151561212a57fe5b60200201518c600560068110151561213e57fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c505050505050505050505050506040518091039020905092915050565b61138781565b6040805190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6000808284029050600084148061236f575082848281151561236c57fe5b04145b151561237757fe5b8091505092915050565b600080828481151561238f57fe5b0490508091505092915050565b60008282111515156123aa57fe5b818303905092915050565b60008082840190508381101515156123c957fe5b8091505092915050565b60008183106123e257816123e4565b825b905092915050565b60008060008060008060008060003397506124108a8c60c001518d60a0015161174d565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126bd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff161495506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff1614945061250b8a8c60c001518d60e0015161174d565b93506125218a8c60c001518d610100015161174d565b92508561252e5783612539565b61253887856123b5565b5b9150846125465782612551565b6125508a846123b5565b5b9050816125836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161288b565b10806125bc5750816125ba6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161294e565b105b806125f05750806125ee6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61288b565b105b806126245750806126226000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61294e565b105b15612632576000985061272e565b8515801561266b57508661264e8c604001518d6000015161288b565b108061266a5750866126688c604001518d6000015161294e565b105b5b15612679576000985061272e565b841580156126aa5750896126918c606001518a61288b565b10806126a95750896126a78c606001518a61294e565b105b5b156126b8576000985061272e565b612729565b866126d08c604001518d6000015161288b565b10806126ec5750866126ea8c604001518d6000015161294e565b105b806127035750896127018c606001518a61288b565b105b8061271a5750896127188c606001518a61294e565b105b15612728576000985061272e565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561286a57600080fd5b5af1151561287757600080fd5b505050604051805190509050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561292e57600080fd5b87f1151561293b57600080fd5b5050505060405180519050905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a4757600080fd5b87f11515612a5457600080fd5b5050505060405180519050905092915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000801916815250905600a165627a7a72305820b801c0ef623f52d9211fad0d14f56dea047af15d059f311166c24afd65803a320029", + "updated_at": 1522263980531, + "source_map": "995:22775:0:-;;;2959:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3056:9;3035:18;;:30;;;;;;;;;;;;;;;;;;3107:19;3075:29;;:51;;;;;;;;;;;;;;;;;;2959:174;;995:22775;;;;;;", + "source_map_runtime": "995:22775:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1736:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1781:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14311:989;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:1942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1565:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13062:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10862:419;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19208:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17487:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18783:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1604:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11912:619;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15658:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:4043;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16449:706;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1409:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:458;18197:4;18217:14;18347:30;18260:11;18234:38;;;;;;;18249:9;18241:6;18234:38;18217:55;;18299:1;18286:9;:14;18282:32;;;18309:5;18302:12;;;;18282:32;18380:98;18401:27;18409:9;18420:7;18401;:27::i;:::-;18442:26;18450:9;18461:6;18442:7;:26::i;:::-;18380:7;:98::i;:::-;18347:131;;18523:4;18495:25;:32;18488:39;;18076:458;;;;;;;;:::o;1736:39::-;;;;;;;;;;;;;;;;;:::o;1781:42::-;;;;;;;;;;;;;;;;;:::o;14311:989::-;14590:4;14610:27;14656:6;14640:1;14610:31;;14665:1;14656:10;;14651:604;14672:14;:21;14668:1;:25;14651:604;;;14746:14;14761:1;14746:17;;;;;;;;;;;;;;;;;;14764:1;14746:20;;;;;;;;;;;;;14722:44;;:14;14737:1;14722:17;;;;;;;;;;;;;;;;;;14740:1;14722:20;;;;;;;;;;;;;:44;;;14714:53;;;;;;;;14852:321;14860:22;14884:288;14911:14;14926:1;14911:17;;;;;;;;;;;;;;;;;;14946:11;14958:1;14946:14;;;;;;;;;;;;;;;;;;14978:53;14986:20;15008:22;14978:7;:53::i;:::-;15049:43;15110:1;15112;15110:4;;;;;;;;;;;;;;;;;;15132:1;15134;15132:4;;;;;;;;;;;;;;;;;;15154:1;15156;15154:4;;;;;;;;;;;;;;;;;;14884:9;:288::i;:::-;14852:7;:321::i;:::-;14827:346;;15217:20;15191:22;:46;15187:57;;;15239:5;;15187:57;14695:3;;;;;;;14651:604;;;15271:22;15264:29;;14311:989;;;;;;;;;;;:::o;8299:1942::-;8454:4;8474:18;;:::i;:::-;9334:30;9457;8495:512;;;;;;;;;8522:14;8537:1;8522:17;;;;;;;;;;;;;8495:512;;;;;;8560:14;8575:1;8560:17;;;;;;;;;;;;;8495:512;;;;;;8603:14;8618:1;8603:17;;;;;;;;;;;;;8495:512;;;;;;8646:14;8661:1;8646:17;;;;;;;;;;;;;8495:512;;;;;;8691:14;8706:1;8691:17;;;;;;;;;;;;;8495:512;;;;;;8740:11;8752:1;8740:14;;;;;;;;;;;;;8495:512;;;;8786:11;8798:1;8786:14;;;;;;;;;;;;;8495:512;;;;8824:11;8836:1;8824:14;;;;;;;;;;;;;8495:512;;;;8862:11;8874:1;8862:14;;;;;;;;;;;;;8495:512;;;;8916:11;8928:1;8916:14;;;;;;;;;;;;;8495:512;;;;8955:41;8968:14;8984:11;8955:12;:41::i;:::-;8495:512;;;;;;8474:533;;9041:10;9026:25;;:5;:11;;;:25;;;9018:34;;;;;;;;9095:1;9070:5;:22;;;:26;:56;;;;;9125:1;9100:5;:22;;;:26;9070:56;:86;;;;;9155:1;9130:22;:26;9070:86;9062:95;;;;;;;;9191:5;:30;;;9172:15;:49;;9168:156;;;9275:5;:15;;;9237:54;;;9252:20;9246:27;;;;;;;;9237:54;;;;;;;;;;;;9312:1;9305:8;;;;9168:156;9367:80;9375:5;:22;;;9399:47;9430:5;:15;;;9399:30;:47::i;:::-;9367:7;:80::i;:::-;9334:113;;9490:57;9497:22;9521:25;9490:6;:57::i;:::-;9457:90;;9590:1;9561:25;:30;9557:155;;;9663:5;:15;;;9607:72;;;9622:38;9616:45;;;;;;;;9607:72;;;;;;;;;;;;9700:1;9693:8;;;;9557:155;9751:62;9759:9;:26;9769:5;:15;;;9759:26;;;;;;;;;;;;;;;;;;9787:25;9751:7;:62::i;:::-;9722:9;:26;9732:5;:15;;;9722:26;;;;;;;;;;;;;;;;;:91;;;;10118:5;:16;;;10136:5;:16;;;10108:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9824:368;;;9872:5;:18;;;9824:368;;9847:5;:11;;;9824:368;;;9904:5;:16;;;9934:5;:16;;;9964:91;9981:25;10008:5;:22;;;10032:5;:22;;;9964:16;:91::i;:::-;10069:25;10167:5;:15;;;9824:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10209:25;10202:32;;8299:1942;;;;;;;;;:::o;1565:33::-;;;;;;;;;;;;;:::o;13062:512::-;13295:6;13304:1;13295:10;;13290:278;13311:14;:21;13307:1;:25;13290:278;;;13353:204;13386:14;13401:1;13386:17;;;;;;;;;;;;;;;;;;13421:11;13433:1;13421:14;;;;;;;;;;;;;;;;;;13453:21;13475:1;13453:24;;;;;;;;;;;;;;;;;;13495:1;13497;13495:4;;;;;;;;;;;;;;;;;;13517:1;13519;13517:4;;;;;;;;;;;;;;;;;;13539:1;13541;13539:4;;;;;;;;;;;;;;;;;;13353:15;:204::i;:::-;13334:3;;;;;;;13290:278;;;13062:512;;;;;;;:::o;10862:419::-;11253:20;11079:170;11102:14;11130:11;11155:20;11189:5;11208:1;11223;11238;11079:9;:170::i;:::-;:194;11071:203;;;;;;;;10862:419;;;;;;:::o;19208:190::-;19316:4;19343:48;19351:6;:17;19358:9;19351:17;;;;;;;;;;;;;;;;;;19370:9;:20;19380:9;19370:20;;;;;;;;;;;;;;;;;;19343:7;:48::i;:::-;19336:55;;19208:190;;;:::o;17487:350::-;17664:4;17701:129;17770:4;17724:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17789:1;17804;17819;17701:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17691:139;;:6;:139;;;17684:146;;17487:350;;;;;;;:::o;18783:204::-;18905:4;18932:48;18940:26;18948:9;18959:6;18940:7;:26::i;:::-;18968:11;18932:7;:48::i;:::-;18925:55;;18783:204;;;;;:::o;1604:44::-;;;;;;;;;;;;;:::o;11912:619::-;12197:6;12206:1;12197:10;;12192:333;12213:14;:21;12209:1;:25;12192:333;;;12255:259;12282:14;12297:1;12282:17;;;;;;;;;;;;;;;;;;12317:11;12329:1;12317:14;;;;;;;;;;;;;;;;;;12349:21;12371:1;12349:24;;;;;;;;;;;;;;;;;;12391:43;12452:1;12454;12452:4;;;;;;;;;;;;;;;;;;12474:1;12476;12474:4;;;;;;;;;;;;;;;;;;12496:1;12498;12496:4;;;;;;;;;;;;;;;;;;12255:9;:259::i;:::-;;12236:3;;;;;;;12192:333;;;11912:619;;;;;;;;:::o;15658:381::-;15828:6;15837:1;15828:10;;15823:210;15844:14;:21;15840:1;:25;15823:210;;;15886:136;15915:14;15930:1;15915:17;;;;;;;;;;;;;;;;;;15950:11;15962:1;15950:14;;;;;;;;;;;;;;;;;;15982:23;16006:1;15982:26;;;;;;;;;;;;;;;;;;15886:11;:136::i;:::-;;15867:3;;;;;;;15823:210;;;15658:381;;;;:::o;3838:4043::-;4120:27;4163:18;;:::i;:::-;5194:30;6015:27;6143:17;6170;4184:512;;;;;;;;;4211:14;4226:1;4211:17;;;;;;;;;;;;;4184:512;;;;;;4249:14;4264:1;4249:17;;;;;;;;;;;;;4184:512;;;;;;4292:14;4307:1;4292:17;;;;;;;;;;;;;4184:512;;;;;;4335:14;4350:1;4335:17;;;;;;;;;;;;;4184:512;;;;;;4380:14;4395:1;4380:17;;;;;;;;;;;;;4184:512;;;;;;4429:11;4441:1;4429:14;;;;;;;;;;;;;4184:512;;;;4475:11;4487:1;4475:14;;;;;;;;;;;;;4184:512;;;;4513:11;4525:1;4513:14;;;;;;;;;;;;;4184:512;;;;4551:11;4563:1;4551:14;;;;;;;;;;;;;4184:512;;;;4605:11;4617:1;4605:14;;;;;;;;;;;;;4184:512;;;;4644:41;4657:14;4673:11;4644:12;:41::i;:::-;4184:512;;;;;;4163:533;;4738:1;4715:25;;:5;:11;;;:25;;;:54;;;;4759:10;4744:25;;:5;:11;;;:25;;;4715:54;4707:63;;;;;;;;4813:1;4788:5;:22;;;:26;:56;;;;;4843:1;4818:5;:22;;;:26;4788:56;:84;;;;;4871:1;4848:20;:24;4788:84;4780:93;;;;;;;;4891:125;4921:5;:11;;;4946:5;:15;;;4975:1;4990;5005;4891:16;:125::i;:::-;4883:134;;;;;;;;5051:5;:30;;;5032:15;:49;;5028:156;;;5135:5;:15;;;5097:54;;;5112:20;5106:27;;;;;;;;5097:54;;;;;;;;;;;;5172:1;5165:8;;;;5028:156;5227:80;5235:5;:22;;;5259:47;5290:5;:15;;;5259:30;:47::i;:::-;5227:7;:80::i;:::-;5194:113;;5342:55;5349:20;5371:25;5342:6;:55::i;:::-;5317:80;;5437:1;5411:22;:27;5407:152;;;5510:5;:15;;;5454:72;;;5469:38;5463:45;;;;;;;;5454:72;;;;;;;;;;;;5547:1;5540:8;;;;5407:152;5573:87;5589:22;5613:5;:22;;;5637:5;:22;;;5573:15;:87::i;:::-;5569:205;;;5725:5;:15;;;5676:65;;;5691:31;5685:38;;;;;;;;5676:65;;;;;;;;;;;;5762:1;5755:8;;;;5569:205;5789:43;5788:44;:94;;;;;5837:45;5852:5;5859:22;5837:14;:45::i;:::-;5836:46;5788:94;5784:221;;;5956:5;:15;;;5898:74;;;5913:40;5907:47;;;;;;;;5898:74;;;;;;;;;;;;5993:1;5986:8;;;;5784:221;6045:88;6062:22;6086:5;:22;;;6110:5;:22;;;6045:16;:88::i;:::-;6015:118;;6223:56;6231:6;:23;6238:5;:15;;;6231:23;;;;;;;;;;;;;;;;;;6256:22;6223:7;:56::i;:::-;6197:6;:23;6204:5;:15;;;6197:23;;;;;;;;;;;;;;;;;:82;;;;6297:154;6340:5;:16;;;6370:5;:11;;;6395:10;6419:22;6297:29;:154::i;:::-;6289:163;;;;;;;;6470:154;6513:5;:16;;;6543:10;6567:5;:11;;;6592:22;6470:29;:154::i;:::-;6462:163;;;;;;;;6669:1;6639:32;;:5;:18;;;:32;;;;6635:820;;;6708:1;6691:5;:14;;;:18;6687:373;;;6744:80;6761:22;6785:5;:22;;;6809:5;:14;;;6744:16;:80::i;:::-;6729:95;;6850:194;6901:18;;;;;;;;;;;6941:5;:11;;;6974:5;:18;;;7014:12;6850:29;:194::i;:::-;6842:203;;;;;;;;6687:373;7094:1;7077:5;:14;;;:18;7073:372;;;7130:80;7147:22;7171:5;:22;;;7195:5;:14;;;7130:16;:80::i;:::-;7115:95;;7236:193;7287:18;;;;;;;;;;;7327:10;7359:5;:18;;;7399:12;7236:29;:193::i;:::-;7228:202;;;;;;;;7073:372;6635:820;7761:5;:16;;;7779:5;:16;;;7751:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:370;;;7535:5;:18;;;7465:370;;7486:5;:11;;;7465:370;;;7511:10;7567:5;:16;;;7597:5;:16;;;7627:22;7663;7699:12;7725;7810:5;:15;;;7465:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7852:22;7845:29;;3838:4043;;;;;;;;;;;;;;;:::o;16449:706::-;16568:7;16629:4;16648:14;16663:1;16648:17;;;;;;;;;;;;;16688:14;16703:1;16688:17;;;;;;;;;;;;;16728:14;16743:1;16728:17;;;;;;;;;;;;;16773:14;16788:1;16773:17;;;;;;;;;;;;;16818:14;16833:1;16818:17;;;;;;;;;;;;;16865:11;16877:1;16865:14;;;;;;;;;;;;;16916:11;16928:1;16916:14;;;;;;;;;;;;;16967:11;16979:1;16967:14;;;;;;;;;;;;;17010:11;17022:1;17010:14;;;;;;;;;;;;;17053:11;17065:1;17053:14;;;;;;;;;;;;;17112:11;17124:1;17112:14;;;;;;;;;;;;;16598:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16591:557;;16449:706;;;;:::o;1455:54::-;1505:4;1455:54;:::o;1409:40::-;;;;;;;;;;;;;;;;;;;;:::o;53:184:3:-;137:7;160:6;173:1;169;:5;160:14;;196:1;191;:6;:20;;;;210:1;205;201;:5;;;;;;;;:10;191:20;184:28;;;;;;229:1;222:8;;53:184;;;;;:::o;243:146::-;327:7;350:6;363:1;359;:5;;;;;;;;350:14;;381:1;374:8;;243:146;;;;;:::o;395:150::-;479:7;514:1;509;:6;;502:14;;;;;;537:1;533;:5;526:12;;395:150;;;;:::o;551:170::-;635:7;658:6;671:1;667;:5;658:14;;694:1;689;:6;;682:14;;;;;;713:1;706:8;;551:170;;;;;:::o;1156:139::-;1245:7;1279:1;1275;:5;:13;;1287:1;1275:13;;;1283:1;1275:13;1268:20;;1156:139;;;;:::o;20288:2363:0:-;20537:4;20557:13;20593:25;20770:20;20845;20920:17;21032;21144:21;21258;20573:10;20557:26;;20621:86;20638:20;20660:5;:22;;;20684:5;:22;;;20621:16;:86::i;:::-;20593:114;;20752:1;20722:32;;:5;:18;;;:32;;;;20718:1904;;;20813:18;;;;;;;;;;;20793:38;;:5;:16;;;:38;;;20770:61;;20888:18;;;;;;;;;;;20868:38;;:5;:16;;;:38;;;20845:61;;20940:78;20957:20;20979:5;:22;;;21003:5;:14;;;20940:16;:78::i;:::-;20920:98;;21052:78;21069:20;21091:5;:22;;;21115:5;:14;;;21052:16;:78::i;:::-;21032:98;;21168:15;:76;;21232:12;21168:76;;;21186:43;21194:20;21216:12;21186:7;:43::i;:::-;21168:76;21144:100;;21282:15;:76;;21346:12;21282:76;;;21300:43;21308:20;21330:12;21300:7;:43::i;:::-;21282:76;21258:100;;21426:16;21380:43;21391:18;;;;;;;;;;;21411:5;:11;;;21380:10;:43::i;:::-;:62;:146;;;;21510:16;21462:45;21475:18;;;;;;;;;;;21495:5;:11;;;21462:12;:45::i;:::-;:64;21380:146;:222;;;;21586:16;21546:37;21557:18;;;;;;;;;;;21577:5;21546:10;:37::i;:::-;:56;21380:222;:300;;;;21664:16;21622:39;21635:18;;;;;;;;;;;21655:5;21622:12;:39::i;:::-;:58;21380:300;21373:334;;;21702:5;21695:12;;;;21373:334;21727:15;21726:16;:236;;;;;21794:20;21750:41;21761:5;:16;;;21779:5;:11;;;21750:10;:41::i;:::-;:64;:211;;;;21941:20;21895:43;21908:5;:16;;;21926:5;:11;;;21895:12;:43::i;:::-;:66;21750:211;21726:236;21722:267;;;21984:5;21977:12;;;;21722:267;22008:15;22007:16;:224;;;;;22069:20;22031:35;22042:5;:16;;;22060:5;22031:10;:35::i;:::-;:58;:199;;;;22210:20;22170:37;22183:5;:16;;;22201:5;22170:12;:37::i;:::-;:60;22031:199;22007:224;22003:255;;;22253:5;22246:12;;;;22003:255;20718:1904;;;22326:20;22282:41;22293:5;:16;;;22311:5;:11;;;22282:10;:41::i;:::-;:64;:153;;;;22415:20;22369:43;22382:5;:16;;;22400:5;:11;;;22369:12;:43::i;:::-;:66;22282:153;:234;;;;22496:20;22458:35;22469:5;:16;;;22487:5;22458:10;:35::i;:::-;:58;22282:234;:317;;;;22579:20;22539:37;22552:5;:16;;;22570:5;22539:12;:37::i;:::-;:60;22282:317;22275:347;;;22617:5;22610:12;;;;22275:347;20718:1904;22640:4;22633:11;;20288:2363;;;;;;;;;;;;;:::o;19762:279::-;19921:4;19967:29;;;;;;;;;;;19948:62;;;20011:5;20018:4;20024:2;20028:5;19948:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19941:93;;19762:279;;;;;;:::o;22821:339::-;23032:4;23065:5;23059:22;;;1505:4;23059:52;;23112:5;23059:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23052:66;;22821:339;;;;:::o;23396:372::-;23609:4;23642:5;23636:22;;;1505:4;23636:52;;23689:5;23696:29;;;;;;;;;;;23636:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23629:97;;23396:372;;;;:::o;995:22775::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "Exchange.sol", + "TokenTransferProxy/TokenTransferProxy.sol", + "previous/Ownable/Ownable_v1.sol", + "previous/SafeMath/SafeMath_v1.sol", + "previous/Token/Token_v1.sol" + ], + "address": "0x48bacb9266a570d521063ef5dd96e61686dbe788", + "constructor_args": "0x0000000000000000000000001d7022f5b17d2f8b695918fb48fa1089c9f854010000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48" + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MaliciousToken.json b/packages/0x.js/test/artifacts/MaliciousToken.json new file mode 100644 index 000000000..a0c3e3ddc --- /dev/null +++ b/packages/0x.js/test/artifacts/MaliciousToken.json @@ -0,0 +1,196 @@ +{ + "contract_name": "MaliciousToken", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x91d9300198fcb37383f39ae62bafd5a92b6def37f673c23b8ec37caca5bf9c69", + "source_tree_hash": "0xd31259e791da9de56d06674f846caf98d2108f325bb5d4d38689f336b8105e93", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "bytecode": "0x60606040526001600360006101000a81548160ff021916908360ff160217905550341561002b57600080fd5b6109968061003a6000396000f300606060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007d57806318160ddd146100d757806323b872dd1461010057806370a0823114610179578063a9059cbb146101c6578063dd62ed3e14610220575b600080fd5b341561008857600080fd5b6100bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028c565b604051808215151515815260200191505060405180910390f35b34156100e257600080fd5b6100ea61037e565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610384565b604051808215151515815260200191505060405180910390f35b341561018457600080fd5b6101b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610677565b6040518082815260200191505060405180910390f35b34156101d157600080fd5b610206600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106c7565b604051808215151515815260200191505060405180910390f35b341561022b57600080fd5b610276600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108a7565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104da57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156104e557600080fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610681610936565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561079557506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156107a057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006108b1610936565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6003600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505600a165627a7a723058209be2ab2021ece000a0a23c0c462fc88da7e89ad1aa8fe6c8542fda6a5ef108300029", + "runtime_bytecode": "0x606060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007d57806318160ddd146100d757806323b872dd1461010057806370a0823114610179578063a9059cbb146101c6578063dd62ed3e14610220575b600080fd5b341561008857600080fd5b6100bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028c565b604051808215151515815260200191505060405180910390f35b34156100e257600080fd5b6100ea61037e565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610384565b604051808215151515815260200191505060405180910390f35b341561018457600080fd5b6101b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610677565b6040518082815260200191505060405180910390f35b34156101d157600080fd5b610206600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106c7565b604051808215151515815260200191505060405180910390f35b341561022b57600080fd5b610276600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108a7565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104da57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156104e557600080fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610681610936565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561079557506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156107a057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006108b1610936565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6003600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505600a165627a7a723058209be2ab2021ece000a0a23c0c462fc88da7e89ad1aa8fe6c8542fda6a5ef108300029", + "updated_at": 1522263998131, + "source_map": "96:556:0:-;;;162:1;140:23;;;;;;;;;;;;;;;;;;;;96:556;;;;;;;;;;;;;;", + "source_map_runtime": "96:556:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;435:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:322:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;466:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:1;933:4;985:6;953:7;:19;961:10;953:19;;;;;;;;;;;;;;;:29;973:8;953:29;;;;;;;;;;;;;;;:38;;;;1022:8;1001:38;;1010:10;1001:38;;;1032:6;1001:38;;;;;;;;;;;;;;;;;;1056:4;1049:11;;853:214;;;;:::o;1472:23::-;;;;:::o;435:412::-;530:4;577:6;558:8;:15;567:5;558:15;;;;;;;;;;;;;;;;:25;;:65;;;;;617:6;587:7;:14;595:5;587:14;;;;;;;;;;;;;;;:26;602:10;587:26;;;;;;;;;;;;;;;;:36;;558:65;:108;;;;;653:8;:13;662:3;653:13;;;;;;;;;;;;;;;;643:6;627:8;:13;636:3;627:13;;;;;;;;;;;;;;;;:22;:39;;558:108;550:117;;;;;;;;694:6;677:8;:13;686:3;677:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;729:6;710:8;:15;719:5;710:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;775:6;745:7;:14;753:5;745:14;;;;;;;;;;;;;;;:26;760:10;745:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;807:3;791:28;;800:5;791:28;;;812:6;791:28;;;;;;;;;;;;;;;;;;836:4;829:11;;435:412;;;;;:::o;303:157:0:-;387:4;407:13;:11;:13::i;:::-;437:8;:16;446:6;437:16;;;;;;;;;;;;;;;;430:23;;303:157;;;:::o;107:322:1:-;183:4;235:6;211:8;:20;220:10;211:20;;;;;;;;;;;;;;;;:30;;:73;;;;;271:8;:13;280:3;271:13;;;;;;;;;;;;;;;;261:6;245:8;:13;254:3;245:13;;;;;;;;;;;;;;;;:22;:39;;211:73;203:82;;;;;;;;319:6;295:8;:20;304:10;295:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;352:6;335:8;:13;344:3;335:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;389:3;368:33;;377:10;368:33;;;394:6;368:33;;;;;;;;;;;;;;;;;;418:4;411:11;;107:322;;;;:::o;466:184:0:-;568:4;588:13;:11;:13::i;:::-;618:7;:15;626:6;618:15;;;;;;;;;;;;;;;:25;634:8;618:25;;;;;;;;;;;;;;;;611:32;;466:184;;;;:::o;221:76::-;275:13;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;221:76::o", + "sources": [ + "MaliciousToken.sol", + "tokens/ERC20Token/ERC20Token.sol", + "tokens/Token/Token.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWallet.json b/packages/0x.js/test/artifacts/MultiSigWallet.json new file mode 100644 index 000000000..2da7a954c --- /dev/null +++ b/packages/0x.js/test/artifacts/MultiSigWallet.json @@ -0,0 +1,552 @@ +{ + "contract_name": "MultiSigWallet", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xe4dcaad5ebc708ef4258ff1a4152c7b94956a61f99db39fb7ae3003cc7087234", + "source_tree_hash": "0xe4dcaad5ebc708ef4258ff1a4152c7b94956a61f99db39fb7ae3003cc7087234", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "revokeConfirmation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "address" + } + ], + "name": "confirmations", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmationCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "transactions", + "outputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "executed", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "from", + "type": "uint256" + }, + { + "name": "to", + "type": "uint256" + }, + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionIds", + "outputs": [ + { + "name": "_transactionIds", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmations", + "outputs": [ + { + "name": "_confirmations", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transactionCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_required", + "type": "uint256" + } + ], + "name": "changeRequirement", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "submitTransaction", + "outputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_OWNER_COUNT", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "required", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_required", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Confirmation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Revocation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Submission", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Execution", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "ExecutionFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "required", + "type": "uint256" + } + ], + "name": "RequirementChange", + "type": "event" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b604051620022f7380380620022f783398101604052808051820191906020018051906020019091905050600082518260328211806200004e57508181115b806200005a5750600081145b80620000665750600082145b156200007157600080fd5b600092505b8451831015620001a8576002600086858151811015156200009357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806200011f575060008584815181101515620000fd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200012a57600080fd5b60016002600087868151811015156200013f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000076565b8460039080519060200190620001c0929190620001d3565b50836004819055505050505050620002a8565b8280548282559060005260206000209081019282156200024f579160200282015b828111156200024e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620001f4565b5b5090506200025e919062000262565b5090565b620002a591905b80821115620002a157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000269565b5090565b90565b61203f80620002b86000396000f30060606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104b1578063a8abe69a1461051b578063b5dc40c3146105b2578063b77bf6001461062a578063ba51a6df14610653578063c01a8c8414610676578063c642747414610699578063d74f8edd14610732578063dc8452cd1461075b578063e20056e614610784578063ee22610b146107dc575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b341561018257600080fd5b61019860048080359060200190919050506107ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061083e565b005b341561021e57600080fd5b6102346004808035906020019091905050610ada565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c80565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca0565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610ccf565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d61565b005b341561036957600080fd5b61037f6004808035906020019091905050610f57565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba600480803590602001909190505061103d565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611109565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610473578082015181840152602081019050610458565b50505050905090810190601f1680156104a05780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156104bc57600080fd5b6104c46111fe565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105075780820151818401526020810190506104ec565b505050509050019250505060405180910390f35b341561052657600080fd5b61055b600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611292565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059e578082015181840152602081019050610583565b505050509050019250505060405180910390f35b34156105bd57600080fd5b6105d360048080359060200190919050506113ee565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106165780820151818401526020810190506105fb565b505050509050019250505060405180910390f35b341561063557600080fd5b61063d611618565b6040518082815260200191505060405180910390f35b341561065e57600080fd5b610674600480803590602001909190505061161e565b005b341561068157600080fd5b61069760048080359060200190919050506116d0565b005b34156106a457600080fd5b61071c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118a9565b6040518082815260200191505060405180910390f35b341561073d57600080fd5b6107456118c8565b6040518082815260200191505060405180910390f35b341561076657600080fd5b61076e6118cd565b6040518082815260200191505060405180910390f35b341561078f57600080fd5b6107da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b34156107e757600080fd5b6107fd6004808035906020019091905050611be8565b005b60038181548110151561080e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a5b578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561096657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a4e5760036001600380549050038154811015156109c557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a5b565b8180600101925050610930565b6001600381818054905003915081610a739190611eee565b506003805490506004541115610a9257610a9160038054905061161e565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b3357600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b9e57600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610bcc57600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d5a57838015610d0e575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d415750828015610d40575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d4d576001820191505b8080600101915050610cd7565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9b57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610df357600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610e1857600080fd5b6001600380549050016004546032821180610e3257508181115b80610e3d5750600081145b80610e485750600082145b15610e5257600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610ebe9190611f1a565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b60038054905081101561103557600160008581526020019081526020016000206000600383815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611015576001820191505b6004548214156110285760019250611036565b8080600101915050610f64565b5b5050919050565b600080600090505b6003805490508110156111035760016000848152602001908152602001600020600060038381548110151561107657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110f6576001820191505b8080600101915050611045565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611206611f46565b600380548060200260200160405190810160405280929190818152602001828054801561128857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161123e575b5050505050905090565b61129a611f5a565b6112a2611f5a565b6000806005546040518059106112b55750595b9080825280602002602001820160405250925060009150600090505b60055481101561137157858015611308575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061133b575084801561133a575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156113645780838381518110151561134f57fe5b90602001906020020181815250506001820191505b80806001019150506112d1565b8787036040518059106113815750595b908082528060200260200182016040525093508790505b868110156113e35782818151811015156113ae57fe5b90602001906020020151848983038151811015156113c857fe5b90602001906020020181815250508080600101915050611398565b505050949350505050565b6113f6611f46565b6113fe611f46565b6000806003805490506040518059106114145750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156115735760016000868152602001908152602001600020600060038381548110151561146157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611566576003818154811015156114e957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561152357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611430565b816040518059106115815750595b90808252806020026020018201604052509350600090505b818110156116105782818151811015156115af57fe5b9060200190602002015184828151811015156115c757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611599565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165857600080fd5b60038054905081603282118061166d57508181115b806116785750600081145b806116835750600082145b1561168d57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561172957600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561178357600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117ed57600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36118a285611be8565b5050505050565b60006118b6848484611d9e565b90506118c1816116d0565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561196857600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c057600080fd5b600092505b600380549050831015611aab578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119f857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a9e5783600384815481101515611a5057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aab565b82806001019350506119c5565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611c1857600080fd5b611c2183610f57565b15611d9957600080848152602001908152602001600020915060018260030160006101000a81548160ff0219169083151502179055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260010154836002016040518082805460018160011615610100020316600290048015611d005780601f10611cd557610100808354040283529160200191611d00565b820191906000526020600020905b815481529060010190602001808311611ce357829003601f168201915b505091505060006040518083038185875af19250505015611d4d57827f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611d98565b827f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008260030160006101000a81548160ff0219169083151502179055505b5b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611dc557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611e84929190611f6e565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b815481835581811511611f1557818360005260206000209182019101611f149190611fee565b5b505050565b815481835581811511611f4157818360005260206000209182019101611f409190611fee565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611faf57805160ff1916838001178555611fdd565b82800160010185558215611fdd579182015b82811115611fdc578251825591602001919060010190611fc1565b5b509050611fea9190611fee565b5090565b61201091905b8082111561200c576000816000905550600101611ff4565b5090565b905600a165627a7a723058203660a52c3e499e6033db3525fe242cdfa7a3faa0c09a1a3a16fc71bad2f485b20029", + "runtime_bytecode": "0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104b1578063a8abe69a1461051b578063b5dc40c3146105b2578063b77bf6001461062a578063ba51a6df14610653578063c01a8c8414610676578063c642747414610699578063d74f8edd14610732578063dc8452cd1461075b578063e20056e614610784578063ee22610b146107dc575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b341561018257600080fd5b61019860048080359060200190919050506107ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061083e565b005b341561021e57600080fd5b6102346004808035906020019091905050610ada565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c80565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca0565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610ccf565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d61565b005b341561036957600080fd5b61037f6004808035906020019091905050610f57565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba600480803590602001909190505061103d565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611109565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610473578082015181840152602081019050610458565b50505050905090810190601f1680156104a05780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156104bc57600080fd5b6104c46111fe565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105075780820151818401526020810190506104ec565b505050509050019250505060405180910390f35b341561052657600080fd5b61055b600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611292565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059e578082015181840152602081019050610583565b505050509050019250505060405180910390f35b34156105bd57600080fd5b6105d360048080359060200190919050506113ee565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106165780820151818401526020810190506105fb565b505050509050019250505060405180910390f35b341561063557600080fd5b61063d611618565b6040518082815260200191505060405180910390f35b341561065e57600080fd5b610674600480803590602001909190505061161e565b005b341561068157600080fd5b61069760048080359060200190919050506116d0565b005b34156106a457600080fd5b61071c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118a9565b6040518082815260200191505060405180910390f35b341561073d57600080fd5b6107456118c8565b6040518082815260200191505060405180910390f35b341561076657600080fd5b61076e6118cd565b6040518082815260200191505060405180910390f35b341561078f57600080fd5b6107da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b34156107e757600080fd5b6107fd6004808035906020019091905050611be8565b005b60038181548110151561080e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a5b578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561096657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a4e5760036001600380549050038154811015156109c557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a5b565b8180600101925050610930565b6001600381818054905003915081610a739190611eee565b506003805490506004541115610a9257610a9160038054905061161e565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b3357600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b9e57600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610bcc57600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d5a57838015610d0e575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d415750828015610d40575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d4d576001820191505b8080600101915050610cd7565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9b57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610df357600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610e1857600080fd5b6001600380549050016004546032821180610e3257508181115b80610e3d5750600081145b80610e485750600082145b15610e5257600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610ebe9190611f1a565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b60038054905081101561103557600160008581526020019081526020016000206000600383815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611015576001820191505b6004548214156110285760019250611036565b8080600101915050610f64565b5b5050919050565b600080600090505b6003805490508110156111035760016000848152602001908152602001600020600060038381548110151561107657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110f6576001820191505b8080600101915050611045565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611206611f46565b600380548060200260200160405190810160405280929190818152602001828054801561128857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161123e575b5050505050905090565b61129a611f5a565b6112a2611f5a565b6000806005546040518059106112b55750595b9080825280602002602001820160405250925060009150600090505b60055481101561137157858015611308575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061133b575084801561133a575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156113645780838381518110151561134f57fe5b90602001906020020181815250506001820191505b80806001019150506112d1565b8787036040518059106113815750595b908082528060200260200182016040525093508790505b868110156113e35782818151811015156113ae57fe5b90602001906020020151848983038151811015156113c857fe5b90602001906020020181815250508080600101915050611398565b505050949350505050565b6113f6611f46565b6113fe611f46565b6000806003805490506040518059106114145750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156115735760016000868152602001908152602001600020600060038381548110151561146157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611566576003818154811015156114e957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561152357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611430565b816040518059106115815750595b90808252806020026020018201604052509350600090505b818110156116105782818151811015156115af57fe5b9060200190602002015184828151811015156115c757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611599565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165857600080fd5b60038054905081603282118061166d57508181115b806116785750600081145b806116835750600082145b1561168d57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561172957600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561178357600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117ed57600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36118a285611be8565b5050505050565b60006118b6848484611d9e565b90506118c1816116d0565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561196857600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c057600080fd5b600092505b600380549050831015611aab578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119f857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a9e5783600384815481101515611a5057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aab565b82806001019350506119c5565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611c1857600080fd5b611c2183610f57565b15611d9957600080848152602001908152602001600020915060018260030160006101000a81548160ff0219169083151502179055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260010154836002016040518082805460018160011615610100020316600290048015611d005780601f10611cd557610100808354040283529160200191611d00565b820191906000526020600020905b815481529060010190602001808311611ce357829003601f168201915b505091505060006040518083038185875af19250505015611d4d57827f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611d98565b827f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008260030160006101000a81548160ff0219169083151502179055505b5b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611dc557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611e84929190611f6e565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b815481835581811511611f1557818360005260206000209182019101611f149190611fee565b5b505050565b815481835581811511611f4157818360005260206000209182019101611f409190611fee565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611faf57805160ff1916838001178555611fdd565b82800160010185558215611fdd579182015b82811115611fdc578251825591602001919060010190611fc1565b5b509050611fea9190611fee565b5090565b61201091905b8082111561200c576000816000905550600101611ff4565b5090565b905600a165627a7a723058203660a52c3e499e6033db3525fe242cdfa7a3faa0c09a1a3a16fc71bad2f485b20029", + "updated_at": 1522263990820, + "source_map": "186:11249:0:-;;;2814:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:6;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;186:11249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "source_map_runtime": "186:11249:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;186:11249;936:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;6274:291;;;;;;;;;;;;;;;;;;;;;;;;;;890:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;9833:575;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;5806:344;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6679:474;;;;;;;;;;;;;;;;;;;;;;;;;;936:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;6274:291::-;6357:10;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;6387:13;6402:10;1694:13;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;6434:13;1976:12;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;6506:5;6463:13;:28;6477:13;6463:28;;;;;;;;;;;:40;6492:10;6463:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;6544:13;6532:10;6521:37;;;;;;;;;;;;1758:1;1463;;6274:291;;:::o;890:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9136:319::-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;3311:277::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;8622:252::-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;9833:575::-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;5806:344::-;5889:10;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;5927:13;1581:1;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;5963:13;5978:10;1843:13;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;6047:4;6004:13;:28;6018:13;6004:28;;;;;;;;;;;:40;6033:10;6004:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;6086:13;6074:10;6061:39;;;;;;;;;;;;6110:33;6129:13;6110:18;:33::i;:::-;1611:1;;1463;5806:344;;:::o;5456:244::-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;217:41::-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;6679:474::-;6837:14;6762:13;1976:12;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;6795:26;6807:13;6795:11;:26::i;:::-;6791:356;;;6854:12;:27;6867:13;6854:27;;;;;;;;;;;6837:44;;6909:4;6895:2;:11;;;:18;;;;;;;;;;;;;;;;;;6931:2;:14;;;;;;;;;;;;:19;;6957:2;:8;;;6967:2;:7;;6931:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6927:210;;;7003:13;6993:24;;;;;;;;;;6927:210;;;7071:13;7054:31;;;;;;;;;;7117:5;7103:2;:11;;;:19;;;;;;;;;;;;;;;;;;6927:210;6791:356;6679:474;;;:::o;7974:451::-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;186:11249::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "MultiSigWallet.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json new file mode 100644 index 000000000..e688afae1 --- /dev/null +++ b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json @@ -0,0 +1,633 @@ +{ + "contract_name": "MultiSigWalletWithTimeLock", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x73f2aeb4c300248f7c2c851b085e41525007202decc34831880688f1aee6e126", + "source_tree_hash": "0xbb079315d5a2798ed8399ea2a110cefcc083e33684ad5f5698cd3f582568c4c6", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "revokeConfirmation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "address" + } + ], + "name": "confirmations", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "secondsTimeLocked", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_secondsTimeLocked", + "type": "uint256" + } + ], + "name": "changeTimeLock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmationCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "transactions", + "outputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "executed", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "from", + "type": "uint256" + }, + { + "name": "to", + "type": "uint256" + }, + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionIds", + "outputs": [ + { + "name": "_transactionIds", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmations", + "outputs": [ + { + "name": "_confirmations", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transactionCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_required", + "type": "uint256" + } + ], + "name": "changeRequirement", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "submitTransaction", + "outputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "confirmationTimes", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_OWNER_COUNT", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "required", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_required", + "type": "uint256" + }, + { + "name": "_secondsTimeLocked", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + }, + { + "indexed": false, + "name": "confirmationTime", + "type": "uint256" + } + ], + "name": "ConfirmationTimeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "secondsTimeLocked", + "type": "uint256" + } + ], + "name": "TimeLockChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Confirmation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Revocation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Submission", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Execution", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "ExecutionFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "required", + "type": "uint256" + } + ], + "name": "RequirementChange", + "type": "event" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b6040516200250a3803806200250a833981016040528080518201919060200180519060200190919080519060200190919050508282600082518260328211806200005957508181115b80620000655750600081145b80620000715750600082145b156200007c57600080fd5b600092505b8451831015620001b3576002600086858151811015156200009e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806200012a5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200013557600080fd5b60016002600087868151811015156200014a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000081565b8460039080519060200190620001cb929190620001e8565b5083600481905550505050505080600681905550505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b61223d80620002cd6000396000f30060606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610198578063173825d9146101fb57806320ea8d86146102345780632f54bf6e146102575780633411c81c146102a857806337bd78a014610302578063547415251461032b5780637065cb481461036f578063784547a7146103a85780637ad28c51146103e35780638b51d13f146104065780639ace38c21461043d578063a0e67e2b1461051e578063a8abe69a14610588578063b5dc40c31461061f578063b77bf60014610697578063ba51a6df146106c0578063c01a8c84146106e3578063c642747414610706578063d38f2d821461079f578063d74f8edd146107d6578063dc8452cd146107ff578063e20056e614610828578063ee22610b14610880575b6000341115610196573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101a357600080fd5b6101b960048080359060200190919050506108a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561020657600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108e2565b005b341561023f57600080fd5b6102556004808035906020019091905050610b7e565b005b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d3b565b604051808215151515815260200191505060405180910390f35b34156102b357600080fd5b6102e8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d5b565b604051808215151515815260200191505060405180910390f35b341561030d57600080fd5b610315610d8a565b6040518082815260200191505060405180910390f35b341561033657600080fd5b610359600480803515159060200190919080351515906020019091905050610d90565b6040518082815260200191505060405180910390f35b341561037a57600080fd5b6103a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e22565b005b34156103b357600080fd5b6103c96004808035906020019091905050611018565b604051808215151515815260200191505060405180910390f35b34156103ee57600080fd5b61040460048080359060200190919050506110fe565b005b341561041157600080fd5b6104276004808035906020019091905050611179565b6040518082815260200191505060405180910390f35b341561044857600080fd5b61045e6004808035906020019091905050611245565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104e05780820151818401526020810190506104c5565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b341561052957600080fd5b61053161133a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610574578082015181840152602081019050610559565b505050509050019250505060405180910390f35b341561059357600080fd5b6105c86004808035906020019091908035906020019091908035151590602001909190803515159060200190919050506113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561060b5780820151818401526020810190506105f0565b505050509050019250505060405180910390f35b341561062a57600080fd5b610640600480803590602001909190505061152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610683578082015181840152602081019050610668565b505050509050019250505060405180910390f35b34156106a257600080fd5b6106aa611754565b6040518082815260200191505060405180910390f35b34156106cb57600080fd5b6106e1600480803590602001909190505061175a565b005b34156106ee57600080fd5b610704600480803590602001909190505061180c565b005b341561071157600080fd5b610789600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b6040518082815260200191505060405180910390f35b34156107aa57600080fd5b6107c06004808035906020019091905050611a2b565b6040518082815260200191505060405180910390f35b34156107e157600080fd5b6107e9611a43565b6040518082815260200191505060405180910390f35b341561080a57600080fd5b610812611a48565b6040518082815260200191505060405180910390f35b341561083357600080fd5b61087e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b341561088b57600080fd5b6108a16004808035906020019091905050611d63565b005b6003818154811015156108b257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091e57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561097757600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610aff578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610af2576003600160038054905003815481101515610a6957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610aa457fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aff565b81806001019250506109d4565b6001600381818054905003915081610b1791906120ec565b506003805490506004541115610b3657610b3560038054905061175a565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bd757600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c4257600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610c7057600080fd5b84610c7a81611018565b151515610c8657600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610e1b57838015610dcf575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610e025750828015610e01575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e0e576001820191505b8080600101915050610d98565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5c57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eb457600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610ed957600080fd5b6001600380549050016004546032821180610ef357508181115b80610efe5750600081145b80610f095750600082145b15610f1357600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610f7f9190612118565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110f65760016000858152602001908152602001600020600060038381548110151561105657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110d6576001820191505b6004548214156110e957600192506110f7565b8080600101915050611025565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561113857600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b60038054905081101561123f576001600084815260200190815260200160002060006003838154811015156111b257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611232576001820191505b8080600101915050611181565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611342612144565b60038054806020026020016040519081016040528092919081815260200182805480156113c457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161137a575b5050505050905090565b6113d6612158565b6113de612158565b6000806005546040518059106113f15750595b9080825280602002602001820160405250925060009150600090505b6005548110156114ad57858015611444575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806114775750848015611476575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114a05780838381518110151561148b57fe5b90602001906020020181815250506001820191505b808060010191505061140d565b8787036040518059106114bd5750595b908082528060200260200182016040525093508790505b8681101561151f5782818151811015156114ea57fe5b906020019060200201518489830381518110151561150457fe5b906020019060200201818152505080806001019150506114d4565b505050949350505050565b611532612144565b61153a612144565b6000806003805490506040518059106115505750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156116af5760016000868152602001908152602001600020600060038381548110151561159d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116a25760038181548110151561162557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561165f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061156c565b816040518059106116bd5750595b90808252806020026020018201604052509350600090505b8181101561174c5782818151811015156116eb57fe5b90602001906020020151848281518110151561170357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506116d5565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179457600080fd5b6003805490508160328211806117a957508181115b806117b45750600081145b806117bf5750600082145b156117c957600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561186557600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118bf57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561192957600080fd5b8461193381611018565b15151561193f57600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36119f486611018565b15611a0457611a038642611f48565b5b505050505050565b6000611a19848484611f9c565b9050611a248161180c565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ae357600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b3b57600080fd5b600092505b600380549050831015611c26578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611b7357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c195783600384815481101515611bcb57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26565b8280600101935050611b40565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611d9357600080fd5b82611d9d81611018565b1515611da857600080fd5b836006546007600083815260200190815260200160002054014210151515611dcf57600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460010154856002016040518082805460018160011615610100020316600290048015611ea95780601f10611e7e57610100808354040283529160200191611ea9565b820191906000526020600020905b815481529060010190602001808311611e8c57829003601f168201915b505091505060006040518083038185875af19250505015611ef657847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f41565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611fc357600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061208292919061216c565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b8154818355818115116121135781836000526020600020918201910161211291906121ec565b5b505050565b81548183558181151161213f5781836000526020600020918201910161213e91906121ec565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121ad57805160ff19168380011785556121db565b828001600101855582156121db579182015b828111156121da5782518255916020019190600101906121bf565b5b5090506121e891906121ec565b5090565b61220e91905b8082111561220a5760008160009055506001016121f2565b5090565b905600a165627a7a723058205bc5a07e35918a4112ecdd9be6ec87c69df2616baae15eda51ab262a394d89db0029", + "runtime_bytecode": "0x60606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610198578063173825d9146101fb57806320ea8d86146102345780632f54bf6e146102575780633411c81c146102a857806337bd78a014610302578063547415251461032b5780637065cb481461036f578063784547a7146103a85780637ad28c51146103e35780638b51d13f146104065780639ace38c21461043d578063a0e67e2b1461051e578063a8abe69a14610588578063b5dc40c31461061f578063b77bf60014610697578063ba51a6df146106c0578063c01a8c84146106e3578063c642747414610706578063d38f2d821461079f578063d74f8edd146107d6578063dc8452cd146107ff578063e20056e614610828578063ee22610b14610880575b6000341115610196573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101a357600080fd5b6101b960048080359060200190919050506108a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561020657600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108e2565b005b341561023f57600080fd5b6102556004808035906020019091905050610b7e565b005b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d3b565b604051808215151515815260200191505060405180910390f35b34156102b357600080fd5b6102e8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d5b565b604051808215151515815260200191505060405180910390f35b341561030d57600080fd5b610315610d8a565b6040518082815260200191505060405180910390f35b341561033657600080fd5b610359600480803515159060200190919080351515906020019091905050610d90565b6040518082815260200191505060405180910390f35b341561037a57600080fd5b6103a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e22565b005b34156103b357600080fd5b6103c96004808035906020019091905050611018565b604051808215151515815260200191505060405180910390f35b34156103ee57600080fd5b61040460048080359060200190919050506110fe565b005b341561041157600080fd5b6104276004808035906020019091905050611179565b6040518082815260200191505060405180910390f35b341561044857600080fd5b61045e6004808035906020019091905050611245565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104e05780820151818401526020810190506104c5565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b341561052957600080fd5b61053161133a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610574578082015181840152602081019050610559565b505050509050019250505060405180910390f35b341561059357600080fd5b6105c86004808035906020019091908035906020019091908035151590602001909190803515159060200190919050506113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561060b5780820151818401526020810190506105f0565b505050509050019250505060405180910390f35b341561062a57600080fd5b610640600480803590602001909190505061152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610683578082015181840152602081019050610668565b505050509050019250505060405180910390f35b34156106a257600080fd5b6106aa611754565b6040518082815260200191505060405180910390f35b34156106cb57600080fd5b6106e1600480803590602001909190505061175a565b005b34156106ee57600080fd5b610704600480803590602001909190505061180c565b005b341561071157600080fd5b610789600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b6040518082815260200191505060405180910390f35b34156107aa57600080fd5b6107c06004808035906020019091905050611a2b565b6040518082815260200191505060405180910390f35b34156107e157600080fd5b6107e9611a43565b6040518082815260200191505060405180910390f35b341561080a57600080fd5b610812611a48565b6040518082815260200191505060405180910390f35b341561083357600080fd5b61087e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b341561088b57600080fd5b6108a16004808035906020019091905050611d63565b005b6003818154811015156108b257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091e57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561097757600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610aff578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610af2576003600160038054905003815481101515610a6957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610aa457fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aff565b81806001019250506109d4565b6001600381818054905003915081610b1791906120ec565b506003805490506004541115610b3657610b3560038054905061175a565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bd757600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c4257600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610c7057600080fd5b84610c7a81611018565b151515610c8657600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610e1b57838015610dcf575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610e025750828015610e01575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e0e576001820191505b8080600101915050610d98565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5c57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eb457600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610ed957600080fd5b6001600380549050016004546032821180610ef357508181115b80610efe5750600081145b80610f095750600082145b15610f1357600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610f7f9190612118565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110f65760016000858152602001908152602001600020600060038381548110151561105657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110d6576001820191505b6004548214156110e957600192506110f7565b8080600101915050611025565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561113857600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b60038054905081101561123f576001600084815260200190815260200160002060006003838154811015156111b257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611232576001820191505b8080600101915050611181565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611342612144565b60038054806020026020016040519081016040528092919081815260200182805480156113c457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161137a575b5050505050905090565b6113d6612158565b6113de612158565b6000806005546040518059106113f15750595b9080825280602002602001820160405250925060009150600090505b6005548110156114ad57858015611444575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806114775750848015611476575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114a05780838381518110151561148b57fe5b90602001906020020181815250506001820191505b808060010191505061140d565b8787036040518059106114bd5750595b908082528060200260200182016040525093508790505b8681101561151f5782818151811015156114ea57fe5b906020019060200201518489830381518110151561150457fe5b906020019060200201818152505080806001019150506114d4565b505050949350505050565b611532612144565b61153a612144565b6000806003805490506040518059106115505750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156116af5760016000868152602001908152602001600020600060038381548110151561159d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116a25760038181548110151561162557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561165f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061156c565b816040518059106116bd5750595b90808252806020026020018201604052509350600090505b8181101561174c5782818151811015156116eb57fe5b90602001906020020151848281518110151561170357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506116d5565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179457600080fd5b6003805490508160328211806117a957508181115b806117b45750600081145b806117bf5750600082145b156117c957600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561186557600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118bf57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561192957600080fd5b8461193381611018565b15151561193f57600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36119f486611018565b15611a0457611a038642611f48565b5b505050505050565b6000611a19848484611f9c565b9050611a248161180c565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ae357600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b3b57600080fd5b600092505b600380549050831015611c26578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611b7357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c195783600384815481101515611bcb57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26565b8280600101935050611b40565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611d9357600080fd5b82611d9d81611018565b1515611da857600080fd5b836006546007600083815260200190815260200160002054014210151515611dcf57600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460010154856002016040518082805460018160011615610100020316600290048015611ea95780601f10611e7e57610100808354040283529160200191611ea9565b820191906000526020600020905b815481529060010190602001808311611e8c57829003601f168201915b505091505060006040518083038185875af19250505015611ef657847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f41565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611fc357600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061208292919061216c565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b8154818355818115116121135781836000526020600020918201910161211291906121ec565b5b505050565b81548183558181151161213f5781836000526020600020918201910161213e91906121ec565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121ad57805160ff19168380011785556121db565b828001600101855582156121db579182015b828111156121da5782518255916020019190600101906121bf565b5b5090506121e891906121ec565b5090565b61220e91905b8082111561220a5760008160009055506001016121f2565b5090565b905600a165627a7a723058205bc5a07e35918a4112ecdd9be6ec87c69df2616baae15eda51ab262a394d89db0029", + "updated_at": 1522263993736, + "source_map": "855:3594:1:-;;;1904:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:7;2047:9;2959:6:0;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;2092:18:1;2072:17;:38;;;;1904:213;;;855:3594;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "source_map_runtime": "855:3594:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1:0;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;855:3594:1;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:332:1;;;;;;;;;;;;;;;;;;;;;;;;;;890:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:186:1;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;9833:575;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;2613:459:1;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3642:472:1;;;;;;;;;;;;;;;;;;;;;;;;;;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;3196:332:1:-;3279:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3309:13:1;3324:10;1694:13:0;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;3356:13:1;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3397:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;3469:5;3426:13;:28;3440:13;3426:28;;;;;;;;;;;:40;3455:10;3426:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;3507:13;3495:10;3484:37;;;;;;;;;;;;2041:1:0;1758;1463;;3196:332:1;;:::o;890:40:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1049:29:1:-;;;;:::o;9136:319:0:-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;3311:277::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;2321:186:1:-;1208:4:0;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;2438:18:1;2418:17;:38;;;;2466:34;2481:18;2466:34;;;;;;;;;;;;;;;;;;2321:186;:::o;8622:252:0:-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;9833:575::-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;2613:459:1:-;2696:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;2734:13:1;1581:1:0;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;2770:13:1;2785:10;1843:13:0;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;2823:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;2895:4;2852:13;:28;2866:13;2852:28;;;;;;;;;;;:40;2881:10;2852:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;2934:13;2922:10;2909:39;;;;;;;;;;;;2962:26;2974:13;2962:11;:26::i;:::-;2958:108;;;3004:51;3024:13;3039:15;3004:19;:51::i;:::-;2958:108;1907:1:0;1611;;1463;2613:459:1;;:::o;5456:244:0:-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;1085:47:1:-;;;;;;;;;;;;;;;;;:::o;217:41:0:-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;3642:472:1:-;3828:22;3725:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3763:13:1;1318:26;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;3799:13;1483:17;;1448;:32;1466:13;1448:32;;;;;;;;;;;;:52;1429:15;:71;;1421:80;;;;;;;;3853:12;:27;3866:13;3853:27;;;;;;;;;;;3828:52;;3904:4;3890:2;:11;;;:18;;;;;;;;;;;;;;;;;;3922:2;:14;;;;;;;;;;;;:19;;3948:2;:8;;;3958:2;:7;;3922:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3918:190;;;3990:13;3980:24;;;;;;;;;;3918:190;;;4050:13;4033:31;;;;;;;;;;4092:5;4078:2;:11;;;:19;;;;;;;;;;;;;;;;;;3918:190;1355:1;2041::0;3642:472:1;;;:::o;4224:223::-;4362:16;4327:17;:32;4345:13;4327:32;;;;;;;;;;;:51;;;;4408:13;4388:52;4423:16;4388:52;;;;;;;;;;;;;;;;;;4224:223;;:::o;7974:451:0:-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;855:3594:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "MultiSigWallet/MultiSigWallet.sol", + "MultiSigWalletWithTimeLock.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json new file mode 100644 index 000000000..33f651e31 --- /dev/null +++ b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json @@ -0,0 +1,687 @@ +{ + "contract_name": "MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xda08395db72af1130287a88849e0cf0c895eb7c98e41483df3a4d457ca832910", + "source_tree_hash": "0x22f98f4bdfb835e87b3541309d2163fc6ef5da91bf84f4304b9b1052c93dfb0d", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "revokeConfirmation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + }, + { + "name": "", + "type": "address" + } + ], + "name": "confirmations", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "secondsTimeLocked", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "data", + "type": "bytes" + } + ], + "name": "isFunctionRemoveAuthorizedAddress", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "executeRemoveAuthorizedAddress", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_secondsTimeLocked", + "type": "uint256" + } + ], + "name": "changeTimeLock", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmationCount", + "outputs": [ + { + "name": "count", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "transactions", + "outputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "executed", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "from", + "type": "uint256" + }, + { + "name": "to", + "type": "uint256" + }, + { + "name": "pending", + "type": "bool" + }, + { + "name": "executed", + "type": "bool" + } + ], + "name": "getTransactionIds", + "outputs": [ + { + "name": "_transactionIds", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_TRANSFER_PROXY_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "getConfirmations", + "outputs": [ + { + "name": "_confirmations", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transactionCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_required", + "type": "uint256" + } + ], + "name": "changeRequirement", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "destination", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "submitTransaction", + "outputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "confirmationTimes", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MAX_OWNER_COUNT", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "required", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "transactionId", + "type": "uint256" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_required", + "type": "uint256" + }, + { + "name": "_secondsTimeLocked", + "type": "uint256" + }, + { + "name": "_tokenTransferProxy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + }, + { + "indexed": false, + "name": "confirmationTime", + "type": "uint256" + } + ], + "name": "ConfirmationTimeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "secondsTimeLocked", + "type": "uint256" + } + ], + "name": "TimeLockChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Confirmation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Revocation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Submission", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "Execution", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "transactionId", + "type": "uint256" + } + ], + "name": "ExecutionFailure", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerAddition", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + } + ], + "name": "OwnerRemoval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "required", + "type": "uint256" + } + ], + "name": "RequirementChange", + "type": "event" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b60405162002ad238038062002ad2833981016040528080518201919060200180519060200190919080519060200190919080519060200190919050508383838282600082518260328211806200006557508181115b80620000715750600081145b806200007d5750600082145b156200008857600080fd5b600092505b8451831015620001bf57600260008685815181101515620000aa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680620001365750600085848151811015156200011457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200014157600080fd5b60016002600087868151811015156200015657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082806001019350506200008d565b8460039080519060200190620001d792919062000239565b508360048190555050505050508060068190555050505080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200030e565b828054828255906000526020600020908101928215620002b5579160200282015b82811115620002b45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200025a565b5b509050620002c49190620002c8565b5090565b6200030b91905b808211156200030757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620002cf565b5090565b90565b6127b4806200031e6000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101b9578063173825d91461021c57806320ea8d86146102555780632f54bf6e146102785780633411c81c146102c957806337bd78a014610323578063547415251461034c578063553a48fd146103905780635711b311146104055780637065cb4814610428578063784547a7146104615780637ad28c511461049c5780638b51d13f146104bf5780639ace38c2146104f6578063a0e67e2b146105d7578063a8abe69a14610641578063add1cbc5146106d8578063b5dc40c31461072d578063b77bf600146107a5578063ba51a6df146107ce578063c01a8c84146107f1578063c642747414610814578063d38f2d82146108ad578063d74f8edd146108e4578063dc8452cd1461090d578063e20056e614610936578063ee22610b1461098e575b60003411156101b7573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101c457600080fd5b6101da60048080359060200190919050506109b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f0565b005b341561026057600080fd5b6102766004808035906020019091905050610c8c565b005b341561028357600080fd5b6102af600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e49565b604051808215151515815260200191505060405180910390f35b34156102d457600080fd5b610309600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e69565b604051808215151515815260200191505060405180910390f35b341561032e57600080fd5b610336610e98565b6040518082815260200191505060405180910390f35b341561035757600080fd5b61037a600480803515159060200190919080351515906020019091905050610e9e565b6040518082815260200191505060405180910390f35b341561039b57600080fd5b6103eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f30565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610426600480803590602001909190505061106d565b005b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611373565b005b341561046c57600080fd5b6104826004808035906020019091905050611569565b604051808215151515815260200191505060405180910390f35b34156104a757600080fd5b6104bd600480803590602001909190505061164f565b005b34156104ca57600080fd5b6104e060048080359060200190919050506116ca565b6040518082815260200191505060405180910390f35b341561050157600080fd5b6105176004808035906020019091905050611796565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561059957808201518184015260208101905061057e565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156105e257600080fd5b6105ea61188b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561062d578082015181840152602081019050610612565b505050509050019250505060405180910390f35b341561064c57600080fd5b61068160048080359060200190919080359060200190919080351515906020019091908035151590602001909190505061191f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106c45780820151818401526020810190506106a9565b505050509050019250505060405180910390f35b34156106e357600080fd5b6106eb611a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073857600080fd5b61074e6004808035906020019091905050611aa1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b34156107b057600080fd5b6107b8611ccb565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107ef6004808035906020019091905050611cd1565b005b34156107fc57600080fd5b6108126004808035906020019091905050611d83565b005b341561081f57600080fd5b610897600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f83565b6040518082815260200191505060405180910390f35b34156108b857600080fd5b6108ce6004808035906020019091905050611fa2565b6040518082815260200191505060405180910390f35b34156108ef57600080fd5b6108f7611fba565b6040518082815260200191505060405180910390f35b341561091857600080fd5b610920611fbf565b6040518082815260200191505060405180910390f35b341561094157600080fd5b61098c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fc5565b005b341561099957600080fd5b6109af60048080359060200190919050506122da565b005b6003818154811015156109c057fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2c57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610c0d578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610b1857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c00576003600160038054905003815481101515610b7757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610bb257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0d565b8180600101925050610ae2565b6001600381818054905003915081610c259190612663565b506003805490506004541115610c4457610c43600380549050611cd1565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce557600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d5057600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610d7e57600080fd5b84610d8881611569565b151515610d9457600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610f2957838015610edd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610f105750828015610f0f575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610f1c576001820191505b8080600101915050610ea6565b5092915050565b600080600060405180807f72656d6f7665417574686f72697a656441646472657373286164647265737329815250602001905060405180910390209150600090505b6004811015611062578181600481101515610f8957fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610fdc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561105557600080fd5b8080600101915050610f72565b600192505050919050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561109d57600080fd5b826110a781611569565b15156110b257600080fd5b8360008060008381526020019081526020016000209050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561114957600080fd5b6111ee816002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b5050505050610f30565b15156111f957600080fd5b600080878152602001908152602001600020945060018560030160006101000a81548160ff0219169083151502179055508460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685600101548660020160405180828054600181600116156101000203166002900480156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b505091505060006040518083038185875af1925050501561132057857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a261136b565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ad57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141561142a57600080fd5b600160038054905001600454603282118061144457508181115b8061144f5750600081145b8061145a5750600082145b1561146457600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380548060010182816114d0919061268f565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b600380549050811015611647576001600085815260200190815260200160002060006003838154811015156115a757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611627576001820191505b60045482141561163a5760019250611648565b8080600101915050611576565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168957600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b6003805490508110156117905760016000848152602001908152602001600020600060038381548110151561170357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611783576001820191505b80806001019150506116d2565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6118936126bb565b600380548060200260200160405190810160405280929190818152602001828054801561191557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118cb575b5050505050905090565b6119276126cf565b61192f6126cf565b6000806005546040518059106119425750595b9080825280602002602001820160405250925060009150600090505b6005548110156119fe57858015611995575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806119c857508480156119c7575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156119f1578083838151811015156119dc57fe5b90602001906020020181815250506001820191505b808060010191505061195e565b878703604051805910611a0e5750595b908082528060200260200182016040525093508790505b86811015611a70578281815181101515611a3b57fe5b9060200190602002015184898303815181101515611a5557fe5b90602001906020020181815250508080600101915050611a25565b505050949350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa96126bb565b611ab16126bb565b600080600380549050604051805910611ac75750595b9080825280602002602001820160405250925060009150600090505b600380549050811015611c2657600160008681526020019081526020016000206000600383815481101515611b1457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c1957600381815481101515611b9c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383815181101515611bd657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611ae3565b81604051805910611c345750595b90808252806020026020018201604052509350600090505b81811015611cc3578281815181101515611c6257fe5b906020019060200201518482815181101515611c7a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611c4c565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0b57600080fd5b600380549050816032821180611d2057508181115b80611d2b5750600081145b80611d365750600082145b15611d4057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ddc57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e3657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ea057600080fd5b84611eaa81611569565b151515611eb657600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a3611f6b86611569565b15611f7b57611f7a86426124bf565b5b505050505050565b6000611f90848484612513565b9050611f9b81611d83565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200157600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561205a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b257600080fd5b600092505b60038054905083101561219d578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156120ea57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612190578360038481548110151561214257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061219d565b82806001019350506120b7565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561230a57600080fd5b8261231481611569565b151561231f57600080fd5b83600654600760008381526020019081526020016000205401421015151561234657600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600101548560020160405180828054600181600116156101000203166002900480156124205780601f106123f557610100808354040283529160200191612420565b820191906000526020600020905b81548152906001019060200180831161240357829003601f168201915b505091505060006040518083038185875af1925050501561246d57847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a26124b8565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff16141561253a57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906125f99291906126e3565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b81548183558181151161268a578183600052602060002091820191016126899190612763565b5b505050565b8154818355818115116126b6578183600052602060002091820191016126b59190612763565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272457805160ff1916838001178555612752565b82800160010185558215612752579182015b82811115612751578251825591602001919060010190612736565b5b50905061275f9190612763565b5090565b61278591905b80821115612781576000816000905550600101612769565b5090565b905600a165627a7a72305820dd959439d9134dd17c9407ff2927ca034d0822eb2e39b8b5c1fca22c2808c6e00029", + "runtime_bytecode": "0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101b9578063173825d91461021c57806320ea8d86146102555780632f54bf6e146102785780633411c81c146102c957806337bd78a014610323578063547415251461034c578063553a48fd146103905780635711b311146104055780637065cb4814610428578063784547a7146104615780637ad28c511461049c5780638b51d13f146104bf5780639ace38c2146104f6578063a0e67e2b146105d7578063a8abe69a14610641578063add1cbc5146106d8578063b5dc40c31461072d578063b77bf600146107a5578063ba51a6df146107ce578063c01a8c84146107f1578063c642747414610814578063d38f2d82146108ad578063d74f8edd146108e4578063dc8452cd1461090d578063e20056e614610936578063ee22610b1461098e575b60003411156101b7573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101c457600080fd5b6101da60048080359060200190919050506109b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f0565b005b341561026057600080fd5b6102766004808035906020019091905050610c8c565b005b341561028357600080fd5b6102af600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e49565b604051808215151515815260200191505060405180910390f35b34156102d457600080fd5b610309600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e69565b604051808215151515815260200191505060405180910390f35b341561032e57600080fd5b610336610e98565b6040518082815260200191505060405180910390f35b341561035757600080fd5b61037a600480803515159060200190919080351515906020019091905050610e9e565b6040518082815260200191505060405180910390f35b341561039b57600080fd5b6103eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f30565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610426600480803590602001909190505061106d565b005b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611373565b005b341561046c57600080fd5b6104826004808035906020019091905050611569565b604051808215151515815260200191505060405180910390f35b34156104a757600080fd5b6104bd600480803590602001909190505061164f565b005b34156104ca57600080fd5b6104e060048080359060200190919050506116ca565b6040518082815260200191505060405180910390f35b341561050157600080fd5b6105176004808035906020019091905050611796565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561059957808201518184015260208101905061057e565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156105e257600080fd5b6105ea61188b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561062d578082015181840152602081019050610612565b505050509050019250505060405180910390f35b341561064c57600080fd5b61068160048080359060200190919080359060200190919080351515906020019091908035151590602001909190505061191f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106c45780820151818401526020810190506106a9565b505050509050019250505060405180910390f35b34156106e357600080fd5b6106eb611a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073857600080fd5b61074e6004808035906020019091905050611aa1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b34156107b057600080fd5b6107b8611ccb565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107ef6004808035906020019091905050611cd1565b005b34156107fc57600080fd5b6108126004808035906020019091905050611d83565b005b341561081f57600080fd5b610897600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f83565b6040518082815260200191505060405180910390f35b34156108b857600080fd5b6108ce6004808035906020019091905050611fa2565b6040518082815260200191505060405180910390f35b34156108ef57600080fd5b6108f7611fba565b6040518082815260200191505060405180910390f35b341561091857600080fd5b610920611fbf565b6040518082815260200191505060405180910390f35b341561094157600080fd5b61098c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fc5565b005b341561099957600080fd5b6109af60048080359060200190919050506122da565b005b6003818154811015156109c057fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2c57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610c0d578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610b1857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c00576003600160038054905003815481101515610b7757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610bb257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0d565b8180600101925050610ae2565b6001600381818054905003915081610c259190612663565b506003805490506004541115610c4457610c43600380549050611cd1565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce557600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d5057600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610d7e57600080fd5b84610d8881611569565b151515610d9457600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610f2957838015610edd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610f105750828015610f0f575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610f1c576001820191505b8080600101915050610ea6565b5092915050565b600080600060405180807f72656d6f7665417574686f72697a656441646472657373286164647265737329815250602001905060405180910390209150600090505b6004811015611062578181600481101515610f8957fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610fdc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561105557600080fd5b8080600101915050610f72565b600192505050919050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561109d57600080fd5b826110a781611569565b15156110b257600080fd5b8360008060008381526020019081526020016000209050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561114957600080fd5b6111ee816002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b5050505050610f30565b15156111f957600080fd5b600080878152602001908152602001600020945060018560030160006101000a81548160ff0219169083151502179055508460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685600101548660020160405180828054600181600116156101000203166002900480156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b505091505060006040518083038185875af1925050501561132057857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a261136b565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ad57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141561142a57600080fd5b600160038054905001600454603282118061144457508181115b8061144f5750600081145b8061145a5750600082145b1561146457600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380548060010182816114d0919061268f565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b600380549050811015611647576001600085815260200190815260200160002060006003838154811015156115a757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611627576001820191505b60045482141561163a5760019250611648565b8080600101915050611576565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168957600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b6003805490508110156117905760016000848152602001908152602001600020600060038381548110151561170357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611783576001820191505b80806001019150506116d2565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6118936126bb565b600380548060200260200160405190810160405280929190818152602001828054801561191557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118cb575b5050505050905090565b6119276126cf565b61192f6126cf565b6000806005546040518059106119425750595b9080825280602002602001820160405250925060009150600090505b6005548110156119fe57858015611995575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806119c857508480156119c7575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156119f1578083838151811015156119dc57fe5b90602001906020020181815250506001820191505b808060010191505061195e565b878703604051805910611a0e5750595b908082528060200260200182016040525093508790505b86811015611a70578281815181101515611a3b57fe5b9060200190602002015184898303815181101515611a5557fe5b90602001906020020181815250508080600101915050611a25565b505050949350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa96126bb565b611ab16126bb565b600080600380549050604051805910611ac75750595b9080825280602002602001820160405250925060009150600090505b600380549050811015611c2657600160008681526020019081526020016000206000600383815481101515611b1457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c1957600381815481101515611b9c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383815181101515611bd657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611ae3565b81604051805910611c345750595b90808252806020026020018201604052509350600090505b81811015611cc3578281815181101515611c6257fe5b906020019060200201518482815181101515611c7a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611c4c565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0b57600080fd5b600380549050816032821180611d2057508181115b80611d2b5750600081145b80611d365750600082145b15611d4057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ddc57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e3657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ea057600080fd5b84611eaa81611569565b151515611eb657600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a3611f6b86611569565b15611f7b57611f7a86426124bf565b5b505050505050565b6000611f90848484612513565b9050611f9b81611d83565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200157600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561205a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b257600080fd5b600092505b60038054905083101561219d578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156120ea57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612190578360038481548110151561214257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061219d565b82806001019350506120b7565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561230a57600080fd5b8261231481611569565b151561231f57600080fd5b83600654600760008381526020019081526020016000205401421015151561234657600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600101548560020160405180828054600181600116156101000203166002900480156124205780601f106123f557610100808354040283529160200191612420565b820191906000526020600020905b81548152906001019060200180831161240357829003601f168201915b505091505060006040518083038185875af1925050501561246d57847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a26124b8565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff16141561253a57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906125f99291906126e3565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b81548183558181151161268a578183600052602060002091820191016126899190612763565b5b505050565b8154818355818115116126b6578183600052602060002091820191016126b59190612763565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272457805160ff1916838001178555612752565b82800160010185558215612752579182015b82811115612751578251825591602001919060010190612736565b5b50905061275f9190612763565b5090565b61278591905b80821115612781576000816000905550600101612769565b5090565b905600a165627a7a72305820dd959439d9134dd17c9407ff2927ca034d0822eb2e39b8b5c1fca22c2808c6e00029", + "updated_at": 1522263996823, + "source_map": "714:2422:2:-;;;1582:349;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:7;1828:9;1839:18;2038:7:1;2047:9;2959:6:0;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;2092:18:1;2072:17;:38;;;;1904:213;;;1905:19:2;1873:29;;:51;;;;;;;;;;;;;;;;;;1582:349;;;;714:2422;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "source_map_runtime": "714:2422:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1:0;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;714:2422:2;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:332:1;;;;;;;;;;;;;;;;;;;;;;;;;;890:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2774:360:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2058:502;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:186:1;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;816:44:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:575:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;2613:459:1;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3642:472:1;;;;;;;;;;;;;;;;;;;;;;;;;;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;3196:332:1:-;3279:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3309:13:1;3324:10;1694:13:0;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;3356:13:1;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3397:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;3469:5;3426:13;:28;3440:13;3426:28;;;;;;;;;;;:40;3455:10;3426:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;3507:13;3495:10;3484:37;;;;;;;;;;;;2041:1:0;1758;1463;;3196:332:1;;:::o;890:40:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1049:29:1:-;;;;:::o;9136:319:0:-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;2774:360:2:-;2878:4;2898:39;3003:6;2947:40;;;;;;;;;;;;;;;;;;;2898:90;;3012:1;3003:10;;2998:109;3019:1;3015;:5;2998:109;;;3060:32;3093:1;3060:35;;;;;;;;;;;;3049:46;;;:4;3054:1;3049:7;;;;;;;;;;;;;;;;;;;;:46;;;;3041:55;;;;;;;;3022:3;;;;;;;2998:109;;;3123:4;3116:11;;2774:360;;;;;:::o;2058:502::-;2274:22;2153:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;2191:13:2;1318:26:1;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;2245:13:2;937:22;962:12;:27;975:13;962:27;;;;;;;;;;;937:52;;1025:29;;;;;;;;;;;1007:47;;:2;:14;;;;;;;;;;;;:47;;;999:56;;;;;;;;1073:42;1107:2;:7;;1073:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;:42::i;:::-;1065:51;;;;;;;;2299:12;:27;2312:13;2299:27;;;;;;;;;;;2274:52;;2350:4;2336:2;:11;;;:18;;;;;;;;;;;;;;;;;;2368:2;:14;;;;;;;;;;;;:19;;2394:2;:8;;;2404:2;:7;;2368:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:190;;;2436:13;2426:24;;;;;;;;;;2364:190;;;2496:13;2479:31;;;;;;;;;;2538:5;2524:2;:11;;;:19;;;;;;;;;;;;;;;;;;2364:190;1355:1:1;;2041::0;2058:502:2;;;:::o;3311:277:0:-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;2321:186:1:-;1208:4:0;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;2438:18:1;2418:17;:38;;;;2466:34;2481:18;2466:34;;;;;;;;;;;;;;;;;;2321:186;:::o;8622:252:0:-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;816:44:2:-;;;;;;;;;;;;;:::o;9833:575:0:-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;2613:459:1:-;2696:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;2734:13:1;1581:1:0;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;2770:13:1;2785:10;1843:13:0;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;2823:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;2895:4;2852:13;:28;2866:13;2852:28;;;;;;;;;;;:40;2881:10;2852:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;2934:13;2922:10;2909:39;;;;;;;;;;;;2962:26;2974:13;2962:11;:26::i;:::-;2958:108;;;3004:51;3024:13;3039:15;3004:19;:51::i;:::-;2958:108;1907:1:0;1611;;1463;2613:459:1;;:::o;5456:244:0:-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;1085:47:1:-;;;;;;;;;;;;;;;;;:::o;217:41:0:-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;3642:472:1:-;3828:22;3725:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3763:13:1;1318:26;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;3799:13;1483:17;;1448;:32;1466:13;1448:32;;;;;;;;;;;;:52;1429:15;:71;;1421:80;;;;;;;;3853:12;:27;3866:13;3853:27;;;;;;;;;;;3828:52;;3904:4;3890:2;:11;;;:18;;;;;;;;;;;;;;;;;;3922:2;:14;;;;;;;;;;;;:19;;3948:2;:8;;;3958:2;:7;;3922:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3918:190;;;3990:13;3980:24;;;;;;;;;;3918:190;;;4050:13;4033:31;;;;;;;;;;4092:5;4078:2;:11;;;:19;;;;;;;;;;;;;;;;;;3918:190;1355:1;2041::0;3642:472:1;;;:::o;4224:223::-;4362:16;4327:17;:32;4345:13;4327:32;;;;;;;;;;;:51;;;;4408:13;4388:52;4423:16;4388:52;;;;;;;;;;;;;;;;;;4224:223;;:::o;7974:451:0:-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;714:2422:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "MultiSigWallet/MultiSigWallet.sol", + "MultiSigWalletWithTimeLock/MultiSigWalletWithTimeLock.sol", + "MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.sol" + ], + "address": "0x34d402f14d58e001d8efbe6585051bf9706aa064", + "constructor_args": "0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c4800000000000000000000000000000000000000000000000000000000000000020000000000000000000000005409ed021d9299bf6814279a6a1411a7e866a6310000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb" + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Token.json b/packages/0x.js/test/artifacts/Token.json new file mode 100644 index 000000000..435d33b59 --- /dev/null +++ b/packages/0x.js/test/artifacts/Token.json @@ -0,0 +1,180 @@ +{ + "contract_name": "Token", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xe43382be55ddb9c7a28567b4cc59e35072da198e6c49a90ff1396aa8399fd61e", + "source_tree_hash": "0xe43382be55ddb9c7a28567b4cc59e35072da198e6c49a90ff1396aa8399fd61e", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6102ac8061001e6000396000f30060606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610260565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610269565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610270565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610278565b6040518082815260200191505060405180910390f35b600092915050565b60009392505050565b6000919050565b600092915050565b6000929150505600a165627a7a723058209d6fd1f3f4667354203ad6c5c83162c9691e8018a5886cd8b91f45e2ed870d990029", + "runtime_bytecode": "0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610260565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610269565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610270565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610278565b6040518082815260200191505060405180910390f35b600092915050565b60009392505050565b6000919050565b600092915050565b6000929150505600a165627a7a723058209d6fd1f3f4667354203ad6c5c83162c9691e8018a5886cd8b91f45e2ed870d990029", + "updated_at": 1522263986234, + "source_map": "26:1709:0:-;;;;;;;;;;;;;;;;;", + "source_map_runtime": "26:1709:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1037:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;278:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1037:72;1101:4;1037:72;;;;:::o;667:87::-;746:4;667:87;;;;;:::o;1218:64::-;1274:4;1218:64;;;:::o;278:68::-;338:4;278:68;;;;:::o;1490:82::-;1564:4;1490:82;;;;:::o", + "sources": [ + "Token.sol" + ] + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/TokenRegistry.json b/packages/0x.js/test/artifacts/TokenRegistry.json new file mode 100644 index 000000000..b3c2994cf --- /dev/null +++ b/packages/0x.js/test/artifacts/TokenRegistry.json @@ -0,0 +1,565 @@ +{ + "contract_name": "TokenRegistry", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xfaf2e3107cfafb9925c2ce51653c3f636bffff9e6528cc61c6341a3e27ca3c6b", + "source_tree_hash": "0x2ff7351f8fdae20562e116b42e3ec236c656ac1af71f7a62c8591627444bce40", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_index", + "type": "uint256" + } + ], + "name": "removeToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + } + ], + "name": "getTokenAddressByName", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_symbol", + "type": "string" + } + ], + "name": "getTokenAddressBySymbol", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_swarmHash", + "type": "bytes" + } + ], + "name": "setTokenSwarmHash", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "getTokenMetaData", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_ipfsHash", + "type": "bytes" + }, + { + "name": "_swarmHash", + "type": "bytes" + } + ], + "name": "addToken", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_name", + "type": "string" + } + ], + "name": "setTokenName", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "decimals", + "type": "uint8" + }, + { + "name": "ipfsHash", + "type": "bytes" + }, + { + "name": "swarmHash", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "tokenAddresses", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + } + ], + "name": "getTokenByName", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTokenAddresses", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_ipfsHash", + "type": "bytes" + } + ], + "name": "setTokenIpfsHash", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_symbol", + "type": "string" + } + ], + "name": "getTokenBySymbol", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_symbol", + "type": "string" + } + ], + "name": "setTokenSymbol", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": false, + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "name": "decimals", + "type": "uint8" + }, + { + "indexed": false, + "name": "ipfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "swarmHash", + "type": "bytes" + } + ], + "name": "LogAddToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": false, + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "name": "decimals", + "type": "uint8" + }, + { + "indexed": false, + "name": "ipfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "swarmHash", + "type": "bytes" + } + ], + "name": "LogRemoveToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldName", + "type": "string" + }, + { + "indexed": false, + "name": "newName", + "type": "string" + } + ], + "name": "LogTokenNameChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldSymbol", + "type": "string" + }, + { + "indexed": false, + "name": "newSymbol", + "type": "string" + } + ], + "name": "LogTokenSymbolChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldIpfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "newIpfsHash", + "type": "bytes" + } + ], + "name": "LogTokenIpfsHashChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldSwarmHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "newSwarmHash", + "type": "bytes" + } + ], + "name": "LogTokenSwarmHashChange", + "type": "event" + } + ], + "bytecode": "0x6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ccb806100536000396000f3006060604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313baf1e6146100eb5780632fbfeba91461012d5780633550b6d9146101ca57806356318820146102675780637abccac9146102e35780638da5cb5b14610519578063a880319d1461056e578063c370c86d146106bf578063e48603391461073b578063e5df8b8414610971578063e73fc0c3146109d4578063ee8c24b814610c2e578063eef05f6514610c98578063efa74f1f14610d14578063f036417f14610f6e578063f2fde38b14610fea575b600080fd5b34156100f657600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611023565b005b341561013857600080fd5b610188600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611736565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d557600080fd5b610225600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027257600080fd5b6102e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611860565b005b34156102ee57600080fd5b61031a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611afc565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156103a4578082015181840152602081019050610389565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561040a5780820151818401526020810190506103ef565b50505050905090810190601f1680156104375780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610470578082015181840152602081019050610455565b50505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156104d65780820151818401526020810190506104bb565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561052457600080fd5b61052c611eb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ed5565b005b34156106ca57600080fd5b610739600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506126c9565b005b341561074657600080fd5b610772600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b6e565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156107fc5780820151818401526020810190506107e1565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610862578082015181840152602081019050610847565b50505050905090810190601f16801561088f5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156108c85780820151818401526020810190506108ad565b50505050905090810190601f1680156108f55780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561092e578082015181840152602081019050610913565b50505050905090810190601f16801561095b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561097c57600080fd5b6109926004808035906020019091905050612e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109df57600080fd5b610a2f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612e76565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610ab9578082015181840152602081019050610a9e565b50505050905090810190601f168015610ae65780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610b1f578082015181840152602081019050610b04565b50505050905090810190601f168015610b4c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b85578082015181840152602081019050610b6a565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610beb578082015181840152602081019050610bd0565b50505050905090810190601f168015610c185780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610c3957600080fd5b610c41612f49565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c84578082015181840152602081019050610c69565b505050509050019250505060405180910390f35b3415610ca357600080fd5b610d12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fdd565b005b3415610d1f57600080fd5b610d6f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613279565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610df9578082015181840152602081019050610dde565b50505050905090810190601f168015610e265780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610e5f578082015181840152602081019050610e44565b50505050905090810190601f168015610e8c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610f2b578082015181840152602081019050610f10565b50505050905090810190601f168015610f585780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610f7957600080fd5b610fe8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061334c565b005b3415610ff557600080fd5b611021600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137f1565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108057600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561111f57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1660048481548110151561114557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561119357600080fd5b60046001600480549050038154811015156111aa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004848154811015156111e557fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048181805490500391508161124691906138c6565b50600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f32c54f1e2ea75844ded7517e7dbcd3895da7cd0c28f9ab9f9cf6ecf5f83762c683600101846002018560030160009054906101000a900460ff1686600401876005016040518080602001806020018660ff1660ff168152602001806020018060200185810385528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156113a75780601f1061137c576101008083540402835291602001916113a7565b820191906000526020600020905b81548152906001019060200180831161138a57829003601f168201915b505085810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561142a5780601f106113ff5761010080835404028352916020019161142a565b820191906000526020600020905b81548152906001019060200180831161140d57829003601f168201915b50508581038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b50508581038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050995050505050505050505060405180910390a260028260020160405180828054600181600116156101000203166002900480156115a65780601f106115845761010080835404028352918201916115a6565b820191906000526020600020905b815481529060010190602001808311611592575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382600101604051808280546001816001161561010002031660029004801561163d5780601f1061161b57610100808354040283529182019161163d565b820191906000526020600020905b815481529060010190602001808311611629575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006116ea91906138f2565b6002820160006116fa91906138f2565b6003820160006101000a81549060ff021916905560048201600061171e919061393a565b60058201600061172e919061393a565b505050505050565b60006003826040518082805190602001908083835b602083101515611770578051825260208201915060208101905060208303925061174b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002826040518082805190602001908083835b60208310151561180557805182526020820191506020810190506020830392506117e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118bd57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195c57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167fc3168fdc13112e44a031057dbf6c609b33353addb4d8037d24543e22cbfe2acd8360050185604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a675780601f10611a3c57610100808354040283529160200191611a67565b820191906000526020600020905b815481529060010190602001808311611a4a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015611aa1578082015181840152602081019050611a86565b50505050905090810190601f168015611ace5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826005019080519060200190611af5929190613982565b5050505050565b6000611b06613a02565b611b0e613a02565b6000611b18613a16565b611b20613a16565b611b28613a2a565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c625780601f10611c3757610100808354040283529160200191611c62565b820191906000526020600020905b815481529060010190602001808311611c4557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d045780601f10611cd957610100808354040283529160200191611d04565b820191906000526020600020905b815481529060010190602001808311611ce757829003601f168201915b505050505081526020016003820160009054906101000a900460ff1660ff1660ff168152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e655780601f10611e3a57610100808354040283529160200191611e65565b820191906000526020600020905b815481529060010190602001808311611e4857829003601f168201915b5050505050815250509050806000015181602001518260400151836060015184608001518560a001518494508393508191508090509650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3057600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fce57600080fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561200b57600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b60208310151561205c5780518252602082019150602081019050602083039250612037565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120d257600080fd5b87600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561212357805182526020820191506020810190506020830392506120fe565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561219957600080fd5b60c0604051908101604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018860ff16815260200187815260200186815250600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190612282929190613a92565b50604082015181600201908051906020019061229f929190613a92565b5060608201518160030160006101000a81548160ff021916908360ff16021790555060808201518160040190805190602001906122dd929190613b12565b5060a08201518160050190805190602001906122fa929190613b12565b50905050600480548060010182816123129190613b92565b916000526020600020900160008c909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050896002896040518082805190602001908083835b60208310151561239a5780518252602082019150602081019050602083039250612375565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960038a6040518082805190602001908083835b602083101515612444578051825260208201915060208101905060208303925061241f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508973ffffffffffffffffffffffffffffffffffffffff167fd8d928b0b50ca11d9dc273236b46f3526515b03602f71f3a6af4f45bd9fa91448a8a8a8a8a6040518080602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561254a57808201518184015260208101905061252f565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b838110156125b0578082015181840152602081019050612595565b50505050905090810190601f1680156125dd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156126165780820151818401526020810190506125fb565b50505050905090810190601f1680156126435780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561267c578082015181840152602081019050612661565b50505050905090810190601f1680156126a95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a250505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272657600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156127c557600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561281657805182526020820191506020810190506020830392506127f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561288c57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f4a6dbfc867b179991dec22ff19960f0a94d8d9d891fc556f547764670340e8ae84600101866040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129975780601f1061296c57610100808354040283529160200191612997565b820191906000526020600020905b81548152906001019060200180831161297a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156129d15780820151818401526020810190506129b6565b50505050905090810190601f1680156129fe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a26003836001016040518082805460018160011615610100020316600290048015612a6e5780601f10612a4c576101008083540402835291820191612a6e565b820191906000526020600020905b815481529060010190602001808311612a5a575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846003856040518082805190602001908083835b602083101515612add5780518252602082019150602081019050602083039250612ab8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083836001019080519060200190612b66929190613bbe565b505050505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c405780601f10612c1557610100808354040283529160200191612c40565b820191906000526020600020905b815481529060010190602001808311612c2357829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cde5780601f10612cb357610100808354040283529160200191612cde565b820191906000526020600020905b815481529060010190602001808311612cc157829003601f168201915b5050505050908060030160009054906101000a900460ff1690806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b505050505090806005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e2d5780601f10612e0257610100808354040283529160200191612e2d565b820191906000526020600020905b815481529060010190602001808311612e1057829003601f168201915b5050505050905086565b600481815481101515612e4657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e80613a02565b612e88613a02565b6000612e92613a16565b612e9a613a16565b60006003886040518082805190602001908083835b602083101515612ed45780518252602082019150602081019050602083039250612eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f3381611afc565b9650965096509650965096505091939550919395565b612f51613c3e565b6004805480602002602001604051908101604052809291908181526020018280548015612fd357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612f89575b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303a57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156130d957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167f5b19f79ac4e8cfa820815502e11615f1a449e28155dc289ec5cac1a11f90869483600401856040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131e45780601f106131b9576101008083540402835291602001916131e4565b820191906000526020600020905b8154815290600101906020018083116131c757829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b8381101561321e578082015181840152602081019050613203565b50505050905090810190601f16801561324b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826004019080519060200190613272929190613982565b5050505050565b6000613283613a02565b61328b613a02565b6000613295613a16565b61329d613a16565b60006002886040518082805190602001908083835b6020831015156132d757805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061333681611afc565b9650965096509650965096505091939550919395565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561344857600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b6020831015156134995780518252602082019150602081019050602083039250613474565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561350f57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f53d878a6530e56c9bc96548fa0a8cae4f1d1f49c86b0e934c086b992ebb6998f846002018660405180806020018060200183810383528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561361a5780601f106135ef5761010080835404028352916020019161361a565b820191906000526020600020905b8154815290600101906020018083116135fd57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015613654578082015181840152602081019050613639565b50505050905090810190601f1680156136815780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260028360020160405180828054600181600116156101000203166002900480156136f15780601f106136cf5761010080835404028352918201916136f1565b820191906000526020600020905b8154815290600101906020018083116136dd575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846002856040518082805190602001908083835b602083101515613760578051825260208201915060208101905060208303925061373b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360020190805190602001906137e9929190613bbe565b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561384c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156138c357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b8154818355818115116138ed578183600052602060002091820191016138ec9190613c52565b5b505050565b50805460018160011615610100020316600290046000825580601f106139185750613937565b601f0160209004906000526020600020908101906139369190613c52565b5b50565b50805460018160011615610100020316600290046000825580601f10613960575061397f565b601f01602090049060005260206000209081019061397e9190613c52565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c357805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f05782518255916020019190600101906139d5565b5b5090506139fe9190613c52565b5090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b60c060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613a5b613c77565b8152602001613a68613c77565b8152602001600060ff168152602001613a7f613c8b565b8152602001613a8c613c8b565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ad357805160ff1916838001178555613b01565b82800160010185558215613b01579182015b82811115613b00578251825591602001919060010190613ae5565b5b509050613b0e9190613c52565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b5357805160ff1916838001178555613b81565b82800160010185558215613b81579182015b82811115613b80578251825591602001919060010190613b65565b5b509050613b8e9190613c52565b5090565b815481835581811511613bb957818360005260206000209182019101613bb89190613c52565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bff57805160ff1916838001178555613c2d565b82800160010185558215613c2d579182015b82811115613c2c578251825591602001919060010190613c11565b5b509050613c3a9190613c52565b5090565b602060405190810160405280600081525090565b613c7491905b80821115613c70576000816000905550600101613c58565b5090565b90565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a723058200125fffe817cb7e4c2769cfaca2c0aaf9ff3931bcc07b0739f355303c512435b0029", + "runtime_bytecode": "0x6060604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313baf1e6146100eb5780632fbfeba91461012d5780633550b6d9146101ca57806356318820146102675780637abccac9146102e35780638da5cb5b14610519578063a880319d1461056e578063c370c86d146106bf578063e48603391461073b578063e5df8b8414610971578063e73fc0c3146109d4578063ee8c24b814610c2e578063eef05f6514610c98578063efa74f1f14610d14578063f036417f14610f6e578063f2fde38b14610fea575b600080fd5b34156100f657600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611023565b005b341561013857600080fd5b610188600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611736565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d557600080fd5b610225600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027257600080fd5b6102e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611860565b005b34156102ee57600080fd5b61031a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611afc565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156103a4578082015181840152602081019050610389565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561040a5780820151818401526020810190506103ef565b50505050905090810190601f1680156104375780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610470578082015181840152602081019050610455565b50505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156104d65780820151818401526020810190506104bb565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561052457600080fd5b61052c611eb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ed5565b005b34156106ca57600080fd5b610739600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506126c9565b005b341561074657600080fd5b610772600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b6e565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156107fc5780820151818401526020810190506107e1565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610862578082015181840152602081019050610847565b50505050905090810190601f16801561088f5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156108c85780820151818401526020810190506108ad565b50505050905090810190601f1680156108f55780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561092e578082015181840152602081019050610913565b50505050905090810190601f16801561095b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561097c57600080fd5b6109926004808035906020019091905050612e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109df57600080fd5b610a2f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612e76565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610ab9578082015181840152602081019050610a9e565b50505050905090810190601f168015610ae65780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610b1f578082015181840152602081019050610b04565b50505050905090810190601f168015610b4c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b85578082015181840152602081019050610b6a565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610beb578082015181840152602081019050610bd0565b50505050905090810190601f168015610c185780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610c3957600080fd5b610c41612f49565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c84578082015181840152602081019050610c69565b505050509050019250505060405180910390f35b3415610ca357600080fd5b610d12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fdd565b005b3415610d1f57600080fd5b610d6f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613279565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610df9578082015181840152602081019050610dde565b50505050905090810190601f168015610e265780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610e5f578082015181840152602081019050610e44565b50505050905090810190601f168015610e8c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610f2b578082015181840152602081019050610f10565b50505050905090810190601f168015610f585780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610f7957600080fd5b610fe8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061334c565b005b3415610ff557600080fd5b611021600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137f1565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108057600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561111f57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1660048481548110151561114557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561119357600080fd5b60046001600480549050038154811015156111aa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004848154811015156111e557fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048181805490500391508161124691906138c6565b50600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f32c54f1e2ea75844ded7517e7dbcd3895da7cd0c28f9ab9f9cf6ecf5f83762c683600101846002018560030160009054906101000a900460ff1686600401876005016040518080602001806020018660ff1660ff168152602001806020018060200185810385528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156113a75780601f1061137c576101008083540402835291602001916113a7565b820191906000526020600020905b81548152906001019060200180831161138a57829003601f168201915b505085810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561142a5780601f106113ff5761010080835404028352916020019161142a565b820191906000526020600020905b81548152906001019060200180831161140d57829003601f168201915b50508581038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b50508581038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050995050505050505050505060405180910390a260028260020160405180828054600181600116156101000203166002900480156115a65780601f106115845761010080835404028352918201916115a6565b820191906000526020600020905b815481529060010190602001808311611592575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382600101604051808280546001816001161561010002031660029004801561163d5780601f1061161b57610100808354040283529182019161163d565b820191906000526020600020905b815481529060010190602001808311611629575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006116ea91906138f2565b6002820160006116fa91906138f2565b6003820160006101000a81549060ff021916905560048201600061171e919061393a565b60058201600061172e919061393a565b505050505050565b60006003826040518082805190602001908083835b602083101515611770578051825260208201915060208101905060208303925061174b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002826040518082805190602001908083835b60208310151561180557805182526020820191506020810190506020830392506117e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118bd57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195c57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167fc3168fdc13112e44a031057dbf6c609b33353addb4d8037d24543e22cbfe2acd8360050185604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a675780601f10611a3c57610100808354040283529160200191611a67565b820191906000526020600020905b815481529060010190602001808311611a4a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015611aa1578082015181840152602081019050611a86565b50505050905090810190601f168015611ace5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826005019080519060200190611af5929190613982565b5050505050565b6000611b06613a02565b611b0e613a02565b6000611b18613a16565b611b20613a16565b611b28613a2a565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c625780601f10611c3757610100808354040283529160200191611c62565b820191906000526020600020905b815481529060010190602001808311611c4557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d045780601f10611cd957610100808354040283529160200191611d04565b820191906000526020600020905b815481529060010190602001808311611ce757829003601f168201915b505050505081526020016003820160009054906101000a900460ff1660ff1660ff168152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e655780601f10611e3a57610100808354040283529160200191611e65565b820191906000526020600020905b815481529060010190602001808311611e4857829003601f168201915b5050505050815250509050806000015181602001518260400151836060015184608001518560a001518494508393508191508090509650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3057600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fce57600080fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561200b57600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b60208310151561205c5780518252602082019150602081019050602083039250612037565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120d257600080fd5b87600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561212357805182526020820191506020810190506020830392506120fe565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561219957600080fd5b60c0604051908101604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018860ff16815260200187815260200186815250600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190612282929190613a92565b50604082015181600201908051906020019061229f929190613a92565b5060608201518160030160006101000a81548160ff021916908360ff16021790555060808201518160040190805190602001906122dd929190613b12565b5060a08201518160050190805190602001906122fa929190613b12565b50905050600480548060010182816123129190613b92565b916000526020600020900160008c909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050896002896040518082805190602001908083835b60208310151561239a5780518252602082019150602081019050602083039250612375565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960038a6040518082805190602001908083835b602083101515612444578051825260208201915060208101905060208303925061241f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508973ffffffffffffffffffffffffffffffffffffffff167fd8d928b0b50ca11d9dc273236b46f3526515b03602f71f3a6af4f45bd9fa91448a8a8a8a8a6040518080602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561254a57808201518184015260208101905061252f565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b838110156125b0578082015181840152602081019050612595565b50505050905090810190601f1680156125dd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156126165780820151818401526020810190506125fb565b50505050905090810190601f1680156126435780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561267c578082015181840152602081019050612661565b50505050905090810190601f1680156126a95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a250505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272657600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156127c557600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561281657805182526020820191506020810190506020830392506127f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561288c57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f4a6dbfc867b179991dec22ff19960f0a94d8d9d891fc556f547764670340e8ae84600101866040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129975780601f1061296c57610100808354040283529160200191612997565b820191906000526020600020905b81548152906001019060200180831161297a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156129d15780820151818401526020810190506129b6565b50505050905090810190601f1680156129fe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a26003836001016040518082805460018160011615610100020316600290048015612a6e5780601f10612a4c576101008083540402835291820191612a6e565b820191906000526020600020905b815481529060010190602001808311612a5a575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846003856040518082805190602001908083835b602083101515612add5780518252602082019150602081019050602083039250612ab8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083836001019080519060200190612b66929190613bbe565b505050505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c405780601f10612c1557610100808354040283529160200191612c40565b820191906000526020600020905b815481529060010190602001808311612c2357829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cde5780601f10612cb357610100808354040283529160200191612cde565b820191906000526020600020905b815481529060010190602001808311612cc157829003601f168201915b5050505050908060030160009054906101000a900460ff1690806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b505050505090806005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e2d5780601f10612e0257610100808354040283529160200191612e2d565b820191906000526020600020905b815481529060010190602001808311612e1057829003601f168201915b5050505050905086565b600481815481101515612e4657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e80613a02565b612e88613a02565b6000612e92613a16565b612e9a613a16565b60006003886040518082805190602001908083835b602083101515612ed45780518252602082019150602081019050602083039250612eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f3381611afc565b9650965096509650965096505091939550919395565b612f51613c3e565b6004805480602002602001604051908101604052809291908181526020018280548015612fd357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612f89575b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303a57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156130d957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167f5b19f79ac4e8cfa820815502e11615f1a449e28155dc289ec5cac1a11f90869483600401856040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131e45780601f106131b9576101008083540402835291602001916131e4565b820191906000526020600020905b8154815290600101906020018083116131c757829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b8381101561321e578082015181840152602081019050613203565b50505050905090810190601f16801561324b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826004019080519060200190613272929190613982565b5050505050565b6000613283613a02565b61328b613a02565b6000613295613a16565b61329d613a16565b60006002886040518082805190602001908083835b6020831015156132d757805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061333681611afc565b9650965096509650965096505091939550919395565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561344857600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b6020831015156134995780518252602082019150602081019050602083039250613474565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561350f57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f53d878a6530e56c9bc96548fa0a8cae4f1d1f49c86b0e934c086b992ebb6998f846002018660405180806020018060200183810383528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561361a5780601f106135ef5761010080835404028352916020019161361a565b820191906000526020600020905b8154815290600101906020018083116135fd57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015613654578082015181840152602081019050613639565b50505050905090810190601f1680156136815780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260028360020160405180828054600181600116156101000203166002900480156136f15780601f106136cf5761010080835404028352918201916136f1565b820191906000526020600020905b8154815290600101906020018083116136dd575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846002856040518082805190602001908083835b602083101515613760578051825260208201915060208101905060208303925061373b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360020190805190602001906137e9929190613bbe565b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561384c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156138c357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b8154818355818115116138ed578183600052602060002091820191016138ec9190613c52565b5b505050565b50805460018160011615610100020316600290046000825580601f106139185750613937565b601f0160209004906000526020600020908101906139369190613c52565b5b50565b50805460018160011615610100020316600290046000825580601f10613960575061397f565b601f01602090049060005260206000209081019061397e9190613c52565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c357805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f05782518255916020019190600101906139d5565b5b5090506139fe9190613c52565b5090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b60c060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613a5b613c77565b8152602001613a68613c77565b8152602001600060ff168152602001613a7f613c8b565b8152602001613a8c613c8b565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ad357805160ff1916838001178555613b01565b82800160010185558215613b01579182015b82811115613b00578251825591602001919060010190613ae5565b5b509050613b0e9190613c52565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b5357805160ff1916838001178555613b81565b82800160010185558215613b81579182015b82811115613b80578251825591602001919060010190613b65565b5b509050613b8e9190613c52565b5090565b815481835581811511613bb957818360005260206000209182019101613bb89190613c52565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bff57805160ff1916838001178555613c2d565b82800160010185558215613c2d579182015b82811115613c2c578251825591602001919060010190613c11565b5b509050613c3a9190613c52565b5090565b602060405190810160405280600081525090565b613c7491905b80821115613c70576000816000905550600101613c58565b5090565b90565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a723058200125fffe817cb7e4c2769cfaca2c0aaf9ff3931bcc07b0739f355303c512435b0029", + "updated_at": 1522264000419, + "source_map": "901:8364:0:-;;;290:10:1;282:5;;:18;;;;;;;;;;;;;;;;;;901:8364:0;;;;;;", + "source_map_runtime": "901:8364:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3955:650;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7082:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6796:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6288:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7360:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;223:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:852:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1818:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8067:392;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9132:131:0;;;;;;;;;;;;;;;;;5835:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:400;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:396;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:140:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;3955:650:0;4245:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;4058:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;4114:6;4088:32;;:14;4103:6;4088:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;4080:41;;;;;;;;4157:14;4196:1;4172:14;:21;;;;:25;4157:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:14;4147:6;4132:22;;;;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;4233:1;4208:14;:26;;;;;;;;;;;;;;:::i;:::-;;4275:6;:14;4282:6;4275:14;;;;;;;;;;;;;;;4245:44;;4327:5;:11;;;;;;;;;;;;4299:184;;;4352:5;:10;;4376:5;:12;;4402:5;:14;;;;;;;;;;;;4430:5;:14;;4458:5;:15;;4299:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4500:13;4514:5;:12;;4500:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:34;;;;;;;;;;;4544:11;4556:5;:10;;4544:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4537:30;;;;;;;;;;;4584:6;:14;4591:6;4584:14;;;;;;;;;;;;;;;;4577:21;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;382:1:1;3955:650:0;;;:::o;7082:114::-;7145:7;7171:11;7183:5;7171:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7171:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7164:25;;7082:114;;;:::o;6796:122::-;6863:7;6889:13;6903:7;6889:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6889:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:29;;6796:122;;;:::o;6288:295::-;6424:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;6402:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;6454:6;:14;6461:6;6454:14;;;;;;;;;;;;;;;6424:44;;6502:6;6478:60;;;6510:5;:15;;6527:10;6478:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6478:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6566:10;6548:5;:15;;:28;;;;;;;;;;;;:::i;:::-;;382:1:1;6288:295:0;;;:::o;7360:550::-;7464:7;7501:6;;:::i;:::-;7530;;:::i;:::-;7561:5;7594;;:::i;:::-;7627;;:::i;:::-;7673:26;;:::i;:::-;7702:6;:14;7709:6;7702:14;;;;;;;;;;;;;;;7673:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:5;:11;;;7772:5;:10;;;7796:5;:12;;;7822:5;:14;;;7850:5;:14;;;7878:5;:15;;;7726:177;;;;;;;;;;;;;;;;;;;;;;;;7360:550;;;;;;;;:::o;223:20:1:-;;;;;;;;;;;;;:::o;2975:852:0:-;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;3199:6:0;2237:1;2205:34;;:6;:14;2212:6;2205:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;2197:43;;;;;;;;3230:6;2582:1;2562:22;;:8;:22;;;;2554:31;;;;;;;;3265:7;2475:1;2441:36;;:13;2455:7;2441:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2441:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2433:45;;;;;;;;3299:5;2352:1;2322:32;;:11;2334:5;2322:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2322:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;2314:41;;;;;;;;3337:207;;;;;;;;;3372:6;3337:207;;;;;;3398:5;3337:207;;;;3425:7;3337:207;;;;3456:9;3337:207;;;;;;3489:9;3337:207;;;;3523:10;3337:207;;;3320:6;:14;3327:6;3320:14;;;;;;;;;;;;;;;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3554:14;:27;;;;;;;;;;;:::i;:::-;;;;;;;;;;3574:6;3554:27;;;;;;;;;;;;;;;;;;;;;;;3616:6;3591:13;3605:7;3591:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3591:22:0;;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3653:6;3632:11;3644:5;3632:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3632:18:0;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3694:6;3669:151;;;3714:5;3733:7;3754:9;3777;3800:10;3669:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:1;2595;2250;382::1;2975:852:0;;;;;;:::o;4753:370::-;4912:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;4858:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;4891:5;2352:1;2322:32;;:11;2334:5;2322:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2322:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;2314:41;;;;;;;;4942:6;:14;4949:6;4942:14;;;;;;;;;;;;;;;4912:44;;4985:6;4966:45;;;4993:5;:10;;5005:5;4966:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4966:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5028:11;5040:5;:10;;5028:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:30;;;;;;;;;;;5082:6;5061:11;5073:5;5061:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5061:18:0;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;5111:5;5098;:10;;:18;;;;;;;;;;;;:::i;:::-;;2130:1;382::1;4753:370:0;;;:::o;1671:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1818:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8067:392::-;8167:7;8204:6;;:::i;:::-;8233;;:::i;:::-;8264:5;8297;;:::i;:::-;8330;;:::i;:::-;8376:14;8393:11;8405:5;8393:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8393:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8376:35;;8428:24;8445:6;8428:16;:24::i;:::-;8421:31;;;;;;;;;;;;8067:392;;;;;;;;:::o;9132:131::-;9210:9;;:::i;:::-;9242:14;9235:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:131;:::o;5835:288::-;5969:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;5947:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;5999:6;:14;6006:6;5999:14;;;;;;;;;;;;;;;5969:44;;6046:6;6023:57;;;6054:5;:14;;6070:9;6023:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6023:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:9;6090:5;:14;;:26;;;;;;;;;;;;:::i;:::-;;382:1:1;5835:288:0;;;:::o;8622:400::-;8726:7;8763:6;;:::i;:::-;8792;;:::i;:::-;8823:5;8856;;:::i;:::-;8889;;:::i;:::-;8935:14;8952:13;8966:7;8952:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8952:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8935:39;;8991:24;9008:6;8991:16;:24::i;:::-;8984:31;;;;;;;;;;;;8622:400;;;;;;;;:::o;5277:396::-;5444:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;5386:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;5421:7;2475:1;2441:36;;:13;2455:7;2441:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2441:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2433:45;;;;;;;;5474:6;:14;5481:6;5474:14;;;;;;;;;;;;;;;5444:44;;5519:6;5498:51;;;5527:5;:12;;5541:7;5498:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5498:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5566:13;5580:5;:12;;5566:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:34;;;;;;;;;;;5628:6;5603:13;5617:7;5603:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5603:22:0;;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;5659:7;5644:5;:12;;:22;;;;;;;;;;;;:::i;:::-;;2130:1;382::1;5277:396:0;;;:::o;396:140:1:-;366:5;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;485:1;465:22;;:8;:22;;;;461:69;;;511:8;503:5;;:16;;;;;;;;;;;;;;;;;;461:69;396:140;:::o;901:8364:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o", + "sources": [ + "TokenRegistry.sol", + "previous/Ownable/Ownable_v1.sol" + ], + "address": "0x0b1ba0af832d7c05fd64161e0db78e85978e8082", + "constructor_args": "0x" + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/TokenTransferProxy.json b/packages/0x.js/test/artifacts/TokenTransferProxy.json new file mode 100644 index 000000000..1dae6ff10 --- /dev/null +++ b/packages/0x.js/test/artifacts/TokenTransferProxy.json @@ -0,0 +1,198 @@ +{ + "contract_name": "TokenTransferProxy", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xf376b57d58b01cb4e9c70a03a1ab6b06bc61d7eb4714bc360dd063c08028453a", + "source_tree_hash": "0xdf01ff6605f16387ea2d3e043c6bce5d2f6661f23b4243d3783e0ede0e5dfa1d", + "optimizer_enabled": false, + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "target", + "type": "address" + } + ], + "name": "addAuthorizedAddress", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "authorities", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "target", + "type": "address" + } + ], + "name": "removeAuthorizedAddress", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAuthorizedAddresses", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "target", + "type": "address" + }, + { + "indexed": true, + "name": "caller", + "type": "address" + } + ], + "name": "LogAuthorizedAddressAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "target", + "type": "address" + }, + { + "indexed": true, + "name": "caller", + "type": "address" + } + ], + "name": "LogAuthorizedAddressRemoved", + "type": "event" + } + ], + "bytecode": "0x6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bbb806100536000396000f30060606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315dacbea1461009357806342f1181e1461012b578063494503d41461016457806370712939146101c75780638da5cb5b14610200578063b918161114610255578063d39de6e9146102a6578063f2fde38b14610310575b600080fd5b341561009e57600080fd5b610111600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610349565b604051808215151515815260200191505060405180910390f35b341561013657600080fd5b610162600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061049a565b005b341561016f57600080fd5b6101856004808035906020019091905050610667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d257600080fd5b6101fe600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a6565b005b341561020b57600080fd5b610213610950565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026057600080fd5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610975565b604051808215151515815260200191505060405180910390f35b34156102b157600080fd5b6102b9610995565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fc5780820151818401526020810190506102e1565b505050509050019250505060405180910390f35b341561031b57600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a29565b005b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103a357600080fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561047957600080fd5b5af1151561048657600080fd5b505050604051805190509050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f557600080fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561054f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600280548060010182816105ba9190610afe565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f94bb87f4c15c4587ff559a7584006fa01ddf9299359be6b512b94527aa961aca60405160405180910390a35050565b60028181548110151561067657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070357600080fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561075c57600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600091505b6002805490508210156108f1578273ffffffffffffffffffffffffffffffffffffffff166002838154811015156107e357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108e457600260016002805490500381548110151561084257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028381548110151561087d57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002818180549050039150816108de9190610b2a565b506108f1565b81806001019250506107b0565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff5b347a1e40749dd050f5f07fbdbeb7e3efa9756903044dd29401fd1d4bb4a1c60405160405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b61099d610b56565b6002805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d5575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610afb57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b815481835581811511610b2557818360005260206000209182019101610b249190610b6a565b5b505050565b815481835581811511610b5157818360005260206000209182019101610b509190610b6a565b5b505050565b602060405190810160405280600081525090565b610b8c91905b80821115610b88576000816000905550600101610b70565b5090565b905600a165627a7a72305820fed86165dce3bb5eb0a28cdca700b6bf5b860b17026cf311e6641cad8a63914f0029", + "runtime_bytecode": "0x60606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315dacbea1461009357806342f1181e1461012b578063494503d41461016457806370712939146101c75780638da5cb5b14610200578063b918161114610255578063d39de6e9146102a6578063f2fde38b14610310575b600080fd5b341561009e57600080fd5b610111600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610349565b604051808215151515815260200191505060405180910390f35b341561013657600080fd5b610162600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061049a565b005b341561016f57600080fd5b6101856004808035906020019091905050610667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d257600080fd5b6101fe600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a6565b005b341561020b57600080fd5b610213610950565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026057600080fd5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610975565b604051808215151515815260200191505060405180910390f35b34156102b157600080fd5b6102b9610995565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fc5780820151818401526020810190506102e1565b505050509050019250505060405180910390f35b341561031b57600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a29565b005b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103a357600080fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561047957600080fd5b5af1151561048657600080fd5b505050604051805190509050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f557600080fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561054f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600280548060010182816105ba9190610afe565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f94bb87f4c15c4587ff559a7584006fa01ddf9299359be6b512b94527aa961aca60405160405180910390a35050565b60028181548110151561067657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070357600080fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561075c57600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600091505b6002805490508210156108f1578273ffffffffffffffffffffffffffffffffffffffff166002838154811015156107e357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108e457600260016002805490500381548110151561084257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028381548110151561087d57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002818180549050039150816108de9190610b2a565b506108f1565b81806001019250506107b0565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff5b347a1e40749dd050f5f07fbdbeb7e3efa9756903044dd29401fd1d4bb4a1c60405160405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b61099d610b56565b6002805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d5575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610afb57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b815481835581811511610b2557818360005260206000209182019101610b249190610b6a565b5b505050565b815481835581811511610b5157818360005260206000209182019101610b509190610b6a565b5b505050565b602060405190810160405280600081525090565b610b8c91905b80821115610b88576000816000905550600101610b70565b5090565b905600a165627a7a72305820fed86165dce3bb5eb0a28cdca700b6bf5b860b17026cf311e6641cad8a63914f0029", + "updated_at": 1522263988802, + "source_map": "974:2475:0:-;;;290:10:1;282:5;;:18;;;;;;;;;;;;;;;;;;974:2475:0;;;;;;", + "source_map_runtime": "974:2475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1776:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;1448:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2140:476;;;;;;;;;;;;;;;;;;;;;;;;;;;;223:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1399:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3314:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3314:133:0;;;;;;;;;;;;;;;;;396:140:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:239:0;3092:4;1142:10;:22;1153:10;1142:22;;;;;;;;;;;;;;;;;;;;;;;;;1134:31;;;;;;;;3125:5;3119:25;;;3145:4;3151:2;3155:5;3119:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3112:49;;2929:239;;;;;;:::o;1776:250::-;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;1883:6:0;1356:10;:18;1367:6;1356:18;;;;;;;;;;;;;;;;;;;;;;;;;1355:19;1347:28;;;;;;;;1926:4;1905:10;:18;1916:6;1905:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1940:11;:24;;;;;;;;;;;:::i;:::-;;;;;;;;;;1957:6;1940:24;;;;;;;;;;;;;;;;;;;;;;;2008:10;1974:45;;2000:6;1974:45;;;;;;;;;;;;382:1:1;1776:250:0;:::o;1448:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2140:476::-;2309:6;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;2247:6:0;1249:10;:18;1260:6;1249:18;;;;;;;;;;;;;;;;;;;;;;;;;1241:27;;;;;;;;2276:10;:18;2287:6;2276:18;;;;;;;;;;;;;;;;2269:25;;;;;;;;;;;2318:1;2309:10;;2304:249;2325:11;:18;;;;2321:1;:22;2304:249;;;2386:6;2368:24;;:11;2380:1;2368:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;2364:179;;;2429:11;2462:1;2441:11;:18;;;;:22;2429:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:11;2424:1;2412:14;;;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;2504:1;2482:11;:23;;;;;;;;;;;;;;:::i;:::-;;2523:5;;2364:179;2345:3;;;;;;;2304:249;;;2598:10;2562:47;;2590:6;2562:47;;;;;;;;;;;;382:1:1;2140:476:0;;:::o;223:20:1:-;;;;;;;;;;;;;:::o;1399:43:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;3314:133::-;3397:9;;:::i;:::-;3429:11;3422:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3314:133;:::o;396:140:1:-;366:5;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;485:1;465:22;;:8;:22;;;;461:69;;;511:8;503:5;;:16;;;;;;;;;;;;;;;;;;461:69;396:140;:::o;974:2475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "TokenTransferProxy.sol", + "previous/Ownable/Ownable_v1.sol", + "previous/Token/Token_v1.sol" + ], + "address": "0x1dc4c1cefef38a777b15aa20260a54e584b16c48", + "constructor_args": "0x" + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/WETH9.json b/packages/0x.js/test/artifacts/WETH9.json new file mode 100644 index 000000000..8e78ff8c3 --- /dev/null +++ b/packages/0x.js/test/artifacts/WETH9.json @@ -0,0 +1,300 @@ +{ + "contract_name": "WETH9", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0xce985174db1a24d312c0d544abb926a9b107bd9abd6424288a8e54a16d3e006b", + "source_tree_hash": "0xce985174db1a24d312c0d544abb926a9b107bd9abd6424288a8e54a16d3e006b", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "guy", + "type": "address" + }, + { + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "src", + "type": "address" + }, + { + "name": "dst", + "type": "address" + }, + { + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "dst", + "type": "address" + }, + { + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deposit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "src", + "type": "address" + }, + { + "indexed": true, + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "src", + "type": "address" + }, + { + "indexed": true, + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "src", + "type": "address" + }, + { + "indexed": false, + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + } + ], + "bytecode": "0x60606040526040805190810160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600481526020017f57455448000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820554392411204aaff4bbf87641e26cc9ba9429832b57fb8bf17a20725869079630029", + "runtime_bytecode": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820554392411204aaff4bbf87641e26cc9ba9429832b57fb8bf17a20725869079630029", + "updated_at": 1522263987558, + "source_map": "712:1778:0:-;;;733:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;779:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;841:2;816:27;;;;;;;;;;;;;;;;;;;;712:1778;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "source_map_runtime": "712:1778:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1281:9;:7;:9::i;:::-;712:1778;733:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;733:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1728:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2033:455;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1432:198;;;;;;;;;;;;;;;;;;;;;;;;;;816:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;779:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:125;;;;;;1173:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:125;1371:9;1346;:21;1356:10;1346:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;1398:10;1390:30;;;1410:9;1390:30;;;;;;;;;;;;;;;;;;1302:125::o;733:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1728:172::-;1784:4;1829:3;1800:9;:21;1810:10;1800:21;;;;;;;;;;;;;;;:26;1822:3;1800:26;;;;;;;;;;;;;;;:32;;;;1863:3;1842:30;;1851:10;1842:30;;;1868:3;1842:30;;;;;;;;;;;;;;;;;;1889:4;1882:11;;1728:172;;;;:::o;1636:86::-;1680:4;1703;:12;;;1696:19;;1636:86;:::o;2033:455::-;2123:4;2169:3;2151:9;:14;2161:3;2151:14;;;;;;;;;;;;;;;;:21;;2143:30;;;;;;;;2195:10;2188:17;;:3;:17;;;;:59;;;;;2244:2;2209:9;:14;2219:3;2209:14;;;;;;;;;;;;;;;:26;2224:10;2209:26;;;;;;;;;;;;;;;;:38;;2188:59;2184:179;;;2301:3;2271:9;:14;2281:3;2271:14;;;;;;;;;;;;;;;:26;2286:10;2271:26;;;;;;;;;;;;;;;;:33;;2263:42;;;;;;;;2349:3;2319:9;:14;2329:3;2319:14;;;;;;;;;;;;;;;:26;2334:10;2319:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;2184:179;2391:3;2373:9;:14;2383:3;2373:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2422:3;2404:9;:14;2414:3;2404:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2450:3;2436:23;;2445:3;2436:23;;;2455:3;2436:23;;;;;;;;;;;;;;;;;;2477:4;2470:11;;2033:455;;;;;:::o;1432:198::-;1510:3;1485:9;:21;1495:10;1485:21;;;;;;;;;;;;;;;;:28;;1477:37;;;;;;;;1549:3;1524:9;:21;1534:10;1524:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;1562:10;:19;;:24;1582:3;1562:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:10;1596:27;;;1619:3;1596:27;;;;;;;;;;;;;;;;;;1432:198;:::o;816:27::-;;;;;;;;;;;;;:::o;1102:65::-;;;;;;;;;;;;;;;;;:::o;779:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1906:121::-;1963:4;1986:34;1999:10;2011:3;2016;1986:12;:34::i;:::-;1979:41;;1906:121;;;;:::o;1173:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "sources": [ + "WETH9.sol" + ], + "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c", + "constructor_args": "0x" + } + } +} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/ZRXToken.json b/packages/0x.js/test/artifacts/ZRXToken.json new file mode 100644 index 000000000..add1b46cb --- /dev/null +++ b/packages/0x.js/test/artifacts/ZRXToken.json @@ -0,0 +1,247 @@ +{ + "contract_name": "ZRXToken", + "networks": { + "50": { + "solc_version": "0.4.21", + "keccak256": "0x68278a8290a59fb66c378f7517c1029efe226d916e252deceb0a2799a6bc4e77", + "source_tree_hash": "0xa2899bdb1c73e3ea6e53dc3f6a150b74f770578765c3f35ce41b912024eef73a", + "optimizer_enabled": false, + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ], + "bytecode": "0x60606040526b033b2e3c9fd0803ce8000000600355341561001f57600080fd5b6003546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b6b806100736000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009e578063095ea7b31461012c57806318160ddd1461018657806323b872dd146101af578063313ce5671461022857806370a082311461025757806395d89b41146102a4578063a9059cbb14610332578063dd62ed3e1461038c575b600080fd5b34156100a957600080fd5b6100b16103f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61016c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610431565b604051808215151515815260200191505060405180910390f35b341561019157600080fd5b610199610523565b6040518082815260200191505060405180910390f35b34156101ba57600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610529565b604051808215151515815260200191505060405180910390f35b341561023357600080fd5b61023b61084e565b604051808260ff1660ff16815260200191505060405180910390f35b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610853565b6040518082815260200191505060405180910390f35b34156102af57600080fd5b6102b761089b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033d57600080fd5b610372600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108d4565b604051808215151515815260200191505060405180910390f35b341561039757600080fd5b6103e2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ab8565b6040518082815260200191505060405180910390f35b6040805190810160405280601181526020017f30782050726f746f636f6c20546f6b656e00000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60035481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105f95750828110155b801561068357506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1561084157826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107d35782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150610846565b600091505b509392505050565b601281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f5a5258000000000000000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109a257506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610aad57816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ab2565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058208d390fd21199c29f8db28b3d6e4408333dc6e8e0cc07d9c272ff17c7f16dc2120029", + "runtime_bytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009e578063095ea7b31461012c57806318160ddd1461018657806323b872dd146101af578063313ce5671461022857806370a082311461025757806395d89b41146102a4578063a9059cbb14610332578063dd62ed3e1461038c575b600080fd5b34156100a957600080fd5b6100b16103f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61016c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610431565b604051808215151515815260200191505060405180910390f35b341561019157600080fd5b610199610523565b6040518082815260200191505060405180910390f35b34156101ba57600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610529565b604051808215151515815260200191505060405180910390f35b341561023357600080fd5b61023b61084e565b604051808260ff1660ff16815260200191505060405180910390f35b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610853565b6040518082815260200191505060405180910390f35b34156102af57600080fd5b6102b761089b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033d57600080fd5b610372600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108d4565b604051808215151515815260200191505060405180910390f35b341561039757600080fd5b6103e2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ab8565b6040518082815260200191505060405180910390f35b6040805190810160405280601181526020017f30782050726f746f636f6c20546f6b656e00000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60035481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105f95750828110155b801561068357506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1561084157826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107d35782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150610846565b600091505b509392505050565b601281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f5a5258000000000000000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109a257506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610aad57816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ab2565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058208d390fd21199c29f8db28b3d6e4408333dc6e8e0cc07d9c272ff17c7f16dc2120029", + "updated_at": 1522263985587, + "source_map": "753:342:0:-;;;872:6;846:32;;1022:71;;;;;;;;1075:11;;1052:8;:20;1061:10;1052:20;;;;;;;;;;;;;;;:34;;;;753:342;;;;;;", + "source_map_runtime": "753:342:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;923:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1087:187:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1066:609:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;805:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;978:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;125:410:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:49:0;;;;;;;;;;;;;;;;;;;;:::o;1087:187:1:-;1144:4;1192:6;1160:7;:19;1168:10;1160:19;;;;;;;;;;;;;;;:29;1180:8;1160:29;;;;;;;;;;;;;;;:38;;;;1229:8;1208:38;;1217:10;1208:38;;;1239:6;1208:38;;;;;;;;;;;;;;;;;;1263:4;1256:11;;1087:187;;;;:::o;846:32:0:-;;;;:::o;1066:609:3:-;1161:4;1181:14;1198:7;:14;1206:5;1198:14;;;;;;;;;;;;;;;:26;1213:10;1198:26;;;;;;;;;;;;;;;;1181:43;;1257:6;1238:8;:15;1247:5;1238:15;;;;;;;;;;;;;;;;:25;;:60;;;;;1292:6;1279:9;:19;;1238:60;:115;;;;;1340:8;:13;1349:3;1340:13;;;;;;;;;;;;;;;;1330:6;1314:8;:13;1323:3;1314:13;;;;;;;;;;;;;;;;:22;:39;;1238:115;1234:435;;;1395:6;1378:8;:13;1387:3;1378:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1434:6;1415:8;:15;1424:5;1415:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;768:10;1458:9;:20;1454:95;;;1528:6;1498:7;:14;1506:5;1498:14;;;;;;;;;;;;;;;:26;1513:10;1498:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;1454:95;1578:3;1562:28;;1571:5;1562:28;;;1583:6;1562:28;;;;;;;;;;;;;;;;;;1611:4;1604:11;;;;1234:435;1653:5;1646:12;;1066:609;;;;;;;:::o;805:35:0:-;838:2;805:35;:::o;982:99:1:-;1035:4;1058:8;:16;1067:6;1058:16;;;;;;;;;;;;;;;;1051:23;;982:99;;;:::o;978:37:0:-;;;;;;;;;;;;;;;;;;;;:::o;125:410:1:-;178:4;291:6;267:8;:20;276:10;267:20;;;;;;;;;;;;;;;;:30;;:73;;;;;327:8;:13;336:3;327:13;;;;;;;;;;;;;;;;317:6;301:8;:13;310:3;301:13;;;;;;;;;;;;;;;;:22;:39;;267:73;263:266;;;380:6;356:8;:20;365:10;356:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;417:6;400:8;:13;409:3;400:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;458:3;437:33;;446:10;437:33;;;463:6;437:33;;;;;;;;;;;;;;;;;;491:4;484:11;;;;263:266;521:5;514:12;;125:410;;;;;:::o;1280:126::-;1351:4;1374:7;:15;1382:6;1374:15;;;;;;;;;;;;;;;:25;1390:8;1374:25;;;;;;;;;;;;;;;;1367:32;;1280:126;;;;:::o", + "sources": [ + "ZRXToken.sol", + "previous/ERC20Token/ERC20Token_v1.sol", + "previous/Token/Token_v1.sol", + "previous/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol" + ], + "address": "0x1d7022f5b17d2f8b695918fb48fa1089c9f85401", + "constructor_args": "0x" + } + } +} \ No newline at end of file -- cgit v1.2.3 From 3e648cfb7ec20f9e5b0160dbc55c78277e9d56cc Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 16:33:18 +0900 Subject: Move migrations over from contracts to 0x.js --- .../0x.js/test/migrations/config/token_info.ts | 40 ++++++++++ packages/0x.js/test/migrations/migrate.ts | 90 ++++++++++++++++++++++ packages/0x.js/test/migrations/types.ts | 38 +++++++++ .../contracts/migrations/config/multisig_sample.ts | 10 --- packages/contracts/migrations/config/token_info.ts | 40 ---------- packages/contracts/migrations/index.ts | 20 ----- packages/contracts/migrations/migrate.ts | 90 ---------------------- packages/contracts/migrations/types.ts | 23 ------ packages/contracts/package.json | 1 - 9 files changed, 168 insertions(+), 184 deletions(-) create mode 100644 packages/0x.js/test/migrations/config/token_info.ts create mode 100644 packages/0x.js/test/migrations/migrate.ts create mode 100644 packages/0x.js/test/migrations/types.ts delete mode 100644 packages/contracts/migrations/config/multisig_sample.ts delete mode 100644 packages/contracts/migrations/config/token_info.ts delete mode 100644 packages/contracts/migrations/index.ts delete mode 100644 packages/contracts/migrations/migrate.ts delete mode 100644 packages/contracts/migrations/types.ts (limited to 'packages') diff --git a/packages/0x.js/test/migrations/config/token_info.ts b/packages/0x.js/test/migrations/config/token_info.ts new file mode 100644 index 000000000..0d0e90917 --- /dev/null +++ b/packages/0x.js/test/migrations/config/token_info.ts @@ -0,0 +1,40 @@ +import { constants } from '../../utils/constants'; +import { Token } from '../types'; + +export const tokenInfo: Token[] = [ + { + name: 'Augur Reputation Token', + symbol: 'REP', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Digix DAO Token', + symbol: 'DGD', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Golem Network Token', + symbol: 'GNT', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'MakerDAO', + symbol: 'MKR', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Melon Token', + symbol: 'MLN', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, +]; diff --git a/packages/0x.js/test/migrations/migrate.ts b/packages/0x.js/test/migrations/migrate.ts new file mode 100644 index 000000000..85fb2a34f --- /dev/null +++ b/packages/0x.js/test/migrations/migrate.ts @@ -0,0 +1,90 @@ +import { Deployer } from '@0xproject/deployer'; +import { BigNumber } from '@0xproject/utils'; +import { Web3Wrapper } from '@0xproject/web3-wrapper'; +import * as _ from 'lodash'; + +import { constants } from '../utils/constants'; + +import { tokenInfo } from './config/token_info'; +import { ContractName } from './types'; + +/** + * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command. + * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically, + * the migration should be written to run synchronously. + * @param deployer Deployer instance. + */ +export const runMigrationsAsync = async (deployer: Deployer) => { + const web3Wrapper: Web3Wrapper = deployer.web3Wrapper; + const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync(); + + const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy); + const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken); + const etherToken = await deployer.deployAndSaveAsync(ContractName.WETH9); + const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry); + + const exchangeArgs = [zrxToken.address, tokenTransferProxy.address]; + const owners = [accounts[0], accounts[1]]; + const confirmationsRequired = new BigNumber(2); + const secondsRequired = new BigNumber(0); + const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address]; + const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs); + const multiSig = await deployer.deployAndSaveAsync( + ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, + multiSigArgs, + ); + + const owner = accounts[0]; + await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner }); + await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner }); + const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync( + zrxToken.address, + tokenInfo[0].name, + tokenInfo[0].symbol, + tokenInfo[0].decimals, + tokenInfo[0].ipfsHash, + tokenInfo[0].swarmHash, + { from: owner }, + ); + await tokenReg.addToken.sendTransactionAsync( + zrxToken.address, + '0x Protocol Token', + 'ZRX', + 18, + constants.NULL_BYTES, + constants.NULL_BYTES, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + await tokenReg.addToken.sendTransactionAsync( + etherToken.address, + 'Ether Token', + 'WETH', + 18, + constants.NULL_BYTES, + constants.NULL_BYTES, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + for (const token of tokenInfo) { + const totalSupply = new BigNumber(0); + const args = [token.name, token.symbol, token.decimals, totalSupply]; + const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args); + await tokenReg.addToken.sendTransactionAsync( + dummyToken.address, + token.name, + token.symbol, + token.decimals, + token.ipfsHash, + token.swarmHash, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + } +}; diff --git a/packages/0x.js/test/migrations/types.ts b/packages/0x.js/test/migrations/types.ts new file mode 100644 index 000000000..1887bfd96 --- /dev/null +++ b/packages/0x.js/test/migrations/types.ts @@ -0,0 +1,38 @@ +export interface MultiSigConfig { + owners: string[]; + confirmationsRequired: number; + secondsRequired: number; +} + +export interface MultiSigConfigByNetwork { + [networkName: string]: MultiSigConfig; +} + +export interface Token { + address?: string; + name: string; + symbol: string; + decimals: number; + ipfsHash: string; + swarmHash: string; +} + +export interface TokenInfoByNetwork { + development: Token[]; + live: Token[]; +} + +export enum ContractName { + TokenTransferProxy = 'TokenTransferProxy', + TokenRegistry = 'TokenRegistry', + MultiSigWalletWithTimeLock = 'MultiSigWalletWithTimeLock', + Exchange = 'Exchange', + ZRXToken = 'ZRXToken', + DummyToken = 'DummyToken', + WETH9 = 'WETH9', + MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress = 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', + MaliciousToken = 'MaliciousToken', + AccountLevels = 'AccountLevels', + EtherDelta = 'EtherDelta', + Arbitrage = 'Arbitrage', +} diff --git a/packages/contracts/migrations/config/multisig_sample.ts b/packages/contracts/migrations/config/multisig_sample.ts deleted file mode 100644 index bc2502fca..000000000 --- a/packages/contracts/migrations/config/multisig_sample.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { MultiSigConfigByNetwork } from '../types'; - -// Make a copy of this file named `multisig.js` and input custom params as needed -export const multiSig: MultiSigConfigByNetwork = { - kovan: { - owners: [], - confirmationsRequired: 0, - secondsRequired: 0, - }, -}; diff --git a/packages/contracts/migrations/config/token_info.ts b/packages/contracts/migrations/config/token_info.ts deleted file mode 100644 index 5fd3db144..000000000 --- a/packages/contracts/migrations/config/token_info.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { constants } from '../../util/constants'; -import { Token } from '../types'; - -export const tokenInfo: Token[] = [ - { - name: 'Augur Reputation Token', - symbol: 'REP', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Digix DAO Token', - symbol: 'DGD', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Golem Network Token', - symbol: 'GNT', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'MakerDAO', - symbol: 'MKR', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Melon Token', - symbol: 'MLN', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, -]; diff --git a/packages/contracts/migrations/index.ts b/packages/contracts/migrations/index.ts deleted file mode 100644 index 47ae7044d..000000000 --- a/packages/contracts/migrations/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Deployer } from '@0xproject/deployer'; -import { devConstants } from '@0xproject/dev-utils'; -import * as path from 'path'; - -import { constants } from '../util/constants'; - -import { runMigrationsAsync } from './migrate'; - -const deployerOpts = { - artifactsDir: path.resolve('src', 'artifacts'), - jsonrpcUrl: devConstants.RPC_URL, - networkId: constants.TESTRPC_NETWORK_ID, - defaults: { - gas: devConstants.GAS_ESTIMATE, - }, -}; - -export const deployer = new Deployer(deployerOpts); - -runMigrationsAsync(deployer).catch(console.log); diff --git a/packages/contracts/migrations/migrate.ts b/packages/contracts/migrations/migrate.ts deleted file mode 100644 index cff8af0ab..000000000 --- a/packages/contracts/migrations/migrate.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Deployer } from '@0xproject/deployer'; -import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import * as _ from 'lodash'; - -import { constants } from '../util/constants'; -import { ContractName } from '../util/types'; - -import { tokenInfo } from './config/token_info'; - -/** - * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command. - * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically, - * the migration should be written to run synchronously. - * @param deployer Deployer instance. - */ -export const runMigrationsAsync = async (deployer: Deployer) => { - const web3Wrapper: Web3Wrapper = deployer.web3Wrapper; - const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync(); - - const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy); - const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken); - const etherToken = await deployer.deployAndSaveAsync(ContractName.EtherToken); - const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry); - - const exchangeArgs = [zrxToken.address, tokenTransferProxy.address]; - const owners = [accounts[0], accounts[1]]; - const confirmationsRequired = new BigNumber(2); - const secondsRequired = new BigNumber(0); - const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address]; - const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs); - const multiSig = await deployer.deployAndSaveAsync( - ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, - multiSigArgs, - ); - - const owner = accounts[0]; - await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner }); - await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner }); - const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync( - zrxToken.address, - tokenInfo[0].name, - tokenInfo[0].symbol, - tokenInfo[0].decimals, - tokenInfo[0].ipfsHash, - tokenInfo[0].swarmHash, - { from: owner }, - ); - await tokenReg.addToken.sendTransactionAsync( - zrxToken.address, - '0x Protocol Token', - 'ZRX', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - await tokenReg.addToken.sendTransactionAsync( - etherToken.address, - 'Ether Token', - 'WETH', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - for (const token of tokenInfo) { - const totalSupply = new BigNumber(0); - const args = [token.name, token.symbol, token.decimals, totalSupply]; - const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args); - await tokenReg.addToken.sendTransactionAsync( - dummyToken.address, - token.name, - token.symbol, - token.decimals, - token.ipfsHash, - token.swarmHash, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - } -}; diff --git a/packages/contracts/migrations/types.ts b/packages/contracts/migrations/types.ts deleted file mode 100644 index 58d1e5b4f..000000000 --- a/packages/contracts/migrations/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface MultiSigConfig { - owners: string[]; - confirmationsRequired: number; - secondsRequired: number; -} - -export interface MultiSigConfigByNetwork { - [networkName: string]: MultiSigConfig; -} - -export interface Token { - address?: string; - name: string; - symbol: string; - decimals: number; - ipfsHash: string; - swarmHash: string; -} - -export interface TokenInfoByNetwork { - development: Token[]; - live: Token[]; -} diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 8152a9afe..1d393c60b 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -19,7 +19,6 @@ "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir src/artifacts", "clean": "shx rm -rf ./lib", "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", - "migrate": "yarn build && yarn compile && node ./lib/migrations/index.js", "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", -- cgit v1.2.3 From 20aaab0847d0ec8b2a44f392ddd467f0c475cfb5 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 4 Apr 2018 16:34:23 +0900 Subject: Add --exit to all mocha calls so they exit when called from top-level yarn command (https://github.com/mochajs/mocha/issues/3044) --- packages/assert/package.json | 2 +- packages/connect/package.json | 2 +- packages/deployer/package.json | 2 +- packages/json-schemas/package.json | 2 +- packages/metacoin/package.json | 2 +- packages/sol-cov/package.json | 2 +- packages/sra-report/package.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) (limited to 'packages') diff --git a/packages/assert/package.json b/packages/assert/package.json index 4e495d05f..c90f44e8c 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -9,7 +9,7 @@ "build": "tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "clean": "shx rm -rf lib test_temp scripts", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", - "run_mocha": "mocha lib/test/**/*_test.js", + "run_mocha": "mocha lib/test/**/*_test.js --exit", "prepublishOnly": "run-p build", "test": "run-s clean build run_mocha", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", diff --git a/packages/connect/package.json b/packages/connect/package.json index f0a01cff7..d07671b2f 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -17,7 +17,7 @@ "clean": "shx rm -rf lib test_temp scripts", "copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", - "run_mocha": "mocha lib/test/**/*_test.js", + "run_mocha": "mocha lib/test/**/*_test.js --exit", "test": "run-s clean build copy_test_fixtures run_mocha", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index 97c2f15b1..ad4ff30df 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -8,7 +8,7 @@ "build:watch": "tsc -w", "build": "yarn clean && copyfiles 'test/fixtures/contracts/**/*' ./lib && tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "test": "run-s build run_mocha", - "run_mocha": "mocha lib/test/*_test.js", + "run_mocha": "mocha lib/test/*_test.js --bail --exit", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "compile": "npm run build; node lib/src/cli.js compile", diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index b7eb99aef..66a2b0ff5 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -11,7 +11,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "test:circleci": "yarn test:coverage", - "run_mocha": "mocha lib/test/**/*_test.js", + "run_mocha": "mocha lib/test/**/*_test.js --exit", "clean": "shx rm -rf lib test_temp scripts", "build": "tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "manual:postpublish": "yarn build; node ./scripts/postpublish.js", diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 1177513a7..f63e1df61 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -12,7 +12,7 @@ "build": "tsc", "test": "run-s build run_mocha", "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov", - "run_mocha": "mocha 'lib/test/**/*.js'", + "run_mocha": "mocha lib/test/**/*.js --bail --exit", "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'artifacts/Metacoin.json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers --backend ethers && prettier --write 'src/contract_wrappers/**.ts'", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", diff --git a/packages/sol-cov/package.json b/packages/sol-cov/package.json index 6444fb876..f943a89fb 100644 --- a/packages/sol-cov/package.json +++ b/packages/sol-cov/package.json @@ -11,7 +11,7 @@ "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", "test:circleci": "yarn test:coverage", - "run_mocha": "mocha lib/test/**/*_test.js", + "run_mocha": "mocha lib/test/**/*_test.js --exit", "clean": "shx rm -rf lib scripts", "build": "copyfiles 'test/fixtures/**/*' ./lib && tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "manual:postpublish": "yarn build; node ./scripts/postpublish.js", diff --git a/packages/sra-report/package.json b/packages/sra-report/package.json index 3c24ec312..f4d9bb7fb 100644 --- a/packages/sra-report/package.json +++ b/packages/sra-report/package.json @@ -12,7 +12,7 @@ "test": "run-s clean build copy_test_environments copy_test_fixtures run_mocha", "copy_test_fixtures": "copyfiles -u 2 './test/fixtures/**/*.json' ./lib/test/fixtures", "copy_test_environments": "copyfiles -u 2 './test/environments/**/*.json' ./lib/test/environments", - "run_mocha": "mocha lib/test/**/*_test.js", + "run_mocha": "mocha lib/test/**/*_test.js --exit", "manual:postpublish": "yarn build; node ./scripts/postpublish.js" }, "bin": { -- cgit v1.2.3 From 24454938e51e40ae74809f15bd1f612c69c218ec Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 6 Apr 2018 15:03:14 +0900 Subject: Move away from using web3 directly in 0x.js tests --- packages/0x.js/test/0x.js_test.ts | 22 ++++----------- packages/0x.js/test/artifacts_test.ts | 8 +++--- packages/0x.js/test/assert_test.ts | 4 +-- packages/0x.js/test/ether_token_wrapper_test.ts | 9 +++--- packages/0x.js/test/event_watcher_test.ts | 5 ++-- .../0x.js/test/exchange_transfer_simulator_test.ts | 4 +-- packages/0x.js/test/exchange_wrapper_test.ts | 7 ++--- packages/0x.js/test/expiration_watcher_test.ts | 5 ++-- packages/0x.js/test/order_state_watcher_test.ts | 5 ++-- packages/0x.js/test/order_validation_test.ts | 5 ++-- packages/0x.js/test/subscription_test.ts | 5 ++-- packages/0x.js/test/token_registry_wrapper_test.ts | 4 +-- .../test/token_transfer_proxy_wrapper_test.ts | 5 ++-- packages/0x.js/test/token_wrapper_test.ts | 33 ++++++++++------------ packages/0x.js/test/utils/deployer.ts | 18 ++++++++++++ packages/0x.js/test/utils/web3_wrapper.ts | 4 ++- packages/contracts/test/utils/web3_wrapper.ts | 7 +++-- 17 files changed, 75 insertions(+), 75 deletions(-) create mode 100644 packages/0x.js/test/utils/deployer.ts (limited to 'packages') diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index 2ae944a99..e6163d568 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -12,19 +12,9 @@ import { ApprovalContractEventArgs, LogWithDecodedArgs, Order, TokenEvents, Zero import { runMigrationsAsync } from './migrations/migrate'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; +import { deployer } from './utils/deployer'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; - -const artifactsDir = path.resolve('test', 'artifacts'); -const deployerOpts = { - artifactsDir, - web3Provider: web3.currentProvider, - networkId: constants.TESTRPC_NETWORK_ID, - defaults: { - gas: devConstants.GAS_ESTIMATE, - }, -}; -const deployer = new Deployer(deployerOpts); +import { provider, web3Wrapper } from './utils/web3_wrapper'; const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); chaiSetup.configure(); @@ -39,7 +29,7 @@ describe('ZeroEx library', () => { const config = { networkId: constants.TESTRPC_NETWORK_ID, }; - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); }); describe('#setProvider', () => { it('overrides provider in nested web3s and invalidates contractInstances', async () => { @@ -49,7 +39,7 @@ describe('ZeroEx library', () => { expect((zeroEx.exchange as any)._exchangeContractIfExists).to.not.be.undefined(); expect((zeroEx.tokenRegistry as any)._tokenRegistryContractIfExists).to.not.be.undefined(); - const newProvider = web3.currentProvider; + const newProvider = provider; // Add property to newProvider so that we can differentiate it from old provider (newProvider as any).zeroExTestId = 1; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); @@ -296,7 +286,7 @@ describe('ZeroEx library', () => { exchangeContractAddress: ZeroEx.NULL_ADDRESS, networkId: constants.TESTRPC_NETWORK_ID, }; - const zeroExWithWrongExchangeAddress = new ZeroEx(web3.currentProvider, zeroExConfig); + const zeroExWithWrongExchangeAddress = new ZeroEx(provider, zeroExConfig); expect(zeroExWithWrongExchangeAddress.exchange.getContractAddress()).to.be.equal(ZeroEx.NULL_ADDRESS); }); it('allows to specify token registry token contract address', async () => { @@ -304,7 +294,7 @@ describe('ZeroEx library', () => { tokenRegistryContractAddress: ZeroEx.NULL_ADDRESS, networkId: constants.TESTRPC_NETWORK_ID, }; - const zeroExWithWrongTokenRegistryAddress = new ZeroEx(web3.currentProvider, zeroExConfig); + const zeroExWithWrongTokenRegistryAddress = new ZeroEx(provider, zeroExConfig); expect(zeroExWithWrongTokenRegistryAddress.tokenRegistry.getContractAddress()).to.be.equal( ZeroEx.NULL_ADDRESS, ); diff --git a/packages/0x.js/test/artifacts_test.ts b/packages/0x.js/test/artifacts_test.ts index e8ab9aa97..17f068a2e 100644 --- a/packages/0x.js/test/artifacts_test.ts +++ b/packages/0x.js/test/artifacts_test.ts @@ -17,11 +17,11 @@ describe('Artifacts', () => { const packageJSONContent = fs.readFileSync('package.json', 'utf-8'); const packageJSON = JSON.parse(packageJSONContent); const mnemonic = packageJSON.config.mnemonic; - const web3Provider = new HDWalletProvider(mnemonic, kovanRpcUrl); + const provider = new HDWalletProvider(mnemonic, kovanRpcUrl); const config = { networkId: constants.KOVAN_NETWORK_ID, }; - const zeroEx = new ZeroEx(web3Provider, config); + const zeroEx = new ZeroEx(provider, config); it('token registry contract is deployed', async () => { await (zeroEx.tokenRegistry as any)._getTokenRegistryContractAsync(); }).timeout(TIMEOUT); @@ -37,11 +37,11 @@ describe('Artifacts', () => { const packageJSONContent = fs.readFileSync('package.json', 'utf-8'); const packageJSON = JSON.parse(packageJSONContent); const mnemonic = packageJSON.config.mnemonic; - const web3Provider = new HDWalletProvider(mnemonic, ropstenRpcUrl); + const provider = new HDWalletProvider(mnemonic, ropstenRpcUrl); const config = { networkId: constants.ROPSTEN_NETWORK_ID, }; - const zeroEx = new ZeroEx(web3Provider, config); + const zeroEx = new ZeroEx(provider, config); it('token registry contract is deployed', async () => { await (zeroEx.tokenRegistry as any)._getTokenRegistryContractAsync(); }).timeout(TIMEOUT); diff --git a/packages/0x.js/test/assert_test.ts b/packages/0x.js/test/assert_test.ts index 4f3894a59..b08f3e23b 100644 --- a/packages/0x.js/test/assert_test.ts +++ b/packages/0x.js/test/assert_test.ts @@ -6,7 +6,7 @@ import { ZeroEx } from '../src'; import { assert } from '../src/utils/assert'; import { constants } from './utils/constants'; -import { web3 } from './utils/web3_wrapper'; +import { provider } from './utils/web3_wrapper'; const expect = chai.expect; @@ -14,7 +14,7 @@ describe('Assertion library', () => { const config = { networkId: constants.TESTRPC_NETWORK_ID, }; - const zeroEx = new ZeroEx(web3.currentProvider, config); + const zeroEx = new ZeroEx(provider, config); describe('#isSenderAddressHexAsync', () => { it('throws when address is invalid', async () => { const address = '0xdeadbeef'; diff --git a/packages/0x.js/test/ether_token_wrapper_test.ts b/packages/0x.js/test/ether_token_wrapper_test.ts index 5be3eaff3..e1ae34edb 100644 --- a/packages/0x.js/test/ether_token_wrapper_test.ts +++ b/packages/0x.js/test/ether_token_wrapper_test.ts @@ -3,7 +3,6 @@ import { BigNumber } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as chai from 'chai'; import 'mocha'; -import * as Web3 from 'web3'; import { ApprovalContractEventArgs, @@ -24,7 +23,7 @@ import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -55,7 +54,7 @@ describe('EtherTokenWrapper', () => { const depositAmount = new BigNumber(42); const withdrawalAmount = new BigNumber(42); before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, zeroExConfig); + zeroEx = new ZeroEx(provider, zeroExConfig); tokens = await zeroEx.tokenRegistry.getTokensAsync(); userAddresses = await zeroEx.getAvailableAddressesAsync(); addressWithETH = userAddresses[0]; @@ -79,7 +78,7 @@ describe('EtherTokenWrapper', () => { const UNKNOWN_NETWORK_NETWORK_ID = 10; expect( () => - new ZeroEx(web3.currentProvider, { + new ZeroEx(provider, { networkId: UNKNOWN_NETWORK_NETWORK_ID, } as any), ).to.throw(); @@ -261,7 +260,7 @@ describe('EtherTokenWrapper', () => { callbackNeverToBeCalled, ); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = web3.currentProvider; + const newProvider = provider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); await zeroEx.etherToken.depositAsync(etherTokenAddress, transferAmount, addressWithETH); zeroEx.etherToken.subscribe( diff --git a/packages/0x.js/test/event_watcher_test.ts b/packages/0x.js/test/event_watcher_test.ts index 269cd5bdb..40ffcc2f6 100644 --- a/packages/0x.js/test/event_watcher_test.ts +++ b/packages/0x.js/test/event_watcher_test.ts @@ -5,7 +5,6 @@ import * as chai from 'chai'; import * as _ from 'lodash'; import 'mocha'; import * as Sinon from 'sinon'; -import * as Web3 from 'web3'; import { LogEvent } from '../src'; import { EventWatcher } from '../src/order_watcher/event_watcher'; @@ -13,7 +12,7 @@ import { DoneCallback } from '../src/types'; import { chaiSetup } from './utils/chai_setup'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; -import { web3 } from './utils/web3_wrapper'; +import { provider } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -54,7 +53,7 @@ describe('EventWatcher', () => { }; before(async () => { const pollingIntervalMs = 10; - web3Wrapper = new Web3Wrapper(web3.currentProvider); + web3Wrapper = new Web3Wrapper(provider); eventWatcher = new EventWatcher(web3Wrapper, pollingIntervalMs); }); afterEach(() => { diff --git a/packages/0x.js/test/exchange_transfer_simulator_test.ts b/packages/0x.js/test/exchange_transfer_simulator_test.ts index 4447a61cb..cb976a0ae 100644 --- a/packages/0x.js/test/exchange_transfer_simulator_test.ts +++ b/packages/0x.js/test/exchange_transfer_simulator_test.ts @@ -9,7 +9,7 @@ import { ExchangeTransferSimulator } from '../src/utils/exchange_transfer_simula import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -19,7 +19,7 @@ describe('ExchangeTransferSimulator', () => { const config = { networkId: constants.TESTRPC_NETWORK_ID, }; - const zeroEx = new ZeroEx(web3.currentProvider, config); + const zeroEx = new ZeroEx(provider, config); const transferAmount = new BigNumber(5); let userAddresses: string[]; let tokens: Token[]; diff --git a/packages/0x.js/test/exchange_wrapper_test.ts b/packages/0x.js/test/exchange_wrapper_test.ts index ba401d952..addfa6f91 100644 --- a/packages/0x.js/test/exchange_wrapper_test.ts +++ b/packages/0x.js/test/exchange_wrapper_test.ts @@ -4,7 +4,6 @@ import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import * as _ from 'lodash'; import 'mocha'; -import * as Web3 from 'web3'; import { BlockRange, @@ -26,7 +25,7 @@ import { constants } from './utils/constants'; import { FillScenarios } from './utils/fill_scenarios'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -46,7 +45,7 @@ describe('ExchangeWrapper', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); @@ -977,7 +976,7 @@ describe('ExchangeWrapper', () => { ); zeroEx.exchange.subscribe(ExchangeEvents.LogFill, indexFilterValues, callbackNeverToBeCalled); - const newProvider = web3.currentProvider; + const newProvider = provider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); const callback = reportNodeCallbackErrors(done)( diff --git a/packages/0x.js/test/expiration_watcher_test.ts b/packages/0x.js/test/expiration_watcher_test.ts index ed7a6e5e3..29b111fa3 100644 --- a/packages/0x.js/test/expiration_watcher_test.ts +++ b/packages/0x.js/test/expiration_watcher_test.ts @@ -4,7 +4,6 @@ import * as chai from 'chai'; import * as _ from 'lodash'; import 'mocha'; import * as Sinon from 'sinon'; -import * as Web3 from 'web3'; import { ZeroEx } from '../src/0x'; import { ExpirationWatcher } from '../src/order_watcher/expiration_watcher'; @@ -16,7 +15,7 @@ import { constants } from './utils/constants'; import { FillScenarios } from './utils/fill_scenarios'; import { reportNoErrorCallbackErrors } from './utils/report_callback_errors'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -44,7 +43,7 @@ describe('ExpirationWatcher', () => { const config = { networkId: constants.TESTRPC_NETWORK_ID, }; - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); diff --git a/packages/0x.js/test/order_state_watcher_test.ts b/packages/0x.js/test/order_state_watcher_test.ts index 4210e013f..45a292c8b 100644 --- a/packages/0x.js/test/order_state_watcher_test.ts +++ b/packages/0x.js/test/order_state_watcher_test.ts @@ -3,7 +3,6 @@ import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import * as _ from 'lodash'; import 'mocha'; -import * as Web3 from 'web3'; import { ExchangeContractErrs, @@ -23,7 +22,7 @@ import { constants } from './utils/constants'; import { FillScenarios } from './utils/fill_scenarios'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; const TIMEOUT_MS = 150; @@ -51,7 +50,7 @@ describe('OrderStateWatcher', () => { const decimals = constants.ZRX_DECIMALS; const fillableAmount = ZeroEx.toBaseUnitAmount(new BigNumber(5), decimals); before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); orderStateWatcher = zeroEx.createOrderStateWatcher(); exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); diff --git a/packages/0x.js/test/order_validation_test.ts b/packages/0x.js/test/order_validation_test.ts index 5472ca8f6..c894774b8 100644 --- a/packages/0x.js/test/order_validation_test.ts +++ b/packages/0x.js/test/order_validation_test.ts @@ -3,7 +3,6 @@ import { BlockParamLiteral } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import * as Sinon from 'sinon'; -import * as Web3 from 'web3'; import { ExchangeContractErrs, SignedOrder, Token, ZeroEx, ZeroExError } from '../src'; import { TradeSide, TransferType } from '../src/types'; @@ -14,7 +13,7 @@ import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { FillScenarios } from './utils/fill_scenarios'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -40,7 +39,7 @@ describe('OrderValidation', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); exchangeContractAddress = zeroEx.exchange.getContractAddress(); userAddresses = await zeroEx.getAvailableAddressesAsync(); [coinbase, makerAddress, takerAddress, feeRecipient] = userAddresses; diff --git a/packages/0x.js/test/subscription_test.ts b/packages/0x.js/test/subscription_test.ts index 9b4751287..ed4f838c0 100644 --- a/packages/0x.js/test/subscription_test.ts +++ b/packages/0x.js/test/subscription_test.ts @@ -3,7 +3,6 @@ import { BigNumber } from '@0xproject/utils'; import * as _ from 'lodash'; import 'mocha'; import * as Sinon from 'sinon'; -import * as Web3 from 'web3'; import { ApprovalContractEventArgs, DecodedLogEvent, Token, TokenEvents, ZeroEx } from '../src'; import { DoneCallback } from '../src/types'; @@ -11,7 +10,7 @@ import { DoneCallback } from '../src/types'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { assertNodeCallbackError } from './utils/report_callback_errors'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); @@ -26,7 +25,7 @@ describe('SubscriptionTest', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); coinbase = userAddresses[0]; diff --git a/packages/0x.js/test/token_registry_wrapper_test.ts b/packages/0x.js/test/token_registry_wrapper_test.ts index 3b7ce46fb..19caa2ed4 100644 --- a/packages/0x.js/test/token_registry_wrapper_test.ts +++ b/packages/0x.js/test/token_registry_wrapper_test.ts @@ -8,7 +8,7 @@ import { Token, ZeroEx } from '../src'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -31,7 +31,7 @@ describe('TokenRegistryWrapper', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); tokens = await zeroEx.tokenRegistry.getTokensAsync(); _.map(tokens, token => { tokenAddressBySymbol[token.symbol] = token.address; diff --git a/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts b/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts index 092ac51ad..9415d7c08 100644 --- a/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts +++ b/packages/0x.js/test/token_transfer_proxy_wrapper_test.ts @@ -1,11 +1,10 @@ -import { web3Factory } from '@0xproject/dev-utils'; import * as chai from 'chai'; import { ZeroEx } from '../src'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; -import { web3 } from './utils/web3_wrapper'; +import { provider } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -16,7 +15,7 @@ describe('TokenTransferProxyWrapper', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); }); describe('#isAuthorizedAsync', () => { it('should return false if the address is not authorized', async () => { diff --git a/packages/0x.js/test/token_wrapper_test.ts b/packages/0x.js/test/token_wrapper_test.ts index 988532abd..63f17acf7 100644 --- a/packages/0x.js/test/token_wrapper_test.ts +++ b/packages/0x.js/test/token_wrapper_test.ts @@ -1,10 +1,9 @@ -import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; +import { BlockchainLifecycle, devConstants } from '@0xproject/dev-utils'; import { EmptyWalletSubprovider } from '@0xproject/subproviders'; +import { Provider } from '@0xproject/types'; import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as chai from 'chai'; import 'mocha'; -import * as Web3 from 'web3'; import Web3ProviderEngine = require('web3-provider-engine'); import { @@ -24,7 +23,7 @@ import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { reportNodeCallbackErrors } from './utils/report_callback_errors'; import { TokenUtils } from './utils/token_utils'; -import { web3, web3Wrapper } from './utils/web3_wrapper'; +import { provider, web3Wrapper } from './utils/web3_wrapper'; chaiSetup.configure(); const expect = chai.expect; @@ -41,7 +40,7 @@ describe('TokenWrapper', () => { networkId: constants.TESTRPC_NETWORK_ID, }; before(async () => { - zeroEx = new ZeroEx(web3.currentProvider, config); + zeroEx = new ZeroEx(provider, config); userAddresses = await zeroEx.getAvailableAddressesAsync(); tokens = await zeroEx.tokenRegistry.getTokensAsync(); tokenUtils = new TokenUtils(tokens); @@ -166,7 +165,7 @@ describe('TokenWrapper', () => { }); }); describe('#getBalanceAsync', () => { - describe('With web3 provider with accounts', () => { + describe('With provider with accounts', () => { it('should return the balance for an existing ERC20 token', async () => { const token = tokens[0]; const ownerAddress = coinbase; @@ -189,15 +188,14 @@ describe('TokenWrapper', () => { return expect(balance).to.be.bignumber.equal(expectedBalance); }); }); - describe('With web3 provider without accounts', () => { + describe('With provider without accounts', () => { let zeroExWithoutAccounts: ZeroEx; before(async () => { const hasAddresses = false; - const emptyWalletProvider = addEmptyWalletSubprovider(web3.currentProvider); - const web3WithoutAccounts = new Web3(emptyWalletProvider); - zeroExWithoutAccounts = new ZeroEx(web3WithoutAccounts.currentProvider, config); + const emptyWalletProvider = addEmptyWalletSubprovider(provider); + zeroExWithoutAccounts = new ZeroEx(emptyWalletProvider, config); }); - it('should return balance even when called with Web3 provider instance without addresses', async () => { + it('should return balance even when called with provider instance without addresses', async () => { const token = tokens[0]; const ownerAddress = coinbase; const balance = await zeroExWithoutAccounts.token.getBalanceAsync(token.address, ownerAddress); @@ -280,7 +278,7 @@ describe('TokenWrapper', () => { }); }); describe('#getAllowanceAsync', () => { - describe('With web3 provider with accounts', () => { + describe('With provider with accounts', () => { it('should get the proxy allowance', async () => { const token = tokens[0]; const ownerAddress = coinbase; @@ -302,13 +300,12 @@ describe('TokenWrapper', () => { return expect(allowance).to.be.bignumber.equal(expectedAllowance); }); }); - describe('With web3 provider without accounts', () => { + describe('With provider without accounts', () => { let zeroExWithoutAccounts: ZeroEx; before(async () => { const hasAddresses = false; - const emptyWalletProvider = addEmptyWalletSubprovider(web3.currentProvider); - const web3WithoutAccounts = new Web3(emptyWalletProvider); - zeroExWithoutAccounts = new ZeroEx(web3WithoutAccounts.currentProvider, config); + const emptyWalletProvider = addEmptyWalletSubprovider(provider); + zeroExWithoutAccounts = new ZeroEx(emptyWalletProvider, config); }); it('should get the proxy allowance', async () => { const token = tokens[0]; @@ -428,7 +425,7 @@ describe('TokenWrapper', () => { ); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackNeverToBeCalled); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = web3.currentProvider; + const newProvider = provider; zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackToBeCalled); await zeroEx.token.transferAsync(tokenAddress, coinbase, addressWithoutFunds, transferAmount); @@ -520,7 +517,7 @@ describe('TokenWrapper', () => { }); // tslint:disable:max-file-line-count -function addEmptyWalletSubprovider(provider: Web3.Provider): Web3.Provider { +function addEmptyWalletSubprovider(provider: Provider): Provider { const providerEngine = new Web3ProviderEngine(); providerEngine.addProvider(new EmptyWalletSubprovider()); const currentSubproviders = (provider as any)._providers; diff --git a/packages/0x.js/test/utils/deployer.ts b/packages/0x.js/test/utils/deployer.ts new file mode 100644 index 000000000..b092322e2 --- /dev/null +++ b/packages/0x.js/test/utils/deployer.ts @@ -0,0 +1,18 @@ +import { Deployer } from '@0xproject/deployer'; +import { devConstants } from '@0xproject/dev-utils'; +import * as path from 'path'; + +import { constants } from './constants'; + +import { provider } from './web3_wrapper'; + +const artifactsDir = path.resolve('test', 'artifacts'); +const deployerOpts = { + artifactsDir, + provider, + networkId: constants.TESTRPC_NETWORK_ID, + defaults: { + gas: devConstants.GAS_ESTIMATE, + }, +}; +export const deployer = new Deployer(deployerOpts); diff --git a/packages/0x.js/test/utils/web3_wrapper.ts b/packages/0x.js/test/utils/web3_wrapper.ts index 35898f553..b7b3f0b7f 100644 --- a/packages/0x.js/test/utils/web3_wrapper.ts +++ b/packages/0x.js/test/utils/web3_wrapper.ts @@ -1,10 +1,12 @@ import { devConstants, web3Factory } from '@0xproject/dev-utils'; +import { Provider } from '@0xproject/types'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as Web3 from 'web3'; import { constants } from './constants'; const web3 = web3Factory.create({ shouldUseInProcessGanache: true }); +const provider: Provider = web3.currentProvider; const web3Wrapper = new Web3Wrapper(web3.currentProvider); -export { web3, web3Wrapper }; +export { provider, web3Wrapper }; diff --git a/packages/contracts/test/utils/web3_wrapper.ts b/packages/contracts/test/utils/web3_wrapper.ts index 1a711dad2..bc4e1cfd8 100644 --- a/packages/contracts/test/utils/web3_wrapper.ts +++ b/packages/contracts/test/utils/web3_wrapper.ts @@ -1,7 +1,8 @@ import { web3Factory } from '@0xproject/dev-utils'; +import { Provider } from '@0xproject/types'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; -const web3ProviderConfig = { shouldUseInProcessGanache: true }; -export const web3 = web3Factory.create(web3ProviderConfig); -export const provider = web3.currentProvider; +const providerConfigs = { shouldUseInProcessGanache: true }; +export const web3 = web3Factory.create(providerConfigs); +export const provider: Provider = web3.currentProvider; export const web3Wrapper = new Web3Wrapper(provider); -- cgit v1.2.3 From 75a51af00603236e0b80fe04336494944a32739c Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 6 Apr 2018 15:04:17 +0900 Subject: Use provider over web3 in deployer, dev-utils and subprovider tests, rename subprovider to ganacheSubprovider in test util --- packages/deployer/src/cli.ts | 4 ++-- packages/deployer/src/deployer.ts | 10 +++++----- packages/deployer/test/deployer_test.ts | 2 +- packages/deployer/test/util/provider.ts | 9 ++++++--- packages/dev-utils/test/blockchain_lifecycle_test.ts | 4 ++-- packages/dev-utils/test/rpc_test.ts | 4 ++-- .../subproviders/test/unit/ledger_subprovider_test.ts | 2 +- .../test/unit/redundant_rpc_subprovider_test.ts | 2 +- .../subproviders/test/utils/ganache_subprovider.ts | 18 ++++++++++++++++++ packages/subproviders/test/utils/subprovider.ts | 18 ------------------ 10 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 packages/subproviders/test/utils/ganache_subprovider.ts delete mode 100644 packages/subproviders/test/utils/subprovider.ts (limited to 'packages') diff --git a/packages/deployer/src/cli.ts b/packages/deployer/src/cli.ts index d1bd645b3..f1cf56416 100644 --- a/packages/deployer/src/cli.ts +++ b/packages/deployer/src/cli.ts @@ -41,8 +41,8 @@ async function onCompileCommandAsync(argv: CliOptions): Promise { */ async function onDeployCommandAsync(argv: CliOptions): Promise { const url = argv.jsonrpcUrl; - const web3Provider = new Web3.providers.HttpProvider(url); - const web3Wrapper = new Web3Wrapper(web3Provider); + const provider = new Web3.providers.HttpProvider(url); + const web3Wrapper = new Web3Wrapper(provider); const networkId = await web3Wrapper.getNetworkIdAsync(); const compilerOpts: CompilerOptions = { contractsDir: argv.contractsDir, diff --git a/packages/deployer/src/deployer.ts b/packages/deployer/src/deployer.ts index 84392997c..e4208e7a1 100644 --- a/packages/deployer/src/deployer.ts +++ b/packages/deployer/src/deployer.ts @@ -38,17 +38,17 @@ export class Deployer { this._artifactsDir = opts.artifactsDir; this._networkId = opts.networkId; this._defaults = opts.defaults; - let web3Provider: Provider; + let provider: Provider; if (_.isUndefined((opts as ProviderDeployerOptions).provider)) { const jsonrpcUrl = (opts as UrlDeployerOptions).jsonrpcUrl; if (_.isUndefined(jsonrpcUrl)) { - throw new Error(`Deployer options don't contain web3Provider nor jsonrpcUrl. Please pass one of them`); + throw new Error(`Deployer options don't contain provider nor jsonrpcUrl. Please pass one of them`); } - web3Provider = new Web3.providers.HttpProvider(jsonrpcUrl); + provider = new Web3.providers.HttpProvider(jsonrpcUrl); } else { - web3Provider = (opts as ProviderDeployerOptions).provider; + provider = (opts as ProviderDeployerOptions).provider; } - this.web3Wrapper = new Web3Wrapper(web3Provider, this._defaults); + this.web3Wrapper = new Web3Wrapper(provider, this._defaults); } /** * Loads a contract's corresponding artifacts and deploys it with the supplied constructor arguments. diff --git a/packages/deployer/test/deployer_test.ts b/packages/deployer/test/deployer_test.ts index eadb535ab..238624220 100644 --- a/packages/deployer/test/deployer_test.ts +++ b/packages/deployer/test/deployer_test.ts @@ -27,7 +27,7 @@ describe('#Deployer', () => { const deployerOpts = { artifactsDir, networkId: constants.networkId, - web3Provider: provider, + provider, defaults: { gasPrice: constants.gasPrice, }, diff --git a/packages/deployer/test/util/provider.ts b/packages/deployer/test/util/provider.ts index bc0f55028..e0fcb362a 100644 --- a/packages/deployer/test/util/provider.ts +++ b/packages/deployer/test/util/provider.ts @@ -1,6 +1,9 @@ import { web3Factory } from '@0xproject/dev-utils'; +import { Provider } from '@0xproject/types'; import * as Web3 from 'web3'; -const web3ProviderConfig = { shouldUseInProcessGanache: true }; -const web3Instance = web3Factory.create(web3ProviderConfig); -export const provider = web3Instance.currentProvider; +const providerConfigs = { shouldUseInProcessGanache: true }; +const web3Instance = web3Factory.create(providerConfigs); +const provider: Provider = web3Instance.currentProvider; + +export { provider }; diff --git a/packages/dev-utils/test/blockchain_lifecycle_test.ts b/packages/dev-utils/test/blockchain_lifecycle_test.ts index 077f6f2f1..2cfad9644 100644 --- a/packages/dev-utils/test/blockchain_lifecycle_test.ts +++ b/packages/dev-utils/test/blockchain_lifecycle_test.ts @@ -8,8 +8,8 @@ import { BlockchainLifecycle, web3Factory } from '../src'; const expect = chai.expect; describe('BlockchainLifecycle tests', () => { - const web3Provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); - const web3Wrapper = new Web3Wrapper(web3Provider); + const provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); + const web3Wrapper = new Web3Wrapper(provider); const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper); describe('#startAsync/revertAsync', () => { it('reverts changes in between', async () => { diff --git a/packages/dev-utils/test/rpc_test.ts b/packages/dev-utils/test/rpc_test.ts index 233d8035e..b6998f604 100644 --- a/packages/dev-utils/test/rpc_test.ts +++ b/packages/dev-utils/test/rpc_test.ts @@ -8,8 +8,8 @@ import { web3Factory } from '../src'; const expect = chai.expect; describe('RPC tests', () => { - const web3Provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); - const web3Wrapper = new Web3Wrapper(web3Provider); + const provider = web3Factory.getRpcProvider({ shouldUseInProcessGanache: true }); + const web3Wrapper = new Web3Wrapper(provider); describe('#mineBlockAsync', () => { it('increases block number when called', async () => { const blockNumberBefore = await web3Wrapper.getBlockNumberAsync(); diff --git a/packages/subproviders/test/unit/ledger_subprovider_test.ts b/packages/subproviders/test/unit/ledger_subprovider_test.ts index a3800434a..d30c68f65 100644 --- a/packages/subproviders/test/unit/ledger_subprovider_test.ts +++ b/packages/subproviders/test/unit/ledger_subprovider_test.ts @@ -8,8 +8,8 @@ import Web3ProviderEngine = require('web3-provider-engine'); import { LedgerSubprovider } from '../../src'; import { DoneCallback, LedgerCommunicationClient, LedgerSubproviderErrors } from '../../src/types'; import { chaiSetup } from '../chai_setup'; +import { ganacheSubprovider } from '../utils/ganache_subprovider'; import { reportCallbackErrors } from '../utils/report_callback_errors'; -import { subprovider as ganacheSubprovider } from '../utils/subprovider'; chaiSetup.configure(); const expect = chai.expect; diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index ab540e202..e7ca6d496 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -8,8 +8,8 @@ import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import { RedundantRPCSubprovider } from '../../src'; import { DoneCallback } from '../../src/types'; import { chaiSetup } from '../chai_setup'; +import { ganacheSubprovider } from '../utils/ganache_subprovider'; import { reportCallbackErrors } from '../utils/report_callback_errors'; -import { subprovider as ganacheSubprovider } from '../utils/subprovider'; const expect = chai.expect; chaiSetup.configure(); diff --git a/packages/subproviders/test/utils/ganache_subprovider.ts b/packages/subproviders/test/utils/ganache_subprovider.ts new file mode 100644 index 000000000..ac4a9325c --- /dev/null +++ b/packages/subproviders/test/utils/ganache_subprovider.ts @@ -0,0 +1,18 @@ +import * as fs from 'fs'; + +import { GanacheSubprovider } from '../../src/subproviders/ganache'; +import { configs } from '../utils/configs'; + +const logger = { + log: (arg: any) => { + fs.appendFileSync('ganache.log', `${arg}\n`); + }, +}; + +export const ganacheSubprovider = new GanacheSubprovider({ + logger, + verbose: false, + port: configs.port, + networkId: configs.networkId, + mnemonic: configs.mnemonic, +}); diff --git a/packages/subproviders/test/utils/subprovider.ts b/packages/subproviders/test/utils/subprovider.ts deleted file mode 100644 index b1c459746..000000000 --- a/packages/subproviders/test/utils/subprovider.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as fs from 'fs'; - -import { GanacheSubprovider } from '../../src/subproviders/ganache'; -import { configs } from '../utils/configs'; - -const logger = { - log: (arg: any) => { - fs.appendFileSync('ganache.log', `${arg}\n`); - }, -}; - -export const subprovider = new GanacheSubprovider({ - logger, - verbose: false, - port: configs.port, - networkId: configs.networkId, - mnemonic: configs.mnemonic, -}); -- cgit v1.2.3 From e30c76b7430d8518319eb7d90c7d70ef7c7f6c8d Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 6 Apr 2018 15:41:42 +0900 Subject: Make all `handleRequest` methods async, rename _engine to engine to remain compliant with web3-provider-engine --- .../src/subproviders/empty_wallet_subprovider.ts | 4 ++-- .../src/subproviders/fake_gas_estimate_subprovider.ts | 4 ++-- packages/subproviders/src/subproviders/ganache.ts | 4 ++-- .../subproviders/src/subproviders/injected_web3.ts | 4 ++-- packages/subproviders/src/subproviders/subprovider.ts | 18 +++++++++++++----- 5 files changed, 21 insertions(+), 13 deletions(-) (limited to 'packages') diff --git a/packages/subproviders/src/subproviders/empty_wallet_subprovider.ts b/packages/subproviders/src/subproviders/empty_wallet_subprovider.ts index 595ec654d..8f152dc0a 100644 --- a/packages/subproviders/src/subproviders/empty_wallet_subprovider.ts +++ b/packages/subproviders/src/subproviders/empty_wallet_subprovider.ts @@ -17,8 +17,8 @@ export class EmptyWalletSubprovider extends Subprovider { * @param next Callback to call if this subprovider decides not to handle the request * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ - // tslint:disable-next-line:prefer-function-over-method - public handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { switch (payload.method) { case 'eth_accounts': end(null, []); diff --git a/packages/subproviders/src/subproviders/fake_gas_estimate_subprovider.ts b/packages/subproviders/src/subproviders/fake_gas_estimate_subprovider.ts index 966c37d8a..54fd7bcb9 100644 --- a/packages/subproviders/src/subproviders/fake_gas_estimate_subprovider.ts +++ b/packages/subproviders/src/subproviders/fake_gas_estimate_subprovider.ts @@ -31,8 +31,8 @@ export class FakeGasEstimateSubprovider extends Subprovider { * @param next Callback to call if this subprovider decides not to handle the request * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ - // tslint:disable-next-line:prefer-function-over-method - public handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { switch (payload.method) { case 'eth_estimateGas': end(null, this._constantGasAmount); diff --git a/packages/subproviders/src/subproviders/ganache.ts b/packages/subproviders/src/subproviders/ganache.ts index 8008d1b4b..debd7ecf0 100644 --- a/packages/subproviders/src/subproviders/ganache.ts +++ b/packages/subproviders/src/subproviders/ganache.ts @@ -27,8 +27,8 @@ export class GanacheSubprovider extends Subprovider { * @param next Callback to call if this subprovider decides not to handle the request * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ - // tslint:disable-next-line:prefer-function-over-method - public handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { this._ganacheProvider.sendAsync(payload, (err: Error | null, result: any) => { end(err, result && result.result); }); diff --git a/packages/subproviders/src/subproviders/injected_web3.ts b/packages/subproviders/src/subproviders/injected_web3.ts index 1d7b2ddfe..3ca0c4bd0 100644 --- a/packages/subproviders/src/subproviders/injected_web3.ts +++ b/packages/subproviders/src/subproviders/injected_web3.ts @@ -30,8 +30,8 @@ export class InjectedWeb3Subprovider extends Subprovider { * @param next Callback to call if this subprovider decides not to handle the request * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ - // tslint:disable-next-line:prefer-function-over-method - public handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: Callback, end: ErrorCallback) { switch (payload.method) { case 'web3_clientVersion': this._injectedWeb3.version.getNode(end); diff --git a/packages/subproviders/src/subproviders/subprovider.ts b/packages/subproviders/src/subproviders/subprovider.ts index c51462f07..2118f52c8 100644 --- a/packages/subproviders/src/subproviders/subprovider.ts +++ b/packages/subproviders/src/subproviders/subprovider.ts @@ -2,13 +2,14 @@ import { JSONRPCRequestPayload, JSONRPCResponsePayload } from '@0xproject/types' import { promisify } from '@0xproject/utils'; import * as Web3 from 'web3'; -import { JSONRPCRequestPayloadWithMethod } from '../types'; +import { Callback, ErrorCallback, JSONRPCRequestPayloadWithMethod } from '../types'; /** * A altered version of the base class Subprovider found in [web3-provider-engine](https://github.com/MetaMask/provider-engine). * This one has an async/await `emitPayloadAsync` and also defined types. */ -export class Subprovider { - private _engine: any; +export abstract class Subprovider { + // tslint:disable-next-line:underscore-private-and-protected + private engine: any; // Ported from: https://github.com/MetaMask/provider-engine/blob/master/util/random-id.js private static _getRandomId() { const extraDigits = 3; @@ -31,6 +32,13 @@ export class Subprovider { }; return finalPayload; } + // tslint:disable-next-line:async-suffix + public abstract async handleRequest( + payload: JSONRPCRequestPayload, + next: Callback, + end: ErrorCallback, + ): Promise; + /** * Emits a JSON RPC payload that will then be handled by the ProviderEngine instance * this subprovider is a part of. The payload will cascade down the subprovider middleware @@ -40,7 +48,7 @@ export class Subprovider { */ public async emitPayloadAsync(payload: Partial): Promise { const finalPayload = Subprovider._createFinalPayload(payload); - const response = await promisify(this._engine.sendAsync, this._engine)(finalPayload); + const response = await promisify(this.engine.sendAsync, this.engine)(finalPayload); return response; } /** @@ -49,6 +57,6 @@ export class Subprovider { * directly. */ public setEngine(engine: any): void { - this._engine = engine; + this.engine = engine; } } -- cgit v1.2.3 From 22fa5a57a588c3c5c2a72ec5ef539797c2847688 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Fri, 6 Apr 2018 15:46:27 +0900 Subject: Refactor RedundantRpcSubprovider into RedundantSubprovider --- packages/subproviders/CHANGELOG.json | 10 ++++ packages/subproviders/src/index.ts | 2 +- .../subproviders/src/subproviders/redundant_rpc.ts | 70 ---------------------- .../src/subproviders/redundant_subprovider.ts | 65 ++++++++++++++++++++ .../test/unit/redundant_rpc_subprovider_test.ts | 17 +++--- packages/website/ts/blockchain.ts | 25 ++++++-- 6 files changed, 104 insertions(+), 85 deletions(-) delete mode 100644 packages/subproviders/src/subproviders/redundant_rpc.ts create mode 100644 packages/subproviders/src/subproviders/redundant_subprovider.ts (limited to 'packages') diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index 54eb32378..ca3889202 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -1,4 +1,14 @@ [ + { + "version": "0.9.0", + "changes": [ + { + "note": + "Refactor RedundantRPCSubprovider into RedundantSubprovider where it now accepts an array of subproviders rather then an array of RPC endpoints", + "pr": 500 + } + ] + }, { "timestamp": 1522673609, "version": "0.8.4", diff --git a/packages/subproviders/src/index.ts b/packages/subproviders/src/index.ts index 9786347e6..1711387f1 100644 --- a/packages/subproviders/src/index.ts +++ b/packages/subproviders/src/index.ts @@ -7,7 +7,7 @@ import { LedgerEthereumClient } from './types'; export { EmptyWalletSubprovider } from './subproviders/empty_wallet_subprovider'; export { FakeGasEstimateSubprovider } from './subproviders/fake_gas_estimate_subprovider'; export { InjectedWeb3Subprovider } from './subproviders/injected_web3'; -export { RedundantRPCSubprovider } from './subproviders/redundant_rpc'; +export { RedundantSubprovider } from './subproviders/redundant_subprovider'; export { LedgerSubprovider } from './subproviders/ledger'; export { GanacheSubprovider } from './subproviders/ganache'; export { Subprovider } from './subproviders/subprovider'; diff --git a/packages/subproviders/src/subproviders/redundant_rpc.ts b/packages/subproviders/src/subproviders/redundant_rpc.ts deleted file mode 100644 index f8ff0915d..000000000 --- a/packages/subproviders/src/subproviders/redundant_rpc.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { JSONRPCRequestPayload } from '@0xproject/types'; -import { promisify } from '@0xproject/utils'; -import * as _ from 'lodash'; -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); - -import { Callback } from '../types'; - -import { Subprovider } from './subprovider'; - -/** - * This class implements the [web3-provider-engine](https://github.com/MetaMask/provider-engine) subprovider interface. - * It attempts to handle each JSON RPC request by sequentially attempting to receive a valid response from one of a - * set of JSON RPC endpoints. - */ -export class RedundantRPCSubprovider extends Subprovider { - private _rpcs: RpcSubprovider[]; - private static async _firstSuccessAsync( - rpcs: RpcSubprovider[], - payload: JSONRPCRequestPayload, - next: Callback, - ): Promise { - let lastErr: Error | undefined; - for (const rpc of rpcs) { - try { - const data = await promisify(rpc.handleRequest.bind(rpc))(payload, next); - return data; - } catch (err) { - lastErr = err; - continue; - } - } - if (!_.isUndefined(lastErr)) { - throw lastErr; - } - } - /** - * Instantiates a new RedundantRPCSubprovider - * @param endpoints JSON RPC endpoints to attempt. Attempts are made in the order of the endpoints. - */ - constructor(endpoints: string[]) { - super(); - this._rpcs = _.map(endpoints, endpoint => { - return new RpcSubprovider({ - rpcUrl: endpoint, - }); - }); - } - /** - * This method conforms to the web3-provider-engine interface. - * It is called internally by the ProviderEngine when it is this subproviders - * turn to handle a JSON RPC request. - * @param payload JSON RPC payload - * @param next Callback to call if this subprovider decides not to handle the request - * @param end Callback to call if subprovider handled the request and wants to pass back the request. - */ - // tslint:disable-next-line:async-suffix - public async handleRequest( - payload: JSONRPCRequestPayload, - next: Callback, - end: (err: Error | null, data?: any) => void, - ): Promise { - const rpcsCopy = this._rpcs.slice(); - try { - const data = await RedundantRPCSubprovider._firstSuccessAsync(rpcsCopy, payload, next); - end(null, data); - } catch (err) { - end(err); - } - } -} diff --git a/packages/subproviders/src/subproviders/redundant_subprovider.ts b/packages/subproviders/src/subproviders/redundant_subprovider.ts new file mode 100644 index 000000000..37c8bba5a --- /dev/null +++ b/packages/subproviders/src/subproviders/redundant_subprovider.ts @@ -0,0 +1,65 @@ +import { JSONRPCRequestPayload } from '@0xproject/types'; +import { promisify } from '@0xproject/utils'; +import * as _ from 'lodash'; + +import { Callback } from '../types'; + +import { Subprovider } from './subprovider'; + +/** + * This class implements the [web3-provider-engine](https://github.com/MetaMask/provider-engine) subprovider interface. + * It attempts to handle each JSON RPC request by sequentially attempting to receive a valid response from one of a + * set of JSON RPC endpoints. + */ +export class RedundantSubprovider extends Subprovider { + private _subproviders: Subprovider[]; + private static async _firstSuccessAsync( + subproviders: Subprovider[], + payload: JSONRPCRequestPayload, + next: Callback, + ): Promise { + let lastErr: Error | undefined; + for (const subprovider of subproviders) { + try { + const data = await promisify(subprovider.handleRequest.bind(subprovider))(payload, next); + return data; + } catch (err) { + lastErr = err; + continue; + } + } + if (!_.isUndefined(lastErr)) { + throw lastErr; + } + } + /** + * Instantiates a new RedundantSubprovider + * @param endpoints JSON RPC endpoints to attempt. Attempts are made in the order of the endpoints. + */ + constructor(subproviders: Subprovider[]) { + super(); + this._subproviders = subproviders; + } + /** + * This method conforms to the web3-provider-engine interface. + * It is called internally by the ProviderEngine when it is this subproviders + * turn to handle a JSON RPC request. + * @param payload JSON RPC payload + * @param next Callback to call if this subprovider decides not to handle the request + * @param end Callback to call if subprovider handled the request and wants to pass back the request. + */ + // tslint:disable-next-line:async-suffix + public async handleRequest( + payload: JSONRPCRequestPayload, + next: Callback, + end: (err: Error | null, data?: any) => void, + ): Promise { + const subprovidersCopy = this._subproviders.slice(); + try { + const data = await RedundantSubprovider._firstSuccessAsync(subprovidersCopy, payload, next); + end(null, data); + } catch (err) { + end(err); + } + } +} diff --git a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts index e7ca6d496..e25cb7eb7 100644 --- a/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts +++ b/packages/subproviders/test/unit/redundant_rpc_subprovider_test.ts @@ -5,7 +5,8 @@ import Web3 = require('web3'); import Web3ProviderEngine = require('web3-provider-engine'); import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); -import { RedundantRPCSubprovider } from '../../src'; +import { RedundantSubprovider } from '../../src'; +import { Subprovider } from '../../src/subproviders/subprovider'; import { DoneCallback } from '../../src/types'; import { chaiSetup } from '../chai_setup'; import { ganacheSubprovider } from '../utils/ganache_subprovider'; @@ -14,14 +15,12 @@ import { reportCallbackErrors } from '../utils/report_callback_errors'; const expect = chai.expect; chaiSetup.configure(); -describe('RedundantRpcSubprovider', () => { +describe('RedundantSubprovider', () => { let provider: Web3ProviderEngine; it('succeeds when supplied a healthy endpoint', (done: DoneCallback) => { provider = new Web3ProviderEngine(); - const endpoints = ['http://localhost:8545']; - const redundantSubprovider = new RedundantRPCSubprovider(endpoints); - // Hack: Hot-swap rpc with ganacheSubprovider - (redundantSubprovider as any)._rpcs = [ganacheSubprovider]; + const subproviders = [ganacheSubprovider]; + const redundantSubprovider = new RedundantSubprovider(subproviders); provider.addProvider(redundantSubprovider); provider.start(); @@ -40,13 +39,11 @@ describe('RedundantRpcSubprovider', () => { }); it('succeeds when supplied at least one healthy endpoint', (done: DoneCallback) => { provider = new Web3ProviderEngine(); - const endpoints = ['http://does-not-exist:3000', 'http://localhost:8545']; - const redundantSubprovider = new RedundantRPCSubprovider(endpoints); - // Hack: Hot-swap rpcs with [nonExistentSubprovider, ganacheSubprovider] const nonExistentSubprovider = new RpcSubprovider({ rpcUrl: 'http://does-not-exist:3000', }); - (redundantSubprovider as any)._rpcs = [nonExistentSubprovider, ganacheSubprovider]; + const subproviders = [nonExistentSubprovider as Subprovider, ganacheSubprovider]; + const redundantSubprovider = new RedundantSubprovider(subproviders); provider.addProvider(redundantSubprovider); provider.start(); diff --git a/packages/website/ts/blockchain.ts b/packages/website/ts/blockchain.ts index fd34ab82d..7d79542a3 100644 --- a/packages/website/ts/blockchain.ts +++ b/packages/website/ts/blockchain.ts @@ -21,7 +21,8 @@ import { ledgerEthereumBrowserClientFactoryAsync, LedgerSubprovider, LedgerWalletSubprovider, - RedundantRPCSubprovider, + RedundantSubprovider, + Subprovider, } from '@0xproject/subproviders'; import { Provider } from '@0xproject/types'; import { BigNumber, intervalUtils, logUtils, promisify } from '@0xproject/utils'; @@ -54,6 +55,7 @@ import { utils } from 'ts/utils/utils'; import Web3 = require('web3'); import ProviderEngine = require('web3-provider-engine'); import FilterSubprovider = require('web3-provider-engine/subproviders/filters'); +import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); import * as MintableArtifacts from '../contracts/Mintable.json'; @@ -98,7 +100,12 @@ export class Blockchain { provider = new ProviderEngine(); provider.addProvider(new InjectedWeb3Subprovider(injectedWeb3.currentProvider)); provider.addProvider(new FilterSubprovider()); - provider.addProvider(new RedundantRPCSubprovider(publicNodeUrlsIfExistsForNetworkId)); + const rpcSubproviders = _.map(publicNodeUrlsIfExistsForNetworkId, publicNodeUrl => { + return new RpcSubprovider({ + rpcUrl: publicNodeUrl, + }); + }); + provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); } else if (doesInjectedWeb3Exist) { // Since no public node for this network, all requests go to injectedWeb3 instance @@ -110,7 +117,12 @@ export class Blockchain { provider = new ProviderEngine(); provider.addProvider(new FilterSubprovider()); const networkId = configs.IS_MAINNET_ENABLED ? constants.NETWORK_ID_MAINNET : constants.NETWORK_ID_KOVAN; - provider.addProvider(new RedundantRPCSubprovider(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId])); + const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { + return new RpcSubprovider({ + rpcUrl: publicNodeUrl, + }); + }); + provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); } @@ -201,7 +213,12 @@ export class Blockchain { this._ledgerSubprovider = new LedgerSubprovider(ledgerWalletConfigs); provider.addProvider(this._ledgerSubprovider); provider.addProvider(new FilterSubprovider()); - provider.addProvider(new RedundantRPCSubprovider(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId])); + const rpcSubproviders = _.map(configs.PUBLIC_NODE_URLS_BY_NETWORK_ID[networkId], publicNodeUrl => { + return new RpcSubprovider({ + rpcUrl: publicNodeUrl, + }); + }); + provider.addProvider(new RedundantSubprovider(rpcSubproviders as Subprovider[])); provider.start(); this.networkId = networkId; this._dispatcher.updateNetworkId(this.networkId); -- cgit v1.2.3 From 6f24337a5309bc4b06d0a91eac3af7566bde5754 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Sat, 7 Apr 2018 10:17:53 +0900 Subject: Remove unused var --- packages/0x.js/test/utils/fill_scenarios.ts | 1 - 1 file changed, 1 deletion(-) (limited to 'packages') diff --git a/packages/0x.js/test/utils/fill_scenarios.ts b/packages/0x.js/test/utils/fill_scenarios.ts index cd68b7dfa..7d0e8c501 100644 --- a/packages/0x.js/test/utils/fill_scenarios.ts +++ b/packages/0x.js/test/utils/fill_scenarios.ts @@ -33,7 +33,6 @@ export class FillScenarios { } public async initTokenBalancesAsync() { const web3Wrapper = (this._zeroEx as any)._web3Wrapper as Web3Wrapper; - const networkId = await web3Wrapper.getNetworkIdAsync(); for (const token of this._tokens) { if (token.symbol !== 'ZRX' && token.symbol !== 'WETH') { const defaults = {}; -- cgit v1.2.3 From 68e8d6f3040d93b8c42992c46c84c50c1a4fbbef Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Sat, 7 Apr 2018 10:24:47 +0900 Subject: Update ERCDex logo --- .../public/images/landing/project_logos/ercdex.png | Bin 5726 -> 3929 bytes 1 file changed, 0 insertions(+), 0 deletions(-) (limited to 'packages') diff --git a/packages/website/public/images/landing/project_logos/ercdex.png b/packages/website/public/images/landing/project_logos/ercdex.png index 1367837e0..31d137be7 100644 Binary files a/packages/website/public/images/landing/project_logos/ercdex.png and b/packages/website/public/images/landing/project_logos/ercdex.png differ -- cgit v1.2.3 From 073bf738ddb271b6b4158798baf4cac3cb0608e9 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Sat, 7 Apr 2018 10:41:43 +0900 Subject: Since we moved Web3Wrapper class from index to it's own file, we need to update doc mapping --- packages/website/ts/containers/web3_wrapper_documentation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/website/ts/containers/web3_wrapper_documentation.ts b/packages/website/ts/containers/web3_wrapper_documentation.ts index 289006f10..b0adad536 100644 --- a/packages/website/ts/containers/web3_wrapper_documentation.ts +++ b/packages/website/ts/containers/web3_wrapper_documentation.ts @@ -39,7 +39,7 @@ const docsInfoConfig: DocsInfoConfig = { [docSections.installation]: InstallationMarkdown, }, sectionNameToModulePath: { - [docSections.web3Wrapper]: ['"web3-wrapper/src/index"'], + [docSections.web3Wrapper]: ['"web3-wrapper/src/web3_wrapper"'], [docSections.types]: ['"types/src/index"'], }, menuSubsectionToVersionWhenIntroduced: {}, -- cgit v1.2.3 From 919b327fc534e3c2dc6330130cee690f0fa39fea Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 9 Apr 2018 17:14:25 +0900 Subject: Move migrations into separate monorepo subpackage and hook it up to 0x.js and contracts --- packages/0x.js/package.json | 11 +- packages/0x.js/src/artifacts.ts | 14 +- packages/0x.js/src/artifacts/DummyToken.json | 22 - packages/0x.js/src/artifacts/EtherToken.json | 287 ---------- packages/0x.js/src/artifacts/Exchange.json | 610 --------------------- packages/0x.js/src/artifacts/Token.json | 172 ------ packages/0x.js/src/artifacts/TokenRegistry.json | 547 ------------------ .../0x.js/src/artifacts/TokenTransferProxy.json | 187 ------- packages/0x.js/src/artifacts/ZRX.json | 20 - .../0x.js/src/compact_artifacts/DummyToken.json | 22 + .../0x.js/src/compact_artifacts/EtherToken.json | 287 ++++++++++ packages/0x.js/src/compact_artifacts/Exchange.json | 610 +++++++++++++++++++++ packages/0x.js/src/compact_artifacts/Token.json | 172 ++++++ .../0x.js/src/compact_artifacts/TokenRegistry.json | 547 ++++++++++++++++++ .../src/compact_artifacts/TokenTransferProxy.json | 187 +++++++ packages/0x.js/src/compact_artifacts/ZRX.json | 20 + packages/0x.js/test/0x.js_test.ts | 5 +- .../0x.js/test/migrations/config/token_info.ts | 40 -- packages/0x.js/test/migrations/migrate.ts | 90 --- packages/0x.js/test/migrations/types.ts | 38 -- packages/contracts/README.md | 11 - packages/contracts/package.json | 6 +- packages/contracts/test/utils/deployer.ts | 2 +- packages/migrations/README.md | 69 +++ packages/migrations/package.json | 36 ++ packages/migrations/src/globals.d.ts | 6 + packages/migrations/src/index.ts | 3 + packages/migrations/src/migrate.ts | 25 + packages/migrations/src/migration.ts | 90 +++ packages/migrations/src/types.ts | 38 ++ packages/migrations/src/utils/constants.ts | 3 + packages/migrations/src/utils/token_info.ts | 41 ++ packages/migrations/tsconfig.json | 7 + packages/migrations/tslint.json | 3 + .../test/integration/ledger_subprovider_test.ts | 2 +- 35 files changed, 2189 insertions(+), 2041 deletions(-) delete mode 100644 packages/0x.js/src/artifacts/DummyToken.json delete mode 100644 packages/0x.js/src/artifacts/EtherToken.json delete mode 100644 packages/0x.js/src/artifacts/Exchange.json delete mode 100644 packages/0x.js/src/artifacts/Token.json delete mode 100644 packages/0x.js/src/artifacts/TokenRegistry.json delete mode 100644 packages/0x.js/src/artifacts/TokenTransferProxy.json delete mode 100644 packages/0x.js/src/artifacts/ZRX.json create mode 100644 packages/0x.js/src/compact_artifacts/DummyToken.json create mode 100644 packages/0x.js/src/compact_artifacts/EtherToken.json create mode 100644 packages/0x.js/src/compact_artifacts/Exchange.json create mode 100644 packages/0x.js/src/compact_artifacts/Token.json create mode 100644 packages/0x.js/src/compact_artifacts/TokenRegistry.json create mode 100644 packages/0x.js/src/compact_artifacts/TokenTransferProxy.json create mode 100644 packages/0x.js/src/compact_artifacts/ZRX.json delete mode 100644 packages/0x.js/test/migrations/config/token_info.ts delete mode 100644 packages/0x.js/test/migrations/migrate.ts delete mode 100644 packages/0x.js/test/migrations/types.ts create mode 100644 packages/migrations/README.md create mode 100644 packages/migrations/package.json create mode 100644 packages/migrations/src/globals.d.ts create mode 100644 packages/migrations/src/index.ts create mode 100644 packages/migrations/src/migrate.ts create mode 100644 packages/migrations/src/migration.ts create mode 100644 packages/migrations/src/types.ts create mode 100644 packages/migrations/src/utils/constants.ts create mode 100644 packages/migrations/src/utils/token_info.ts create mode 100644 packages/migrations/tsconfig.json create mode 100644 packages/migrations/tslint.json (limited to 'packages') diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 0a91343c7..961a97d84 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -15,16 +15,16 @@ "build:watch": "tsc -w", "prebuild": "run-s clean generate_contract_wrappers", "build": "run-p build:umd:prod build:commonjs; exit 0;", - "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", + "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis 'src/compact_artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", "test:circleci": "run-s test:coverage", "test": "run-s clean test:commonjs", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/src/artifacts/$i.json test/artifacts; done;", + "update_artifacts": "for i in ${npm_package_config_compact_artifacts}; do copyfiles -u 4 ../migrations/src/artifacts/$i.json test/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp scripts", "build:umd:prod": "NODE_ENV=production webpack", - "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", + "build:commonjs": "tsc && yarn update_artifacts && copyfiles -u 2 './src/compact_artifacts/**/*.json' ./lib/src/compact_artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "test:commonjs": "run-s build:commonjs run_mocha", "run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit", "manual:postpublish": "yarn build; node ./scripts/postpublish.js", @@ -33,7 +33,7 @@ "upload_docs_json": "aws s3 cp generated_docs/index.json $S3_URL --profile 0xproject --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers --content-type application/json" }, "config": { - "artifacts": "Exchange DummyToken ZRXToken Token WETH9 TokenTransferProxy MultiSigWallet MultiSigWalletWithTimeLock MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress MaliciousToken TokenRegistry Arbitrage EtherDelta AccountLevels", + "compact_artifacts": "Exchange DummyToken ZRXToken Token EtherToken TokenTransferProxy TokenRegistry", "postpublish": { "assets": [ "packages/0x.js/_bundles/index.js", @@ -114,6 +114,9 @@ "uuid": "^3.1.0", "web3": "^0.20.0" }, + "optionalDependencies": { + "@0xproject/migrations": "^0.0.1" + }, "publishConfig": { "access": "public" } diff --git a/packages/0x.js/src/artifacts.ts b/packages/0x.js/src/artifacts.ts index cbacd7d56..a91d9ae1f 100644 --- a/packages/0x.js/src/artifacts.ts +++ b/packages/0x.js/src/artifacts.ts @@ -1,10 +1,10 @@ -import * as DummyTokenArtifact from './artifacts/DummyToken.json'; -import * as EtherTokenArtifact from './artifacts/EtherToken.json'; -import * as ExchangeArtifact from './artifacts/Exchange.json'; -import * as TokenArtifact from './artifacts/Token.json'; -import * as TokenRegistryArtifact from './artifacts/TokenRegistry.json'; -import * as TokenTransferProxyArtifact from './artifacts/TokenTransferProxy.json'; -import * as ZRXArtifact from './artifacts/ZRX.json'; +import * as DummyTokenArtifact from './compact_artifacts/DummyToken.json'; +import * as EtherTokenArtifact from './compact_artifacts/EtherToken.json'; +import * as ExchangeArtifact from './compact_artifacts/Exchange.json'; +import * as TokenArtifact from './compact_artifacts/Token.json'; +import * as TokenRegistryArtifact from './compact_artifacts/TokenRegistry.json'; +import * as TokenTransferProxyArtifact from './compact_artifacts/TokenTransferProxy.json'; +import * as ZRXArtifact from './compact_artifacts/ZRX.json'; import { Artifact } from './types'; export const artifacts = { diff --git a/packages/0x.js/src/artifacts/DummyToken.json b/packages/0x.js/src/artifacts/DummyToken.json deleted file mode 100644 index f64a8cd3d..000000000 --- a/packages/0x.js/src/artifacts/DummyToken.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "contract_name": "DummyToken", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_target", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "setBalance", - "outputs": [], - "payable": false, - "type": "function" - } - ] -} diff --git a/packages/0x.js/src/artifacts/EtherToken.json b/packages/0x.js/src/artifacts/EtherToken.json deleted file mode 100644 index 26cca57cd..000000000 --- a/packages/0x.js/src/artifacts/EtherToken.json +++ /dev/null @@ -1,287 +0,0 @@ -{ - "contract_name": "EtherToken", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "deposit", - "outputs": [], - "payable": true, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "payable": true, - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - } - ], - "networks": { - "1": { - "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" - }, - "3": { - "address": "0xc00fd9820cd2898cc4c054b7bf142de637ad129a" - }, - "4": { - "address": "0xc778417e063141139fce010982780140aa0cd5ab" - }, - "42": { - "address": "0x653e49e301e508a13237c0ddc98ae7d4cd2667a1" - }, - "50": { - "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c" - } - } -} diff --git a/packages/0x.js/src/artifacts/Exchange.json b/packages/0x.js/src/artifacts/Exchange.json deleted file mode 100644 index af8db7360..000000000 --- a/packages/0x.js/src/artifacts/Exchange.json +++ /dev/null @@ -1,610 +0,0 @@ -{ - "contract_name": "Exchange", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "isRoundingError", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "filled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "cancelled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "fillOrdersUpTo", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "cancelTakerTokenAmount", - "type": "uint256" - } - ], - "name": "cancelOrder", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZRX_TOKEN_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrKillOrders", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrKillOrder", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "getUnavailableTakerTokenAmount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "signer", - "type": "address" - }, - { - "name": "hash", - "type": "bytes32" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "getPartialAmount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "TOKEN_TRANSFER_PROXY_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrders", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "cancelTakerTokenAmounts", - "type": "uint256[]" - } - ], - "name": "batchCancelOrders", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrder", - "outputs": [ - { - "name": "filledTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - } - ], - "name": "getOrderHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "EXTERNAL_QUERY_GAS_LIMIT", - "outputs": [ - { - "name": "", - "type": "uint16" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "type": "function" - }, - { - "inputs": [ - { - "name": "_zrxToken", - "type": "address" - }, - { - "name": "_tokenTransferProxy", - "type": "address" - } - ], - "payable": false, - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidMakerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidTakerFee", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "cancelledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "errorId", - "type": "uint8" - }, - { - "indexed": true, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogError", - "type": "event" - } - ], - "networks": { - "1": { - "address": "0x12459c951127e0c374ff9105dda097662a027093" - }, - "3": { - "address": "0x479cc461fecd078f766ecc58533d6f69580cf3ac" - }, - "4": { - "address": "0x1d16ef40fac01cec8adac2ac49427b9384192c05" - }, - "42": { - "address": "0x90fe2af704b34e0224bf2299c838e04d4dcf1364" - }, - "50": { - "address": "0x48bacb9266a570d521063ef5dd96e61686dbe788" - } - } -} diff --git a/packages/0x.js/src/artifacts/Token.json b/packages/0x.js/src/artifacts/Token.json deleted file mode 100644 index 3b5a86ae0..000000000 --- a/packages/0x.js/src/artifacts/Token.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "contract_name": "Token", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "supply", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "remaining", - "type": "uint256" - } - ], - "payable": false, - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ] -} diff --git a/packages/0x.js/src/artifacts/TokenRegistry.json b/packages/0x.js/src/artifacts/TokenRegistry.json deleted file mode 100644 index 0f583628c..000000000 --- a/packages/0x.js/src/artifacts/TokenRegistry.json +++ /dev/null @@ -1,547 +0,0 @@ -{ - "contract_name": "TokenRegistry", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_index", - "type": "uint256" - } - ], - "name": "removeToken", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_name", - "type": "string" - } - ], - "name": "getTokenAddressByName", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_symbol", - "type": "string" - } - ], - "name": "getTokenAddressBySymbol", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_swarmHash", - "type": "bytes" - } - ], - "name": "setTokenSwarmHash", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_token", - "type": "address" - } - ], - "name": "getTokenMetaData", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_name", - "type": "string" - }, - { - "name": "_symbol", - "type": "string" - }, - { - "name": "_decimals", - "type": "uint8" - }, - { - "name": "_ipfsHash", - "type": "bytes" - }, - { - "name": "_swarmHash", - "type": "bytes" - } - ], - "name": "addToken", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_name", - "type": "string" - } - ], - "name": "setTokenName", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "tokens", - "outputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "symbol", - "type": "string" - }, - { - "name": "decimals", - "type": "uint8" - }, - { - "name": "ipfsHash", - "type": "bytes" - }, - { - "name": "swarmHash", - "type": "bytes" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "tokenAddresses", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_name", - "type": "string" - } - ], - "name": "getTokenByName", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTokenAddresses", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_ipfsHash", - "type": "bytes" - } - ], - "name": "setTokenIpfsHash", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_symbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_symbol", - "type": "string" - } - ], - "name": "setTokenSymbol", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "name", - "type": "string" - }, - { - "indexed": false, - "name": "symbol", - "type": "string" - }, - { - "indexed": false, - "name": "decimals", - "type": "uint8" - }, - { - "indexed": false, - "name": "ipfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "swarmHash", - "type": "bytes" - } - ], - "name": "LogAddToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "name", - "type": "string" - }, - { - "indexed": false, - "name": "symbol", - "type": "string" - }, - { - "indexed": false, - "name": "decimals", - "type": "uint8" - }, - { - "indexed": false, - "name": "ipfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "swarmHash", - "type": "bytes" - } - ], - "name": "LogRemoveToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldName", - "type": "string" - }, - { - "indexed": false, - "name": "newName", - "type": "string" - } - ], - "name": "LogTokenNameChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldSymbol", - "type": "string" - }, - { - "indexed": false, - "name": "newSymbol", - "type": "string" - } - ], - "name": "LogTokenSymbolChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldIpfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "newIpfsHash", - "type": "bytes" - } - ], - "name": "LogTokenIpfsHashChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldSwarmHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "newSwarmHash", - "type": "bytes" - } - ], - "name": "LogTokenSwarmHashChange", - "type": "event" - } - ], - "networks": { - "1": { - "address": "0x926a74c5c36adf004c87399e65f75628b0f98d2c" - }, - "3": { - "address": "0x6b1a50f0bb5a7995444bd3877b22dc89c62843ed" - }, - "4": { - "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" - }, - "42": { - "address": "0xf18e504561f4347bea557f3d4558f559dddbae7f" - }, - "50": { - "address": "0x0b1ba0af832d7c05fd64161e0db78e85978e8082" - } - } -} diff --git a/packages/0x.js/src/artifacts/TokenTransferProxy.json b/packages/0x.js/src/artifacts/TokenTransferProxy.json deleted file mode 100644 index 8cf551ddb..000000000 --- a/packages/0x.js/src/artifacts/TokenTransferProxy.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "contract_name": "TokenTransferProxy", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "from", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "target", - "type": "address" - } - ], - "name": "addAuthorizedAddress", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "authorities", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "target", - "type": "address" - } - ], - "name": "removeAuthorizedAddress", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getAuthorizedAddresses", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "target", - "type": "address" - }, - { - "indexed": true, - "name": "caller", - "type": "address" - } - ], - "name": "LogAuthorizedAddressAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "target", - "type": "address" - }, - { - "indexed": true, - "name": "caller", - "type": "address" - } - ], - "name": "LogAuthorizedAddressRemoved", - "type": "event" - } - ], - "networks": { - "1": { - "address": "0x8da0d80f5007ef1e431dd2127178d224e32c2ef4" - }, - "3": { - "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" - }, - "4": { - "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" - }, - "42": { - "address": "0x087eed4bc1ee3de49befbd66c662b434b15d49d4" - }, - "50": { - "address": "0x1dc4c1cefef38a777b15aa20260a54e584b16c48" - } - } -} diff --git a/packages/0x.js/src/artifacts/ZRX.json b/packages/0x.js/src/artifacts/ZRX.json deleted file mode 100644 index e40b8f268..000000000 --- a/packages/0x.js/src/artifacts/ZRX.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "contract_name": "ZRX", - "networks": { - "1": { - "address": "0xe41d2489571d322189246dafa5ebde1f4699f498" - }, - "3": { - "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" - }, - "4": { - "address": "0x00f58d6d585f84b2d7267940cede30ce2fe6eae8" - }, - "42": { - "address": "0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570" - }, - "50": { - "address": "0x1d7022f5b17d2f8b695918fb48fa1089c9f85401" - } - } -} diff --git a/packages/0x.js/src/compact_artifacts/DummyToken.json b/packages/0x.js/src/compact_artifacts/DummyToken.json new file mode 100644 index 000000000..f64a8cd3d --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/DummyToken.json @@ -0,0 +1,22 @@ +{ + "contract_name": "DummyToken", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_target", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "setBalance", + "outputs": [], + "payable": false, + "type": "function" + } + ] +} diff --git a/packages/0x.js/src/compact_artifacts/EtherToken.json b/packages/0x.js/src/compact_artifacts/EtherToken.json new file mode 100644 index 000000000..26cca57cd --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/EtherToken.json @@ -0,0 +1,287 @@ +{ + "contract_name": "EtherToken", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "deposit", + "outputs": [], + "payable": true, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "payable": true, + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + } + ], + "networks": { + "1": { + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + }, + "3": { + "address": "0xc00fd9820cd2898cc4c054b7bf142de637ad129a" + }, + "4": { + "address": "0xc778417e063141139fce010982780140aa0cd5ab" + }, + "42": { + "address": "0x653e49e301e508a13237c0ddc98ae7d4cd2667a1" + }, + "50": { + "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c" + } + } +} diff --git a/packages/0x.js/src/compact_artifacts/Exchange.json b/packages/0x.js/src/compact_artifacts/Exchange.json new file mode 100644 index 000000000..af8db7360 --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/Exchange.json @@ -0,0 +1,610 @@ +{ + "contract_name": "Exchange", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "isRoundingError", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "filled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "cancelled", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "fillOrdersUpTo", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "cancelTakerTokenAmount", + "type": "uint256" + } + ], + "name": "cancelOrder", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "ZRX_TOKEN_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrKillOrders", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrKillOrder", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "getUnavailableTakerTokenAmount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "signer", + "type": "address" + }, + { + "name": "hash", + "type": "bytes32" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "numerator", + "type": "uint256" + }, + { + "name": "denominator", + "type": "uint256" + }, + { + "name": "target", + "type": "uint256" + } + ], + "name": "getPartialAmount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TOKEN_TRANSFER_PROXY_CONTRACT", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "fillTakerTokenAmounts", + "type": "uint256[]" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "batchFillOrders", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5][]" + }, + { + "name": "orderValues", + "type": "uint256[6][]" + }, + { + "name": "cancelTakerTokenAmounts", + "type": "uint256[]" + } + ], + "name": "batchCancelOrders", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + }, + { + "name": "fillTakerTokenAmount", + "type": "uint256" + }, + { + "name": "shouldThrowOnInsufficientBalanceOrAllowance", + "type": "bool" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "fillOrder", + "outputs": [ + { + "name": "filledTakerTokenAmount", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "orderAddresses", + "type": "address[5]" + }, + { + "name": "orderValues", + "type": "uint256[6]" + } + ], + "name": "getOrderHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EXTERNAL_QUERY_GAS_LIMIT", + "outputs": [ + { + "name": "", + "type": "uint16" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "type": "function" + }, + { + "inputs": [ + { + "name": "_zrxToken", + "type": "address" + }, + { + "name": "_tokenTransferProxy", + "type": "address" + } + ], + "payable": false, + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": false, + "name": "taker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "filledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "filledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidMakerFee", + "type": "uint256" + }, + { + "indexed": false, + "name": "paidTakerFee", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogFill", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "maker", + "type": "address" + }, + { + "indexed": true, + "name": "feeRecipient", + "type": "address" + }, + { + "indexed": false, + "name": "makerToken", + "type": "address" + }, + { + "indexed": false, + "name": "takerToken", + "type": "address" + }, + { + "indexed": false, + "name": "cancelledMakerTokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "cancelledTakerTokenAmount", + "type": "uint256" + }, + { + "indexed": true, + "name": "tokens", + "type": "bytes32" + }, + { + "indexed": false, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogCancel", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "errorId", + "type": "uint8" + }, + { + "indexed": true, + "name": "orderHash", + "type": "bytes32" + } + ], + "name": "LogError", + "type": "event" + } + ], + "networks": { + "1": { + "address": "0x12459c951127e0c374ff9105dda097662a027093" + }, + "3": { + "address": "0x479cc461fecd078f766ecc58533d6f69580cf3ac" + }, + "4": { + "address": "0x1d16ef40fac01cec8adac2ac49427b9384192c05" + }, + "42": { + "address": "0x90fe2af704b34e0224bf2299c838e04d4dcf1364" + }, + "50": { + "address": "0x48bacb9266a570d521063ef5dd96e61686dbe788" + } + } +} diff --git a/packages/0x.js/src/compact_artifacts/Token.json b/packages/0x.js/src/compact_artifacts/Token.json new file mode 100644 index 000000000..3b5a86ae0 --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/Token.json @@ -0,0 +1,172 @@ +{ + "contract_name": "Token", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "supply", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + } + ] +} diff --git a/packages/0x.js/src/compact_artifacts/TokenRegistry.json b/packages/0x.js/src/compact_artifacts/TokenRegistry.json new file mode 100644 index 000000000..0f583628c --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/TokenRegistry.json @@ -0,0 +1,547 @@ +{ + "contract_name": "TokenRegistry", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_index", + "type": "uint256" + } + ], + "name": "removeToken", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + } + ], + "name": "getTokenAddressByName", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_symbol", + "type": "string" + } + ], + "name": "getTokenAddressBySymbol", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_swarmHash", + "type": "bytes" + } + ], + "name": "setTokenSwarmHash", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_token", + "type": "address" + } + ], + "name": "getTokenMetaData", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_name", + "type": "string" + }, + { + "name": "_symbol", + "type": "string" + }, + { + "name": "_decimals", + "type": "uint8" + }, + { + "name": "_ipfsHash", + "type": "bytes" + }, + { + "name": "_swarmHash", + "type": "bytes" + } + ], + "name": "addToken", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_name", + "type": "string" + } + ], + "name": "setTokenName", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "tokens", + "outputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "decimals", + "type": "uint8" + }, + { + "name": "ipfsHash", + "type": "bytes" + }, + { + "name": "swarmHash", + "type": "bytes" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "tokenAddresses", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + } + ], + "name": "getTokenByName", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTokenAddresses", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_ipfsHash", + "type": "bytes" + } + ], + "name": "setTokenIpfsHash", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_symbol", + "type": "string" + } + ], + "name": "getTokenBySymbol", + "outputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "string" + }, + { + "name": "", + "type": "uint8" + }, + { + "name": "", + "type": "bytes" + }, + { + "name": "", + "type": "bytes" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_token", + "type": "address" + }, + { + "name": "_symbol", + "type": "string" + } + ], + "name": "setTokenSymbol", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": false, + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "name": "decimals", + "type": "uint8" + }, + { + "indexed": false, + "name": "ipfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "swarmHash", + "type": "bytes" + } + ], + "name": "LogAddToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "name", + "type": "string" + }, + { + "indexed": false, + "name": "symbol", + "type": "string" + }, + { + "indexed": false, + "name": "decimals", + "type": "uint8" + }, + { + "indexed": false, + "name": "ipfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "swarmHash", + "type": "bytes" + } + ], + "name": "LogRemoveToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldName", + "type": "string" + }, + { + "indexed": false, + "name": "newName", + "type": "string" + } + ], + "name": "LogTokenNameChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldSymbol", + "type": "string" + }, + { + "indexed": false, + "name": "newSymbol", + "type": "string" + } + ], + "name": "LogTokenSymbolChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldIpfsHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "newIpfsHash", + "type": "bytes" + } + ], + "name": "LogTokenIpfsHashChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "token", + "type": "address" + }, + { + "indexed": false, + "name": "oldSwarmHash", + "type": "bytes" + }, + { + "indexed": false, + "name": "newSwarmHash", + "type": "bytes" + } + ], + "name": "LogTokenSwarmHashChange", + "type": "event" + } + ], + "networks": { + "1": { + "address": "0x926a74c5c36adf004c87399e65f75628b0f98d2c" + }, + "3": { + "address": "0x6b1a50f0bb5a7995444bd3877b22dc89c62843ed" + }, + "4": { + "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" + }, + "42": { + "address": "0xf18e504561f4347bea557f3d4558f559dddbae7f" + }, + "50": { + "address": "0x0b1ba0af832d7c05fd64161e0db78e85978e8082" + } + } +} diff --git a/packages/0x.js/src/compact_artifacts/TokenTransferProxy.json b/packages/0x.js/src/compact_artifacts/TokenTransferProxy.json new file mode 100644 index 000000000..8cf551ddb --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/TokenTransferProxy.json @@ -0,0 +1,187 @@ +{ + "contract_name": "TokenTransferProxy", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "target", + "type": "address" + } + ], + "name": "addAuthorizedAddress", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "authorities", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "target", + "type": "address" + } + ], + "name": "removeAuthorizedAddress", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getAuthorizedAddresses", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "target", + "type": "address" + }, + { + "indexed": true, + "name": "caller", + "type": "address" + } + ], + "name": "LogAuthorizedAddressAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "target", + "type": "address" + }, + { + "indexed": true, + "name": "caller", + "type": "address" + } + ], + "name": "LogAuthorizedAddressRemoved", + "type": "event" + } + ], + "networks": { + "1": { + "address": "0x8da0d80f5007ef1e431dd2127178d224e32c2ef4" + }, + "3": { + "address": "0x4e9aad8184de8833365fea970cd9149372fdf1e6" + }, + "4": { + "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" + }, + "42": { + "address": "0x087eed4bc1ee3de49befbd66c662b434b15d49d4" + }, + "50": { + "address": "0x1dc4c1cefef38a777b15aa20260a54e584b16c48" + } + } +} diff --git a/packages/0x.js/src/compact_artifacts/ZRX.json b/packages/0x.js/src/compact_artifacts/ZRX.json new file mode 100644 index 000000000..e40b8f268 --- /dev/null +++ b/packages/0x.js/src/compact_artifacts/ZRX.json @@ -0,0 +1,20 @@ +{ + "contract_name": "ZRX", + "networks": { + "1": { + "address": "0xe41d2489571d322189246dafa5ebde1f4699f498" + }, + "3": { + "address": "0xa8e9fa8f91e5ae138c74648c9c304f1c75003a8d" + }, + "4": { + "address": "0x00f58d6d585f84b2d7267940cede30ce2fe6eae8" + }, + "42": { + "address": "0x6ff6c0ff1d68b964901f986d4c9fa3ac68346570" + }, + "50": { + "address": "0x1d7022f5b17d2f8b695918fb48fa1089c9f85401" + } + } +} diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index e6163d568..5720f42ce 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -1,5 +1,9 @@ import { Deployer } from '@0xproject/deployer'; import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; +// HACK: This dependency is optional since it is only available when run from within +// the monorepo. tslint doesn't handle optional dependencies +// tslint:disable-next-line:no-implicit-dependencies +import { runMigrationsAsync } from '@0xproject/migrations'; import { BigNumber } from '@0xproject/utils'; import * as chai from 'chai'; import * as _ from 'lodash'; @@ -9,7 +13,6 @@ import * as Sinon from 'sinon'; import { ApprovalContractEventArgs, LogWithDecodedArgs, Order, TokenEvents, ZeroEx } from '../src'; -import { runMigrationsAsync } from './migrations/migrate'; import { chaiSetup } from './utils/chai_setup'; import { constants } from './utils/constants'; import { deployer } from './utils/deployer'; diff --git a/packages/0x.js/test/migrations/config/token_info.ts b/packages/0x.js/test/migrations/config/token_info.ts deleted file mode 100644 index 0d0e90917..000000000 --- a/packages/0x.js/test/migrations/config/token_info.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { constants } from '../../utils/constants'; -import { Token } from '../types'; - -export const tokenInfo: Token[] = [ - { - name: 'Augur Reputation Token', - symbol: 'REP', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Digix DAO Token', - symbol: 'DGD', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Golem Network Token', - symbol: 'GNT', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'MakerDAO', - symbol: 'MKR', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Melon Token', - symbol: 'MLN', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, -]; diff --git a/packages/0x.js/test/migrations/migrate.ts b/packages/0x.js/test/migrations/migrate.ts deleted file mode 100644 index 85fb2a34f..000000000 --- a/packages/0x.js/test/migrations/migrate.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Deployer } from '@0xproject/deployer'; -import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import * as _ from 'lodash'; - -import { constants } from '../utils/constants'; - -import { tokenInfo } from './config/token_info'; -import { ContractName } from './types'; - -/** - * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command. - * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically, - * the migration should be written to run synchronously. - * @param deployer Deployer instance. - */ -export const runMigrationsAsync = async (deployer: Deployer) => { - const web3Wrapper: Web3Wrapper = deployer.web3Wrapper; - const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync(); - - const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy); - const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken); - const etherToken = await deployer.deployAndSaveAsync(ContractName.WETH9); - const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry); - - const exchangeArgs = [zrxToken.address, tokenTransferProxy.address]; - const owners = [accounts[0], accounts[1]]; - const confirmationsRequired = new BigNumber(2); - const secondsRequired = new BigNumber(0); - const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address]; - const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs); - const multiSig = await deployer.deployAndSaveAsync( - ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, - multiSigArgs, - ); - - const owner = accounts[0]; - await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner }); - await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner }); - const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync( - zrxToken.address, - tokenInfo[0].name, - tokenInfo[0].symbol, - tokenInfo[0].decimals, - tokenInfo[0].ipfsHash, - tokenInfo[0].swarmHash, - { from: owner }, - ); - await tokenReg.addToken.sendTransactionAsync( - zrxToken.address, - '0x Protocol Token', - 'ZRX', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - await tokenReg.addToken.sendTransactionAsync( - etherToken.address, - 'Ether Token', - 'WETH', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - for (const token of tokenInfo) { - const totalSupply = new BigNumber(0); - const args = [token.name, token.symbol, token.decimals, totalSupply]; - const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args); - await tokenReg.addToken.sendTransactionAsync( - dummyToken.address, - token.name, - token.symbol, - token.decimals, - token.ipfsHash, - token.swarmHash, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - } -}; diff --git a/packages/0x.js/test/migrations/types.ts b/packages/0x.js/test/migrations/types.ts deleted file mode 100644 index 1887bfd96..000000000 --- a/packages/0x.js/test/migrations/types.ts +++ /dev/null @@ -1,38 +0,0 @@ -export interface MultiSigConfig { - owners: string[]; - confirmationsRequired: number; - secondsRequired: number; -} - -export interface MultiSigConfigByNetwork { - [networkName: string]: MultiSigConfig; -} - -export interface Token { - address?: string; - name: string; - symbol: string; - decimals: number; - ipfsHash: string; - swarmHash: string; -} - -export interface TokenInfoByNetwork { - development: Token[]; - live: Token[]; -} - -export enum ContractName { - TokenTransferProxy = 'TokenTransferProxy', - TokenRegistry = 'TokenRegistry', - MultiSigWalletWithTimeLock = 'MultiSigWalletWithTimeLock', - Exchange = 'Exchange', - ZRXToken = 'ZRXToken', - DummyToken = 'DummyToken', - WETH9 = 'WETH9', - MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress = 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', - MaliciousToken = 'MaliciousToken', - AccountLevels = 'AccountLevels', - EtherDelta = 'EtherDelta', - Arbitrage = 'Arbitrage', -} diff --git a/packages/contracts/README.md b/packages/contracts/README.md index 286ef019c..16e253549 100644 --- a/packages/contracts/README.md +++ b/packages/contracts/README.md @@ -72,17 +72,6 @@ yarn lint ### Run Tests -Before running the tests, you will need to spin up a [TestRPC](https://www.npmjs.com/package/ethereumjs-testrpc) instance. - -In a separate terminal, start TestRPC (a convenience command is provided as part of the [0x.js monorepo](https://github.com/0xProject/0x-monorepo)) - -```bash -cd ../.. -yarn testrpc -``` - -Then in your main terminal run - ```bash yarn test ``` diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 1d393c60b..04073f4b7 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -10,13 +10,13 @@ "scripts": { "build:watch": "tsc -w", "prebuild": "run-s clean compile copy_artifacts generate_contract_wrappers", - "copy_artifacts": "copyfiles './src/artifacts/**/*' ./lib", + "copy_artifacts": "copyfiles -u 4 '../migrations/src/artifacts/**/*' ./lib/src/artifacts;", "build": "tsc", "test": "run-s build run_mocha", "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov", "run_mocha": "mocha 'lib/test/**/*.js' --timeout 100000 --bail --exit", "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", - "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir src/artifacts", + "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir ../migrations/src/artifacts", "clean": "shx rm -rf ./lib", "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'", @@ -26,7 +26,7 @@ "test:circleci": "yarn test:coverage" }, "config": { - "abis": "src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json", + "abis": "../migrations/src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json", "contracts": "Exchange,DummyToken,ZRXToken,Token,WETH9,TokenTransferProxy,MultiSigWallet,MultiSigWalletWithTimeLock,MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,MaliciousToken,TokenRegistry,Arbitrage,EtherDelta,AccountLevels" }, "repository": { diff --git a/packages/contracts/test/utils/deployer.ts b/packages/contracts/test/utils/deployer.ts index 45f79a2a4..2f0951475 100644 --- a/packages/contracts/test/utils/deployer.ts +++ b/packages/contracts/test/utils/deployer.ts @@ -8,7 +8,7 @@ import { web3 } from './web3_wrapper'; const deployerOpts = { provider: web3.currentProvider, - artifactsDir: path.resolve('src', 'artifacts'), + artifactsDir: path.resolve('lib', 'src', 'artifacts'), networkId: constants.TESTRPC_NETWORK_ID, defaults: { gas: devConstants.GAS_ESTIMATE, diff --git a/packages/migrations/README.md b/packages/migrations/README.md new file mode 100644 index 000000000..15129ae85 --- /dev/null +++ b/packages/migrations/README.md @@ -0,0 +1,69 @@ +## Migrations + +Migrate the 0x system of smart contracts on the network of your choice using these migrations. + +## Contributing + +We welcome improvements and fixes from the wider community! To report bugs within this package, please create an issue in this repository. + +Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started. + +### Install dependencies + +If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them: + +```bash +yarn config set workspaces-experimental true +``` + +Then install dependencies + +```bash +yarn install +``` + +### Build + +If this is your **first** time building this package, you must first build **all** packages within the monorepo. This is because packages that depend on other packages located inside this monorepo are symlinked when run from **within** the monorepo. This allows you to make changes across multiple packages without first publishing dependent packages to NPM. To build all packages, run the following from the monorepo root directory: + +```bash +yarn lerna:rebuild +``` + +Or continuously rebuild on change: + +```bash +yarn dev +``` + +You can also build this specific package by running the following from within its directory: + +```bash +yarn build +``` + +or continuously rebuild on change: + +```bash +yarn build:watch +``` + +### Clean + +```bash +yarn clean +``` + +### Lint + +```bash +yarn lint +``` + +### Migrate + +In order to migrate the 0x smart contracts to TestRPC/Ganache running at `http://localhost:8545`, run: + +```bash +yarn migrate +``` diff --git a/packages/migrations/package.json b/packages/migrations/package.json new file mode 100644 index 000000000..65946aa71 --- /dev/null +++ b/packages/migrations/package.json @@ -0,0 +1,36 @@ +{ + "private": true, + "name": "@0xproject/migrations", + "version": "0.0.1", + "description": "0x smart contract migrations", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "scripts": { + "build:watch": "tsc -w", + "build": "tsc", + "clean": "shx rm -rf lib", + "lint": "tslint --project . 'src/**/*.ts'", + "migrate": "run-s build compile script:migrate", + "script:migrate": "node ./lib/migrate.js", + "copy_artifacts": "copyfiles 'src/artifacts/**/*' ./lib", + "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir ../contracts/src/contracts --artifacts-dir src/artifacts" + }, + "config": { + "contracts": "Exchange,DummyToken,ZRXToken,Token,WETH9,TokenTransferProxy,MultiSigWallet,MultiSigWalletWithTimeLock,MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,MaliciousToken,TokenRegistry,Arbitrage,EtherDelta,AccountLevels" + }, + "license": "Apache-2.0", + "devDependencies": { + "@0xproject/tslint-config": "^0.4.14", + "@0xproject/dev-utils": "^0.3.4", + "npm-run-all": "^4.1.2", + "shx": "^0.2.2", + "tslint": "5.8.0", + "typescript": "2.7.1" + }, + "dependencies": { + "@0xproject/deployer": "^0.3.5", + "@0xproject/utils": "^0.5.0", + "@0xproject/web3-wrapper": "^0.5.0", + "lodash": "^4.17.4" + } +} diff --git a/packages/migrations/src/globals.d.ts b/packages/migrations/src/globals.d.ts new file mode 100644 index 000000000..94e63a32d --- /dev/null +++ b/packages/migrations/src/globals.d.ts @@ -0,0 +1,6 @@ +declare module '*.json' { + const json: any; + /* tslint:disable */ + export default json; + /* tslint:enable */ +} diff --git a/packages/migrations/src/index.ts b/packages/migrations/src/index.ts new file mode 100644 index 000000000..2a40f36bc --- /dev/null +++ b/packages/migrations/src/index.ts @@ -0,0 +1,3 @@ +import { runMigrationsAsync } from './migration'; + +export { runMigrationsAsync }; diff --git a/packages/migrations/src/migrate.ts b/packages/migrations/src/migrate.ts new file mode 100644 index 000000000..76dcbd847 --- /dev/null +++ b/packages/migrations/src/migrate.ts @@ -0,0 +1,25 @@ +#!/usr/bin/env node +import { Deployer } from '@0xproject/deployer'; +import { devConstants } from '@0xproject/dev-utils'; +import { logUtils } from '@0xproject/utils'; +import * as path from 'path'; + +import { runMigrationsAsync } from './migration'; + +(async () => { + const deployerOpts = { + jsonrpcUrl: 'http://localhost:8545', + artifactsDir: path.resolve('src', 'artifacts'), + networkId: 50, + defaults: { + gas: devConstants.GAS_ESTIMATE, + }, + }; + + const deployer = new Deployer(deployerOpts); + + await runMigrationsAsync(deployer); +})().catch(err => { + logUtils.log(err); + process.exit(1); +}); diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts new file mode 100644 index 000000000..be899cc65 --- /dev/null +++ b/packages/migrations/src/migration.ts @@ -0,0 +1,90 @@ +import { Deployer } from '@0xproject/deployer'; +import { BigNumber } from '@0xproject/utils'; +import { Web3Wrapper } from '@0xproject/web3-wrapper'; +import * as _ from 'lodash'; + +import { constants } from './utils/constants'; + +import { ContractName } from './types'; +import { tokenInfo } from './utils/token_info'; + +/** + * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command. + * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically, + * the migration should be written to run synchronously. + * @param deployer Deployer instance. + */ +export const runMigrationsAsync = async (deployer: Deployer) => { + const web3Wrapper: Web3Wrapper = deployer.web3Wrapper; + const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync(); + + const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy); + const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken); + const etherToken = await deployer.deployAndSaveAsync(ContractName.WETH9); + const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry); + + const exchangeArgs = [zrxToken.address, tokenTransferProxy.address]; + const owners = [accounts[0], accounts[1]]; + const confirmationsRequired = new BigNumber(2); + const secondsRequired = new BigNumber(0); + const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address]; + const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs); + const multiSig = await deployer.deployAndSaveAsync( + ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, + multiSigArgs, + ); + + const owner = accounts[0]; + await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner }); + await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner }); + const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync( + zrxToken.address, + tokenInfo[0].name, + tokenInfo[0].symbol, + tokenInfo[0].decimals, + tokenInfo[0].ipfsHash, + tokenInfo[0].swarmHash, + { from: owner }, + ); + await tokenReg.addToken.sendTransactionAsync( + zrxToken.address, + '0x Protocol Token', + 'ZRX', + 18, + constants.NULL_BYTES, + constants.NULL_BYTES, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + await tokenReg.addToken.sendTransactionAsync( + etherToken.address, + 'Ether Token', + 'WETH', + 18, + constants.NULL_BYTES, + constants.NULL_BYTES, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + for (const token of tokenInfo) { + const totalSupply = new BigNumber(0); + const args = [token.name, token.symbol, token.decimals, totalSupply]; + const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args); + await tokenReg.addToken.sendTransactionAsync( + dummyToken.address, + token.name, + token.symbol, + token.decimals, + token.ipfsHash, + token.swarmHash, + { + from: owner, + gas: addTokenGasEstimate, + }, + ); + } +}; diff --git a/packages/migrations/src/types.ts b/packages/migrations/src/types.ts new file mode 100644 index 000000000..1887bfd96 --- /dev/null +++ b/packages/migrations/src/types.ts @@ -0,0 +1,38 @@ +export interface MultiSigConfig { + owners: string[]; + confirmationsRequired: number; + secondsRequired: number; +} + +export interface MultiSigConfigByNetwork { + [networkName: string]: MultiSigConfig; +} + +export interface Token { + address?: string; + name: string; + symbol: string; + decimals: number; + ipfsHash: string; + swarmHash: string; +} + +export interface TokenInfoByNetwork { + development: Token[]; + live: Token[]; +} + +export enum ContractName { + TokenTransferProxy = 'TokenTransferProxy', + TokenRegistry = 'TokenRegistry', + MultiSigWalletWithTimeLock = 'MultiSigWalletWithTimeLock', + Exchange = 'Exchange', + ZRXToken = 'ZRXToken', + DummyToken = 'DummyToken', + WETH9 = 'WETH9', + MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress = 'MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress', + MaliciousToken = 'MaliciousToken', + AccountLevels = 'AccountLevels', + EtherDelta = 'EtherDelta', + Arbitrage = 'Arbitrage', +} diff --git a/packages/migrations/src/utils/constants.ts b/packages/migrations/src/utils/constants.ts new file mode 100644 index 000000000..8871a470d --- /dev/null +++ b/packages/migrations/src/utils/constants.ts @@ -0,0 +1,3 @@ +export const constants = { + NULL_BYTES: '0x', +}; diff --git a/packages/migrations/src/utils/token_info.ts b/packages/migrations/src/utils/token_info.ts new file mode 100644 index 000000000..f2ca3e8b3 --- /dev/null +++ b/packages/migrations/src/utils/token_info.ts @@ -0,0 +1,41 @@ +import { Token } from '../types'; + +import { constants } from './constants'; + +export const tokenInfo: Token[] = [ + { + name: 'Augur Reputation Token', + symbol: 'REP', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Digix DAO Token', + symbol: 'DGD', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Golem Network Token', + symbol: 'GNT', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'MakerDAO', + symbol: 'MKR', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, + { + name: 'Melon Token', + symbol: 'MLN', + decimals: 18, + ipfsHash: constants.NULL_BYTES, + swarmHash: constants.NULL_BYTES, + }, +]; diff --git a/packages/migrations/tsconfig.json b/packages/migrations/tsconfig.json new file mode 100644 index 000000000..f5f4b37c2 --- /dev/null +++ b/packages/migrations/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "outDir": "lib" + }, + "include": ["src/**/*"] +} diff --git a/packages/migrations/tslint.json b/packages/migrations/tslint.json new file mode 100644 index 000000000..ffaefe83a --- /dev/null +++ b/packages/migrations/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": ["@0xproject/tslint-config"] +} diff --git a/packages/subproviders/test/integration/ledger_subprovider_test.ts b/packages/subproviders/test/integration/ledger_subprovider_test.ts index 503618089..9e81dfac5 100644 --- a/packages/subproviders/test/integration/ledger_subprovider_test.ts +++ b/packages/subproviders/test/integration/ledger_subprovider_test.ts @@ -1,7 +1,7 @@ import { JSONRPCResponsePayload } from '@0xproject/types'; import { promisify } from '@0xproject/utils'; import Eth from '@ledgerhq/hw-app-eth'; -// HACK: This depdency is optional and tslint skips optional depdencies +// HACK: This dependency is optional and tslint skips optional dependencies // tslint:disable-next-line:no-implicit-dependencies import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; import * as chai from 'chai'; -- cgit v1.2.3 From 986ba175ce32d553bf864acfad1a747a3f917036 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 9 Apr 2018 17:14:32 +0900 Subject: Fix tslint --- packages/sol-cov/src/coverage_subprovider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/sol-cov/src/coverage_subprovider.ts b/packages/sol-cov/src/coverage_subprovider.ts index fc8b55188..6504d5a46 100644 --- a/packages/sol-cov/src/coverage_subprovider.ts +++ b/packages/sol-cov/src/coverage_subprovider.ts @@ -56,8 +56,8 @@ export class CoverageSubprovider extends Subprovider { * @param next Callback to call if this subprovider decides not to handle the request * @param end Callback to call if subprovider handled the request and wants to pass back the request. */ - // tslint:disable-next-line:prefer-function-over-method - public handleRequest(payload: JSONRPCRequestPayload, next: NextCallback, end: ErrorCallback) { + // tslint:disable-next-line:prefer-function-over-method async-suffix + public async handleRequest(payload: JSONRPCRequestPayload, next: NextCallback, end: ErrorCallback) { switch (payload.method) { case 'eth_sendTransaction': const txData = payload.params[0]; -- cgit v1.2.3 From 27575e9866d97998c4107284a46304eb0ec0bcd6 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 9 Apr 2018 17:17:05 +0900 Subject: Remove 0x.js test artifacts --- packages/0x.js/test/artifacts/AccountLevels.json | 40 - packages/0x.js/test/artifacts/Arbitrage.json | 122 --- packages/0x.js/test/artifacts/DummyToken.json | 325 -------- packages/0x.js/test/artifacts/EtherDelta.json | 876 --------------------- packages/0x.js/test/artifacts/Exchange.json | 634 --------------- packages/0x.js/test/artifacts/MaliciousToken.json | 196 ----- packages/0x.js/test/artifacts/MultiSigWallet.json | 552 ------------- .../test/artifacts/MultiSigWalletWithTimeLock.json | 633 --------------- ...tWithTimeLockExceptRemoveAuthorizedAddress.json | 687 ---------------- packages/0x.js/test/artifacts/Token.json | 180 ----- packages/0x.js/test/artifacts/TokenRegistry.json | 565 ------------- .../0x.js/test/artifacts/TokenTransferProxy.json | 198 ----- packages/0x.js/test/artifacts/WETH9.json | 300 ------- packages/0x.js/test/artifacts/ZRXToken.json | 247 ------ 14 files changed, 5555 deletions(-) delete mode 100644 packages/0x.js/test/artifacts/AccountLevels.json delete mode 100644 packages/0x.js/test/artifacts/Arbitrage.json delete mode 100644 packages/0x.js/test/artifacts/DummyToken.json delete mode 100644 packages/0x.js/test/artifacts/EtherDelta.json delete mode 100644 packages/0x.js/test/artifacts/Exchange.json delete mode 100644 packages/0x.js/test/artifacts/MaliciousToken.json delete mode 100644 packages/0x.js/test/artifacts/MultiSigWallet.json delete mode 100644 packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json delete mode 100644 packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json delete mode 100644 packages/0x.js/test/artifacts/Token.json delete mode 100644 packages/0x.js/test/artifacts/TokenRegistry.json delete mode 100644 packages/0x.js/test/artifacts/TokenTransferProxy.json delete mode 100644 packages/0x.js/test/artifacts/WETH9.json delete mode 100644 packages/0x.js/test/artifacts/ZRXToken.json (limited to 'packages') diff --git a/packages/0x.js/test/artifacts/AccountLevels.json b/packages/0x.js/test/artifacts/AccountLevels.json deleted file mode 100644 index 10fb43495..000000000 --- a/packages/0x.js/test/artifacts/AccountLevels.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "contract_name": "AccountLevels", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x48558bbda893aa15786836980a5fffb694db15163d462619c4dcb0f8ad97977b", - "source_tree_hash": "0x48558bbda893aa15786836980a5fffb694db15163d462619c4dcb0f8ad97977b", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "user", - "type": "address" - } - ], - "name": "accountLevel", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b60c48061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cbd0519146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050608e565b6040518082815260200191505060405180910390f35b60008090509190505600a165627a7a7230582071479bf14ae41db7a142de2a52f72ff30c74a36832d9aa0c7c79cabc3fc309740029", - "runtime_bytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cbd0519146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050608e565b6040518082815260200191505060405180910390f35b60008090509190505600a165627a7a7230582071479bf14ae41db7a142de2a52f72ff30c74a36832d9aa0c7c79cabc3fc309740029", - "updated_at": 1522264007240, - "source_map": "26:388:0:-;;;;;;;;;;;;;;;;;", - "source_map_runtime": "26:388:0:-;;;;;;;;;;;;;;;;;;;;;;;;328:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;381:4;404:1;397:8;;328:84;;;:::o", - "sources": [ - "AccountLevels.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Arbitrage.json b/packages/0x.js/test/artifacts/Arbitrage.json deleted file mode 100644 index 30fbfe981..000000000 --- a/packages/0x.js/test/artifacts/Arbitrage.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "contract_name": "Arbitrage", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x7f576bef315ae5d4154097970f03a291f99185d88f8318de3c3acfcb6c942b5d", - "source_tree_hash": "0x9d4dca59038ae8c995d9d06db8e5184dc52133935ab31834e98ca16a4cba24a5", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "tokenAddress", - "type": "address" - } - ], - "name": "setAllowances", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "addresses", - "type": "address[6]" - }, - { - "name": "values", - "type": "uint256[12]" - }, - { - "name": "v", - "type": "uint8[2]" - }, - { - "name": "r", - "type": "bytes32[2]" - }, - { - "name": "s", - "type": "bytes32[2]" - } - ], - "name": "makeAtomicTrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "name": "_exchangeAddress", - "type": "address" - }, - { - "name": "_etherDeltaAddress", - "type": "address" - }, - { - "name": "_proxyAddress", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b60405160608061118b83398101604052808051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050611039806101526000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633c059027146100675780638da5cb5b146100a0578063f2fde38b146100f5578063f41cd0591461012e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061016c565b005b34156100ab57600080fd5b6100b36104c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561010057600080fd5b61012c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104e8565b005b341561013957600080fd5b61016a6004808060c001909190806101800190919080604001909190806040019091908060400190919050506105bd565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101c957600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156102b057600080fd5b5af115156102bd57600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103ac57600080fd5b5af115156103b957600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156104a757600080fd5b5af115156104b457600080fd5b50505060405180519050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156105ba57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061857600080fd5b6106de856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c6020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050506107ab565b6107a4856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050610b4b565b5050505050565b6107b3610fa7565b6107bb610fe5565b600060a0604051908101604052808960006006811015156107d857fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600160068110151561081d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600260068110151561086257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960036006811015156108a757fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960046006811015156108ec57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250925060c060405190810160405280886000600c8110151561093d57fe5b60200201518152602001886001600c8110151561095657fe5b60200201518152602001886002600c8110151561096f57fe5b60200201518152602001886003600c8110151561098857fe5b60200201518152602001886004600c811015156109a157fe5b60200201518152602001886005600c811015156109ba57fe5b60200201518152509150866006600c811015156109d357fe5b60200201519050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663741bcc938484848a6000600281101515610a2a57fe5b60200201518a6000600281101515610a3e57fe5b60200201518a6000600281101515610a5257fe5b60200201516040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018087600560200280838360005b83811015610aad578082015181840152602081019050610a92565b5050505090500186600660200280838360005b83811015610adb578082015181840152602081019050610ac0565b505050509050018581526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019650505050505050600060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b5050505050505050505050565b600084600b600c81101515610b5c57fe5b60200201519050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663338b5dea876002600681101515610bb057fe5b6020020151876007600c81101515610bc457fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c4d57600080fd5b5af11515610c5a57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a19b14a876002600681101515610caa57fe5b6020020151876007600c81101515610cbe57fe5b6020020151896003600681101515610cd257fe5b6020020151896008600c81101515610ce657fe5b60200201518a6009600c81101515610cfa57fe5b60200201518b600a600c81101515610d0e57fe5b60200201518d6005600681101515610d2257fe5b60200201518c6001600281101515610d3657fe5b60200201518c6001600281101515610d4a57fe5b60200201518c6001600281101515610d5e57fe5b60200201518c6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b1515610e9557600080fd5b5af11515610ea257600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e281a98876003600681101515610ef257fe5b6020020151876008600c81101515610f0657fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f8f57600080fd5b5af11515610f9c57600080fd5b505050505050505050565b60a0604051908101604052806005905b600073ffffffffffffffffffffffffffffffffffffffff16815260200190600190039081610fb75790505090565b60c0604051908101604052806006905b6000815260200190600190039081610ff557905050905600a165627a7a72305820f64651fe495923a4929a666119d398ca846e3fcd286321f7d76b56484a07d6080029", - "runtime_bytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633c059027146100675780638da5cb5b146100a0578063f2fde38b146100f5578063f41cd0591461012e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061016c565b005b34156100ab57600080fd5b6100b36104c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561010057600080fd5b61012c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104e8565b005b341561013957600080fd5b61016a6004808060c001909190806101800190919080604001909190806040019091908060400190919050506105bd565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101c957600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156102b057600080fd5b5af115156102bd57600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156103ac57600080fd5b5af115156103b957600080fd5b50505060405180519050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156104a757600080fd5b5af115156104b457600080fd5b50505060405180519050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561054357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156105ba57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561061857600080fd5b6106de856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c6020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050506107ab565b6107a4856006806020026040519081016040528092919082600660200280828437820191505050505085600c806020026040519081016040528092919082600c602002808284378201915050505050856002806020026040519081016040528092919082600260200280828437820191505050505085600280602002604051908101604052809291908260026020028082843782019150505050508560028060200260405190810160405280929190826002602002808284378201915050505050610b4b565b5050505050565b6107b3610fa7565b6107bb610fe5565b600060a0604051908101604052808960006006811015156107d857fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600160068110151561081d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200189600260068110151561086257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960036006811015156108a757fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018960046006811015156108ec57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250925060c060405190810160405280886000600c8110151561093d57fe5b60200201518152602001886001600c8110151561095657fe5b60200201518152602001886002600c8110151561096f57fe5b60200201518152602001886003600c8110151561098857fe5b60200201518152602001886004600c811015156109a157fe5b60200201518152602001886005600c811015156109ba57fe5b60200201518152509150866006600c811015156109d357fe5b60200201519050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663741bcc938484848a6000600281101515610a2a57fe5b60200201518a6000600281101515610a3e57fe5b60200201518a6000600281101515610a5257fe5b60200201516040518763ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018087600560200280838360005b83811015610aad578082015181840152602081019050610a92565b5050505090500186600660200280838360005b83811015610adb578082015181840152602081019050610ac0565b505050509050018581526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019650505050505050600060405180830381600087803b1515610b3157600080fd5b5af11515610b3e57600080fd5b5050505050505050505050565b600084600b600c81101515610b5c57fe5b60200201519050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663338b5dea876002600681101515610bb057fe5b6020020151876007600c81101515610bc457fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610c4d57600080fd5b5af11515610c5a57600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630a19b14a876002600681101515610caa57fe5b6020020151876007600c81101515610cbe57fe5b6020020151896003600681101515610cd257fe5b6020020151896008600c81101515610ce657fe5b60200201518a6009600c81101515610cfa57fe5b60200201518b600a600c81101515610d0e57fe5b60200201518d6005600681101515610d2257fe5b60200201518c6001600281101515610d3657fe5b60200201518c6001600281101515610d4a57fe5b60200201518c6001600281101515610d5e57fe5b60200201518c6040518c63ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff168152602001846000191660001916815260200183600019166000191681526020018281526020019b505050505050505050505050600060405180830381600087803b1515610e9557600080fd5b5af11515610ea257600080fd5b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e281a98876003600681101515610ef257fe5b6020020151876008600c81101515610f0657fe5b60200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610f8f57600080fd5b5af11515610f9c57600080fd5b505050505050505050565b60a0604051908101604052806005905b600073ffffffffffffffffffffffffffffffffffffffff16815260200190600190039081610fb75790505090565b60c0604051908101604052806006905b6000815260200190600190039081610ff557905050905600a165627a7a72305820f64651fe495923a4929a666119d398ca846e3fcd286321f7d76b56484a07d6080029", - "updated_at": 1522264004856, - "source_map": "427:3407:0:-;;;586:241;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:10:9;295:5;;:18;;;;;;;;;;;;;;;;;;712:16:0;692:8;;:37;;;;;;;;;;;;;;;;;;763:18;739:10;;:43;;;;;;;;;;;;;;;;;;807:13;792:12;;:28;;;;;;;;;;;;;;;;;;586:241;;;427:3407;;;;;;", - "source_map_runtime": "427:3407:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;1113:11;379:5:9;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;1133:12:0;1113:33;;1156:5;:13;;;1178:10;;;;;;;;;;;569;1156:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1210:5;:13;;;1224:12;;;;;;;;;;;569:10;1210:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:5;:13;;;1271:5;;;;;;;;;;;569:10;1257:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1039:255;;:::o;220:20:9:-;;;;;;;;;;;;;:::o;409:167::-;379:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;525:1;505:22;;:8;:22;;;;501:69;;;551:8;543:5;;:16;;;;;;;;;;;;;;;;;;501:69;409:167;:::o;1765:264:0:-;379:5:9;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;1920:45:0;1938:9;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:6;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1957:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:1;1920:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:45::i;:::-;1975:47;1995:9;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:6;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2014:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2017:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:1;1975:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:47::i;:::-;1765:264;;;;;:::o;2879:953::-;3026:32;;:::i;:::-;3273:26;;:::i;:::-;3561:25;3026:237;;;;;;;;;3075:9;3085:1;3075:12;;;;;;;;;;;;;3026:237;;;;;;;;3110:9;3120:1;3110:12;;;;;;;;;;;;;3026:237;;;;;;;;3145:9;3155:1;3145:12;;;;;;;;;;;;;3026:237;;;;;;;;3185:9;3195:1;3185:12;;;;;;;;;;;;;3026:237;;;;;;;;3225:9;3235:1;3225:12;;;;;;;;;;;;;3026:237;;;;;;;;;3273:278;;;;;;;;;3316:6;3323:1;3316:9;;;;;;;;;;;;;3273:278;;;;3359:6;3366:1;3359:9;;;;;;;;;;;;;3273:278;;;;3402:6;3409:1;3402:9;;;;;;;;;;;;;3273:278;;;;3437:6;3444:1;3437:9;;;;;;;;;;;;;3273:278;;;;3472:6;3479:1;3472:9;;;;;;;;;;;;;3273:278;;;;3523:6;3530:1;3523:9;;;;;;;;;;;;;3273:278;;;;;3589:6;3596:1;3589:9;;;;;;;;;;;;;3561:37;;3732:8;;;;;;;;;;;:24;;;3757:14;3773:11;3786:20;3808:1;3810;3808:4;;;;;;;;;;;;;3814:1;3816;3814:4;;;;;;;;;;;;;3820:1;3822;3820:4;;;;;;;;;;;;;3732:93;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3732:93:0;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3732:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2879:953;;;;;;;;:::o;2035:838::-;2184:11;2198:6;2205:2;2198:10;;;;;;;;;;;;;2184:24;;2218:10;;;;;;;;;;;:23;;;2255:9;2265:1;2255:12;;;;;;;;;;;;;2308:6;2315:1;2308:9;;;;;;;;;;;;;2218:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:10;;;;;;;;;;;:16;;;2380:9;2390:1;2380:12;;;;;;;;;;;;;2433:6;2440:1;2433:9;;;;;;;;;;;;;2469;2479:1;2469:12;;;;;;;;;;;;;2523:6;2530:1;2523:9;;;;;;;;;;;;;2560:6;2567:1;2560:9;;;;;;;;;;;;;2594:6;2601:2;2594:10;;;;;;;;;;;;;2627:9;2637:1;2627:12;;;;;;;;;;;;;2661:1;2663;2661:4;;;;;;;;;;;;;2679:1;2681;2679:4;;;;;;;;;;;;;2697:1;2699;2697:4;;;;;;;;;;;;;2715:6;2350:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:10;;;;;;;;;;;:24;;;2779:9;2789:1;2779:12;;;;;;;;;;;;;2833:6;2840:1;2833:9;;;;;;;;;;;;;2741:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2035:838;;;;;;:::o;427:3407::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "Arbitrage.sol", - "EtherDelta/AccountLevels.sol", - "EtherDelta/EtherDelta.sol", - "previous/Ownable/Ownable_v1.sol", - "previous/SafeMath/SafeMath_v1.sol", - "previous/Token/Token_v1.sol", - "protocol/Exchange/Exchange.sol", - "protocol/TokenTransferProxy/TokenTransferProxy.sol", - "tokens/Token/Token.sol", - "utils/Ownable/Ownable.sol", - "utils/SafeMath/SafeMath.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/DummyToken.json b/packages/0x.js/test/artifacts/DummyToken.json deleted file mode 100644 index 8b429341a..000000000 --- a/packages/0x.js/test/artifacts/DummyToken.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "contract_name": "DummyToken", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x457cd1abe6333f2131eb9663c76a52857bc3e37606b3997b8c6683267b2049e3", - "source_tree_hash": "0x2f9492eca3d4b55758be98c05afd51d51310ed97769b69ae7d45366f038de653", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_value", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_target", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "setBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "name": "_name", - "type": "string" - }, - { - "name": "_symbol", - "type": "string" - }, - { - "name": "_decimals", - "type": "uint256" - }, - { - "name": "_totalSupply", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b60405162001200380380620012008339810160405280805182019190602001805182019190602001805190602001909190805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360049080519060200190620000a59291906200011a565b508260059080519060200190620000be9291906200011a565b508160068190555080600281905550806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050620001c9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015d57805160ff19168380011785556200018e565b828001600101855582156200018e579182015b828111156200018d57825182559160200191906001019062000170565b5b5090506200019d9190620001a1565b5090565b620001c691905b80821115620001c2576000816000905550600101620001a8565b5090565b90565b61102780620001d96000396000f3006060604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca578063095ea7b31461015857806318160ddd146101b257806323b872dd146101db578063313ce5671461025457806370a082311461027d5780638da5cb5b146102ca57806395d89b411461031f578063a0712d68146103ad578063a9059cbb146103d0578063dd62ed3e1461042a578063e30443bc14610496578063f2fde38b146104d8575b600080fd5b34156100d557600080fd5b6100dd610511565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011d578082015181840152602081019050610102565b50505050905090810190601f16801561014a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016357600080fd5b610198600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105af565b604051808215151515815260200191505060405180910390f35b34156101bd57600080fd5b6101c56106a1565b6040518082815260200191505060405180910390f35b34156101e657600080fd5b61023a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b604051808215151515815260200191505060405180910390f35b341561025f57600080fd5b6102676109c8565b6040518082815260200191505060405180910390f35b341561028857600080fd5b6102b4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109ce565b6040518082815260200191505060405180910390f35b34156102d557600080fd5b6102dd610a16565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032a57600080fd5b610332610a3c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610372578082015181840152602081019050610357565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b857600080fd5b6103ce6004808035906020019091905050610ada565b005b34156103db57600080fd5b610410600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b91565b604051808215151515815260200191505060405180910390f35b341561043557600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b6040518082815260200191505060405180910390f35b34156104a157600080fd5b6104d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610df8565b005b34156104e357600080fd5b61050f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eed565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107775750828110155b801561080157506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b151561080c57600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109575782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b68056bc75e2d631000008111151515610af257600080fd5b610b3a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc4565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b8860025482610fc4565b60028190555050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610c5f57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1515610c6a57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5657600080fd5b610e5f836109ce565b905080821015610e8957610e7e600254610e798385610fe2565b610fe2565b600281905550610ea5565b610e9e600254610e998484610fe2565b610fc4565b6002819055505b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610fc15780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000808284019050838110151515610fd857fe5b8091505092915050565b6000828211151515610ff057fe5b8183039050929150505600a165627a7a723058201d6cf34616ce150ab8d20d5cddf4c35caccd9a84e830cf07ed9bd0b1bd52e40d0029", - "runtime_bytecode": "0x6060604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100ca578063095ea7b31461015857806318160ddd146101b257806323b872dd146101db578063313ce5671461025457806370a082311461027d5780638da5cb5b146102ca57806395d89b411461031f578063a0712d68146103ad578063a9059cbb146103d0578063dd62ed3e1461042a578063e30443bc14610496578063f2fde38b146104d8575b600080fd5b34156100d557600080fd5b6100dd610511565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561011d578082015181840152602081019050610102565b50505050905090810190601f16801561014a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016357600080fd5b610198600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506105af565b604051808215151515815260200191505060405180910390f35b34156101bd57600080fd5b6101c56106a1565b6040518082815260200191505060405180910390f35b34156101e657600080fd5b61023a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106a7565b604051808215151515815260200191505060405180910390f35b341561025f57600080fd5b6102676109c8565b6040518082815260200191505060405180910390f35b341561028857600080fd5b6102b4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109ce565b6040518082815260200191505060405180910390f35b34156102d557600080fd5b6102dd610a16565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561032a57600080fd5b610332610a3c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610372578082015181840152602081019050610357565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103b857600080fd5b6103ce6004808035906020019091905050610ada565b005b34156103db57600080fd5b610410600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b91565b604051808215151515815260200191505060405180910390f35b341561043557600080fd5b610480600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b6040518082815260200191505060405180910390f35b34156104a157600080fd5b6104d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610df8565b005b34156104e357600080fd5b61050f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610eed565b005b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b505050505081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156107775750828110155b801561080157506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b151561080c57600080fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109575782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b60065481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad25780601f10610aa757610100808354040283529160200191610ad2565b820191906000526020600020905b815481529060010190602001808311610ab557829003601f168201915b505050505081565b68056bc75e2d631000008111151515610af257600080fd5b610b3a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc4565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b8860025482610fc4565b60028190555050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610c5f57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1515610c6a57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5657600080fd5b610e5f836109ce565b905080821015610e8957610e7e600254610e798385610fe2565b610fe2565b600281905550610ea5565b610e9e600254610e998484610fe2565b610fc4565b6002819055505b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f4957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610fc15780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000808284019050838110151515610fd857fe5b8091505092915050565b6000828211151515610ff057fe5b8183039050929150505600a165627a7a723058201d6cf34616ce150ab8d20d5cddf4c35caccd9a84e830cf07ed9bd0b1bd52e40d0029", - "updated_at": 1522263983736, - "source_map": "139:831:0:-;;;263:303;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:10:5;295:5;;:18;;;;;;;;;;;;;;;;;;417:5:0;410:4;:12;;;;;;;;;;;;:::i;:::-;;441:7;432:6;:16;;;;;;;;;;;;:::i;:::-;;469:9;458:8;:20;;;;502:12;488:11;:26;;;;547:12;524:8;:20;533:10;524:20;;;;;;;;;;;;;;;:35;;;;263:303;;;;139:831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "source_map_runtime": "139:831:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;186:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1091:498:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;236:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1073:130:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:20:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;210:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;342:225:1;;;;;;;;;;;;;;;;;;;;;;;;;;107:322:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1209:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:396:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:167:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;186:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;853:214:2:-;933:4;985:6;953:7;:19;961:10;953:19;;;;;;;;;;;;;;;:29;973:8;953:29;;;;;;;;;;;;;;;:38;;;;1022:8;1001:38;;1010:10;1001:38;;;1032:6;1001:38;;;;;;;;;;;;;;;;;;1056:4;1049:11;;853:214;;;;:::o;1472:23::-;;;;:::o;1091:498:4:-;1186:4;1206:14;1223:7;:14;1231:5;1223:14;;;;;;;;;;;;;;;:26;1238:10;1223:26;;;;;;;;;;;;;;;;1206:43;;1286:6;1267:8;:15;1276:5;1267:15;;;;;;;;;;;;;;;;:25;;:48;;;;;1309:6;1296:9;:19;;1267:48;:91;;;;;1345:8;:13;1354:3;1345:13;;;;;;;;;;;;;;;;1335:6;1319:8;:13;1328:3;1319:13;;;;;;;;;;;;;;;;:22;:39;;1267:91;1259:100;;;;;;;;1386:6;1369:8;:13;1378:3;1369:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1421:6;1402:8;:15;1411:5;1402:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;745:10;1441:9;:20;1437:87;;;1507:6;1477:7;:14;1485:5;1477:14;;;;;;;;;;;;;;;:26;1492:10;1477:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;1437:87;1549:3;1533:28;;1542:5;1533:28;;;1554:6;1533:28;;;;;;;;;;;;;;;;;;1578:4;1571:11;;1091:498;;;;;;:::o;236:20:0:-;;;;:::o;1073:130:2:-;1153:4;1180:8;:16;1189:6;1180:16;;;;;;;;;;;;;;;;1173:23;;1073:130;;;:::o;220:20:5:-;;;;;;;;;;;;;:::o;210::0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;342:225:1:-;416:21;406:6;:31;;398:40;;;;;;;;471:37;479:6;487:8;:20;496:10;487:20;;;;;;;;;;;;;;;;471:7;:37::i;:::-;448:8;:20;457:10;448:20;;;;;;;;;;;;;;;:60;;;;532:28;540:11;;553:6;532:7;:28::i;:::-;518:11;:42;;;;342:225;:::o;107:322:2:-;183:4;235:6;211:8;:20;220:10;211:20;;;;;;;;;;;;;;;;:30;;:73;;;;;271:8;:13;280:3;271:13;;;;;;;;;;;;;;;;261:6;245:8;:13;254:3;245:13;;;;;;;;;;;;;;;;:22;:39;;211:73;203:82;;;;;;;;319:6;295:8;:20;304:10;295:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;352:6;335:8;:13;344:3;335:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;389:3;368:33;;377:10;368:33;;;394:6;368:33;;;;;;;;;;;;;;;;;;418:4;411:11;;107:322;;;;:::o;1209:157::-;1307:4;1334:7;:15;1342:6;1334:15;;;;;;;;;;;;;;;:25;1350:8;1334:25;;;;;;;;;;;;;;;;1327:32;;1209:157;;;;:::o;572:396:0:-;669:16;379:5:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;688:18:0;698:7;688:9;:18::i;:::-;669:37;;729:11;720:6;:20;716:210;;;770:50;778:11;;791:28;799:11;812:6;791:7;:28::i;:::-;770:7;:50::i;:::-;756:11;:64;;;;716:210;;;865:50;873:11;;886:28;894:6;902:11;886:7;:28::i;:::-;865:7;:50::i;:::-;851:11;:64;;;;716:210;955:6;935:8;:17;944:7;935:17;;;;;;;;;;;;;;;:26;;;;572:396;;;:::o;409:167:5:-;379:5;;;;;;;;;;;365:19;;:10;:19;;;357:28;;;;;;;;525:1;505:22;;:8;:22;;;;501:69;;;551:8;543:5;;:16;;;;;;;;;;;;;;;;;;501:69;409:167;:::o;536:166:6:-;616:7;639:6;652:1;648;:5;639:14;;675:1;670;:6;;663:14;;;;;;694:1;687:8;;536:166;;;;;:::o;384:146::-;464:7;499:1;494;:6;;487:14;;;;;;522:1;518;:5;511:12;;384:146;;;;:::o", - "sources": [ - "DummyToken.sol", - "Mintable/Mintable.sol", - "tokens/ERC20Token/ERC20Token.sol", - "tokens/Token/Token.sol", - "tokens/UnlimitedAllowanceToken/UnlimitedAllowanceToken.sol", - "utils/Ownable/Ownable.sol", - "utils/SafeMath/SafeMath.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/EtherDelta.json b/packages/0x.js/test/artifacts/EtherDelta.json deleted file mode 100644 index 3355cd846..000000000 --- a/packages/0x.js/test/artifacts/EtherDelta.json +++ /dev/null @@ -1,876 +0,0 @@ -{ - "contract_name": "EtherDelta", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x59958cfb8ac22a16c3eda18ef389dd9354143b2a64b8e4c8c298c4cd9c38673e", - "source_tree_hash": "0x00c7e1f07a9b18919e3f2989e837a31bd5089a3f877f8facd320d60b919c6023", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "user", - "type": "address" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "trade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - } - ], - "name": "order", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - } - ], - "name": "orderFills", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "cancelOrder", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "amount", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "depositToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "user", - "type": "address" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "amountFilled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "address" - } - ], - "name": "tokens", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "feeMake_", - "type": "uint256" - } - ], - "name": "changeFeeMake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeMake", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "feeRebate_", - "type": "uint256" - } - ], - "name": "changeFeeRebate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeAccount", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "user", - "type": "address" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - }, - { - "name": "amount", - "type": "uint256" - }, - { - "name": "sender", - "type": "address" - } - ], - "name": "testTrade", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "feeAccount_", - "type": "address" - } - ], - "name": "changeFeeAccount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRebate", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "feeTake_", - "type": "uint256" - } - ], - "name": "changeFeeTake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "admin_", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "withdrawToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - } - ], - "name": "orders", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeTake", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "accountLevelsAddr_", - "type": "address" - } - ], - "name": "changeAccountLevelsAddr", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "accountLevelsAddr", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "user", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "tokenGet", - "type": "address" - }, - { - "name": "amountGet", - "type": "uint256" - }, - { - "name": "tokenGive", - "type": "address" - }, - { - "name": "amountGive", - "type": "uint256" - }, - { - "name": "expires", - "type": "uint256" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "user", - "type": "address" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "availableVolume", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "admin_", - "type": "address" - }, - { - "name": "feeAccount_", - "type": "address" - }, - { - "name": "accountLevelsAddr_", - "type": "address" - }, - { - "name": "feeMake_", - "type": "uint256" - }, - { - "name": "feeTake_", - "type": "uint256" - }, - { - "name": "feeRebate_", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": false, - "stateMutability": "nonpayable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "tokenGet", - "type": "address" - }, - { - "indexed": false, - "name": "amountGet", - "type": "uint256" - }, - { - "indexed": false, - "name": "tokenGive", - "type": "address" - }, - { - "indexed": false, - "name": "amountGive", - "type": "uint256" - }, - { - "indexed": false, - "name": "expires", - "type": "uint256" - }, - { - "indexed": false, - "name": "nonce", - "type": "uint256" - }, - { - "indexed": false, - "name": "user", - "type": "address" - } - ], - "name": "Order", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "tokenGet", - "type": "address" - }, - { - "indexed": false, - "name": "amountGet", - "type": "uint256" - }, - { - "indexed": false, - "name": "tokenGive", - "type": "address" - }, - { - "indexed": false, - "name": "amountGive", - "type": "uint256" - }, - { - "indexed": false, - "name": "expires", - "type": "uint256" - }, - { - "indexed": false, - "name": "nonce", - "type": "uint256" - }, - { - "indexed": false, - "name": "user", - "type": "address" - }, - { - "indexed": false, - "name": "v", - "type": "uint8" - }, - { - "indexed": false, - "name": "r", - "type": "bytes32" - }, - { - "indexed": false, - "name": "s", - "type": "bytes32" - } - ], - "name": "Cancel", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "tokenGet", - "type": "address" - }, - { - "indexed": false, - "name": "amountGet", - "type": "uint256" - }, - { - "indexed": false, - "name": "tokenGive", - "type": "address" - }, - { - "indexed": false, - "name": "amountGive", - "type": "uint256" - }, - { - "indexed": false, - "name": "get", - "type": "address" - }, - { - "indexed": false, - "name": "give", - "type": "address" - } - ], - "name": "Trade", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "user", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "name": "balance", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "user", - "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "name": "balance", - "type": "uint256" - } - ], - "name": "Withdraw", - "type": "event" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b60405160c08061356283398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050856000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600381905550816004819055508060058190555050505050505061341e806101446000396000f300606060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a19b14a146101645780630b9276661461022e57806319774d43146102aa578063278b8c0e146103045780632e1a7d4d146103a6578063338b5dea146103c957806346be96c31461040b578063508493bc146104e057806354d03b5c1461054c578063577863941461056f5780635e1d7ae41461059857806365e17c9d146105bb5780636c86888b1461061057806371ffcb1614610711578063731c2f811461074a5780638823a9c0146107735780638f283970146107965780639e281a98146107cf578063bb5f462914610811578063c281309e1461086f578063d0e30db014610898578063e8f6bc2e146108a2578063f3412942146108db578063f7888aec14610930578063f851a4401461099c578063fb6e155f146109f1575b341561015f57600080fd5b600080fd5b341561016f57600080fd5b61022c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091908035906020019091905050610ac6565b005b341561023957600080fd5b6102a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050610fb1565b005b34156102b557600080fd5b6102ee600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061122d565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b6103a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611252565b005b34156103b157600080fd5b6103c76004808035906020019091905050611650565b005b34156103d457600080fd5b610409600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118cf565b005b341561041657600080fd5b6104ca600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611c18565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b610536600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d9a565b6040518082815260200191505060405180910390f35b341561055757600080fd5b61056d6004808035906020019091905050611dbf565b005b341561057a57600080fd5b610582611e33565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105b96004808035906020019091905050611e39565b005b34156105c657600080fd5b6105ce611eb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b6106f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611edf565b604051808215151515815260200191505060405180910390f35b341561071c57600080fd5b610748600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fa2565b005b341561075557600080fd5b61075d612041565b6040518082815260200191505060405180910390f35b341561077e57600080fd5b6107946004808035906020019091905050612047565b005b34156107a157600080fd5b6107cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c7565b005b34156107da57600080fd5b61080f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612165565b005b341561081c57600080fd5b610855600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612503565b604051808215151515815260200191505060405180910390f35b341561087a57600080fd5b610882612532565b6040518082815260200191505060405180910390f35b6108a0612538565b005b34156108ad57600080fd5b6108d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061270c565b005b34156108e657600080fd5b6108ee6127ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093b57600080fd5b610986600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d1565b6040518082815260200191505060405180910390f35b34156109a757600080fd5b6109af612858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fc57600080fd5b610ab0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061287d565b6040518082815260200191505060405180910390f35b60006002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515610bd257600080fd5b5050604051805190509050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680610d3757508573ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515610d1657600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015610d435750874311155b8015610db057508a610dad600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000205484612c29565b11155b1515610dbb57600080fd5b610dc98c8c8c8c8a87612c47565b610e2b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000205483612c29565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e868e02811515610eb857fe5b048a33604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b6000600230888888888888604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af115156110bd57600080fd5b50506040518051905090506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8587878787878733604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a150505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b60006002308b8b8b8b8b8b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561135e57600080fd5b5050604051805190509050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806114c357503373ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115156114a257600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b15156114ce57600080fd5b88600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b08a8a8a8a8a8a338b8b8b604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019a505050505050505050505060405180910390a150505050505050505050565b80600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116c357600080fd5b611733600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af19250505015156117d457600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56760003383600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a150565b60008273ffffffffffffffffffffffffffffffffffffffff1614156118f357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156119c957600080fd5b5af115156119d657600080fd5b5050506040518051905015156119eb57600080fd5b611a71600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612c29565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b6000806002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515611d2557600080fd5b5050604051805190509050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008260001916600019168152602001908152602001600020549150509a9950505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1a57600080fd5b600354811115611e2957600080fd5b8060038190555050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e9457600080fd5b600554811080611ea5575060045481115b15611eaf57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611f7e575082611f7b8e8e8e8e8e8e8e8e8e8e61287d565b10155b1515611f8d5760009050611f92565b600190505b9c9b505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a257600080fd5b6004548111806120b3575060055481105b156120bd57600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212257600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008273ffffffffffffffffffffffffffffffffffffffff16141561218957600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561221257600080fd5b612298600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156123ba57600080fd5b5af115156123c757600080fd5b5050506040518051905015156123dc57600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60045481565b6125a8600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612c29565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d760003334600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806002308f8f8f8f8f8f604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561298d57600080fd5b5050604051805190509250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff1680612af257508773ffffffffffffffffffffffffffffffffffffffff1660018460405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515612ad157600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015612afe5750894311155b1515612b0d5760009350612c18565b612b6f8d600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020546133a6565b91508a612bf8600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6133bf565b811515612c0157fe5b04905080821015612c1457819350612c18565b8093505b5050509a9950505050505050505050565b6000808284019050838110151515612c3d57fe5b8091505092915050565b600080600080670de0b6b3a7640000612c62866003546133bf565b811515612c6b57fe5b049350670de0b6b3a7640000612c83866004546133bf565b811515612c8c57fe5b049250600091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612de357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbd0519876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612d9157600080fd5b5af11515612d9e57600080fd5b5050506040518051905090506001811415612dd557670de0b6b3a7640000612dc8866005546133bf565b811515612dd157fe5b0491505b6002811415612de2578291505b5b612e72600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e6d8786612c29565b6133a6565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8a600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f85612f7f8886612c29565b876133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c4600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bf6130b98787612c29565b856133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613200600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a6131f18a896133bf565b8115156131fa57fe5b046133a6565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331a600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a61330b8a896133bf565b81151561331457fe5b04612c29565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050505050565b60008282111515156133b457fe5b818303905092915050565b600080828402905060008414806133e057508284828115156133dd57fe5b04145b15156133e857fe5b80915050929150505600a165627a7a723058203c9c2c2b69e0aacdb48368e242a9d53c06d54a4a9ab509c4269b1f898b2d364b0029", - "runtime_bytecode": "0x606060405260043610610154576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a19b14a146101645780630b9276661461022e57806319774d43146102aa578063278b8c0e146103045780632e1a7d4d146103a6578063338b5dea146103c957806346be96c31461040b578063508493bc146104e057806354d03b5c1461054c578063577863941461056f5780635e1d7ae41461059857806365e17c9d146105bb5780636c86888b1461061057806371ffcb1614610711578063731c2f811461074a5780638823a9c0146107735780638f283970146107965780639e281a98146107cf578063bb5f462914610811578063c281309e1461086f578063d0e30db014610898578063e8f6bc2e146108a2578063f3412942146108db578063f7888aec14610930578063f851a4401461099c578063fb6e155f146109f1575b341561015f57600080fd5b600080fd5b341561016f57600080fd5b61022c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091908035906020019091905050610ac6565b005b341561023957600080fd5b6102a8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091908035906020019091905050610fb1565b005b34156102b557600080fd5b6102ee600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505061122d565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b6103a4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611252565b005b34156103b157600080fd5b6103c76004808035906020019091905050611650565b005b34156103d457600080fd5b610409600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118cf565b005b341561041657600080fd5b6104ca600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611c18565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b610536600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d9a565b6040518082815260200191505060405180910390f35b341561055757600080fd5b61056d6004808035906020019091905050611dbf565b005b341561057a57600080fd5b610582611e33565b6040518082815260200191505060405180910390f35b34156105a357600080fd5b6105b96004808035906020019091905050611e39565b005b34156105c657600080fd5b6105ce611eb9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561061b57600080fd5b6106f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611edf565b604051808215151515815260200191505060405180910390f35b341561071c57600080fd5b610748600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fa2565b005b341561075557600080fd5b61075d612041565b6040518082815260200191505060405180910390f35b341561077e57600080fd5b6107946004808035906020019091905050612047565b005b34156107a157600080fd5b6107cd600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120c7565b005b34156107da57600080fd5b61080f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612165565b005b341561081c57600080fd5b610855600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050612503565b604051808215151515815260200191505060405180910390f35b341561087a57600080fd5b610882612532565b6040518082815260200191505060405180910390f35b6108a0612538565b005b34156108ad57600080fd5b6108d9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061270c565b005b34156108e657600080fd5b6108ee6127ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561093b57600080fd5b610986600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506127d1565b6040518082815260200191505060405180910390f35b34156109a757600080fd5b6109af612858565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fc57600080fd5b610ab0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190505061287d565b6040518082815260200191505060405180910390f35b60006002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515610bd257600080fd5b5050604051805190509050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff1680610d3757508573ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515610d1657600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015610d435750874311155b8015610db057508a610dad600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084600019166000191681526020019081526020016000205484612c29565b11155b1515610dbb57600080fd5b610dc98c8c8c8c8a87612c47565b610e2b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083600019166000191681526020019081526020016000205483612c29565b600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f6effdda786735d5033bfad5f53e5131abcced9e52be6c507b62d639685fbed6d8c838c8e868e02811515610eb857fe5b048a33604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390a1505050505050505050505050565b6000600230888888888888604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af115156110bd57600080fd5b50506040518051905090506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3f7f2eda73683c21a15f9435af1028c93185b5f1fa38270762dc32be606b3e8587878787878733604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200197505050505050505060405180910390a150505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b60006002308b8b8b8b8b8b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561135e57600080fd5b5050604051805190509050600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff16806114c357503373ffffffffffffffffffffffffffffffffffffffff1660018260405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115156114a257600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b15156114ce57600080fd5b88600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360001916600019168152602001908152602001600020819055507f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b08a8a8a8a8a8a338b8b8b604051808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018881526020018781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff168152602001836000191660001916815260200182600019166000191681526020019a505050505050505050505060405180910390a150505050505050505050565b80600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116c357600080fd5b611733600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af19250505015156117d457600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb56760003383600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a150565b60008273ffffffffffffffffffffffffffffffffffffffff1614156118f357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15156119c957600080fd5b5af115156119d657600080fd5b5050506040518051905015156119eb57600080fd5b611a71600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482612c29565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b6000806002308d8d8d8d8d8d604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af11515611d2557600080fd5b5050604051805190509050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008260001916600019168152602001908152602001600020549150509a9950505050505050505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e1a57600080fd5b600354811115611e2957600080fd5b8060038190555050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e9457600080fd5b600554811080611ea5575060045481115b15611eaf57600080fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611f7e575082611f7b8e8e8e8e8e8e8e8e8e8e61287d565b10155b1515611f8d5760009050611f92565b600190505b9c9b505050505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffd57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a257600080fd5b6004548111806120b3575060055481105b156120bd57600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212257600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008273ffffffffffffffffffffffffffffffffffffffff16141561218957600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561221257600080fd5b612298600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156123ba57600080fd5b5af115156123c757600080fd5b5050506040518051905015156123dc57600080fd5b7ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567823383600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a15050565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60045481565b6125a8600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205434612c29565b600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d760003334600660008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561276757600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806002308f8f8f8f8f8f604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019750505050505050506020604051808303816000865af1151561298d57600080fd5b5050604051805190509250600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff1680612af257508773ffffffffffffffffffffffffffffffffffffffff1660018460405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020898989604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11515612ad157600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff16145b8015612afe5750894311155b1515612b0d5760009350612c18565b612b6f8d600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660001916600019168152602001908152602001600020546133a6565b91508a612bf8600660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548f6133bf565b811515612c0157fe5b04905080821015612c1457819350612c18565b8093505b5050509a9950505050505050505050565b6000808284019050838110151515612c3d57fe5b8091505092915050565b600080600080670de0b6b3a7640000612c62866003546133bf565b811515612c6b57fe5b049350670de0b6b3a7640000612c83866004546133bf565b811515612c8c57fe5b049250600091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612de357600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cbd0519876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515612d9157600080fd5b5af11515612d9e57600080fd5b5050506040518051905090506001811415612dd557670de0b6b3a7640000612dc8866005546133bf565b811515612dd157fe5b0491505b6002811415612de2578291505b5b612e72600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e6d8786612c29565b6133a6565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612f8a600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f85612f7f8886612c29565b876133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130c4600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130bf6130b98787612c29565b856133a6565b612c29565b600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613200600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a6131f18a896133bf565b8115156131fa57fe5b046133a6565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061331a600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a61330b8a896133bf565b81151561331457fe5b04612c29565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050505050565b60008282111515156133b457fe5b818303905092915050565b600080828402905060008414806133e057508284828115156133dd57fe5b04145b15156133e857fe5b80915050929150505600a165627a7a723058203c9c2c2b69e0aacdb48368e242a9d53c06d54a4a9ab509c4269b1f898b2d364b0029", - "updated_at": 1522264006874, - "source_map": "196:8564:1:-;;;1660:333;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1810:6;1802:5;;:14;;;;;;;;;;;;;;;;;;1839:11;1826:10;;:24;;;;;;;;;;;;;;;;;;1880:18;1860:17;;:38;;;;;;;;;;;;;;;;;;1918:8;1908:7;:18;;;;1946:8;1936:7;:18;;;;1976:10;1964:9;:22;;;;1660:333;;;;;;196:8564;;;;;;", - "source_map_runtime": "196:8564:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:5;;;4729:810;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;935:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:528;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:278;;;;;;;;;;;;;;;;;;;;;;;;;;3447:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7895:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;594:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2448:152;;;;;;;;;;;;;;;;;;;;;;;;;;430:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2788:188;;;;;;;;;;;;;;;;;;;;;;;;;;280:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6729:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2314:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:176;;;;;;;;;;;;;;;;;;;;;;;;;;2038:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:357;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;742:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;484:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:175;;;;;;2152:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;348:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4259:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;234:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7178:711;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:810;4947:12;4962:72;4969:4;4975:8;4985:9;4996;5007:10;5019:7;5028:5;4962:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4947:87;;5064:6;:12;5071:4;5064:12;;;;;;;;;;;;;;;:18;5077:4;5064:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;;;;5153:4;5086:71;;:63;5137:4;5096:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5143:1;5145;5147;5086:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;5064:93;5063:134;;;;;5190:7;5174:12;:23;;5063:134;:202;;;;;5256:9;5213:39;5221:10;:16;5232:4;5221:16;;;;;;;;;;;;;;;:22;5238:4;5221:22;;;;;;;;;;;;;;;;;;5245:6;5213:7;:39::i;:::-;:52;;5063:202;5048:227;5044:238;;;5277:5;;;5044:238;5292:71;5306:8;5316:9;5327;5338:10;5350:4;5356:6;5292:13;:71::i;:::-;5398:39;5406:10;:16;5417:4;5406:16;;;;;;;;;;;;;;;:22;5423:4;5406:22;;;;;;;;;;;;;;;;;;5430:6;5398:7;:39::i;:::-;5373:10;:16;5384:4;5373:16;;;;;;;;;;;;;;;:22;5390:4;5373:22;;;;;;;;;;;;;;;;;:64;;;;5447:85;5453:8;5463:6;5471:9;5504;5495:6;5482:10;:19;:31;;;;;;;;5515:4;5521:10;5447:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:810;;;;;;;;;;;;:::o;4380:343::-;4501:12;4516:72;4523:4;4529:8;4539:9;4550;4561:10;4573:7;4582:5;4516:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:87;;4625:4;4598:6;:18;4605:10;4598:18;;;;;;;;;;;;;;;:24;4617:4;4598:24;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;4639:77;4645:8;4655:9;4666;4677:10;4689:7;4698:5;4705:10;4639:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4380:343;;;;;;;:::o;935:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8230:528::-;8388:12;8403:72;8410:4;8416:8;8426:9;8437;8448:10;8460:7;8469:5;8403:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8388:87;;8491:6;:18;8498:10;8491:18;;;;;;;;;;;;;;;:24;8510:4;8491:24;;;;;;;;;;;;;;;;;;;;;;;;;;;:105;;;;8586:10;8519:77;;:63;8570:4;8529:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8576:1;8578;8580;8519:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:77;;;8491:105;8489:108;8485:119;;;8599:5;;;8485:119;8645:9;8614:10;:22;8625:10;8614:22;;;;;;;;;;;;;;;:28;8637:4;8614:28;;;;;;;;;;;;;;;;;:40;;;;8664:87;8671:8;8681:9;8692;8703:10;8715:7;8724:5;8731:10;8743:1;8746;8749;8664:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8230:528;;;;;;;;;;:::o;3163:278::-;3232:6;3208;:9;3215:1;3208:9;;;;;;;;;;;;;:21;3218:10;3208:21;;;;;;;;;;;;;;;;:30;3204:41;;;3240:5;;;3204:41;3279:38;3287:6;:9;3294:1;3287:9;;;;;;;;;;;;;:21;3297:10;3287:21;;;;;;;;;;;;;;;;3310:6;3279:7;:38::i;:::-;3255:6;:9;3262:1;3255:9;;;;;;;;;;;;;:21;3265:10;3255:21;;;;;;;;;;;;;;;:62;;;;3332:10;:15;;3354:6;3332:31;;;;;;;;;;;;;;;;;3331:32;3327:43;;;3365:5;;;3327:43;3380:54;3389:1;3392:10;3404:6;3412;:9;3419:1;3412:9;;;;;;;;;;;;;:21;3422:10;3412:21;;;;;;;;;;;;;;;;3380:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3163:278;:::o;3447:443::-;3651:1;3644:5;:8;;;3640:19;;;3654:5;;;3640:19;3680:5;3674:25;;;3700:10;3712:4;3718:6;3674:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3673:52;3669:63;;;3727:5;;;3669:63;3770:42;3778:6;:13;3785:5;3778:13;;;;;;;;;;;;;;;:25;3792:10;3778:25;;;;;;;;;;;;;;;;3805:6;3770:7;:42::i;:::-;3742:6;:13;3749:5;3742:13;;;;;;;;;;;;;;;:25;3756:10;3742:25;;;;;;;;;;;;;;;:70;;;;3822:61;3830:5;3837:10;3849:6;3857;:13;3864:5;3857:13;;;;;;;;;;;;;;;:25;3871:10;3857:25;;;;;;;;;;;;;;;;3822:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3447:443;;:::o;7895:329::-;8075:4;8091:12;8106:72;8113:4;8119:8;8129:9;8140;8151:10;8163:7;8172:5;8106:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8091:87;;8195:10;:16;8206:4;8195:16;;;;;;;;;;;;;;;:22;8212:4;8195:22;;;;;;;;;;;;;;;;;;8188:29;;7895:329;;;;;;;;;;;;;:::o;594:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2448:152::-;2514:5;;;;;;;;;;;2500:19;;:10;:19;;;;2496:30;;;2521:5;;;2496:30;2551:7;;2540:8;:18;2536:29;;;2560:5;;;2536:29;2585:8;2575:7;:18;;;;2448:152;:::o;430:19::-;;;;:::o;2788:188::-;2858:5;;;;;;;;;;;2844:19;;:10;:19;;;;2840:30;;;2865:5;;;2840:30;2897:9;;2884:10;:22;:46;;;;2923:7;;2910:10;:20;2884:46;2880:57;;;2932:5;;;2880:57;2959:10;2947:9;:22;;;;2788:188;:::o;280:25::-;;;;;;;;;;;;;:::o;6729:443::-;6935:4;6998:6;6970;:16;6977:8;6970:16;;;;;;;;;;;;;;;:24;6987:6;6970:24;;;;;;;;;;;;;;;;:34;;:150;;;;;7114:6;7020:90;7036:8;7046:9;7057;7068:10;7080:7;7089:5;7096:4;7102:1;7105;7108;7020:15;:90::i;:::-;:100;;6970:150;6955:175;6951:193;;;7139:5;7132:12;;;;6951:193;7161:4;7154:11;;6729:443;;;;;;;;;;;;;;;:::o;2314:128::-;2389:5;;;;;;;;;;;2375:19;;:10;:19;;;;2371:30;;;2396:5;;;2371:30;2424:11;2411:10;;:24;;;;;;;;;;;;;;;;;;2314:128;:::o;538:21::-;;;;:::o;2606:176::-;2672:5;;;;;;;;;;;2658:19;;:10;:19;;;;2654:30;;;2679:5;;;2654:30;2709:7;;2698:8;:18;:42;;;;2731:9;;2720:8;:20;2698:42;2694:53;;;2742:5;;;2694:53;2767:8;2757:7;:18;;;;2606:176;:::o;2038:108::-;2103:5;;;;;;;;;;;2089:19;;:10;:19;;;;2085:30;;;2110:5;;;2085:30;2133:6;2125:5;;:14;;;;;;;;;;;;;;;;;;2038:108;:::o;3896:357::-;3968:1;3961:5;:8;;;3957:19;;;3971:5;;;3957:19;4018:6;3990;:13;3997:5;3990:13;;;;;;;;;;;;;;;:25;4004:10;3990:25;;;;;;;;;;;;;;;;:34;3986:45;;;4026:5;;;3986:45;4069:42;4077:6;:13;4084:5;4077:13;;;;;;;;;;;;;;;:25;4091:10;4077:25;;;;;;;;;;;;;;;;4104:6;4069:7;:42::i;:::-;4041:6;:13;4048:5;4041:13;;;;;;;;;;;;;;;:25;4055:10;4041:25;;;;;;;;;;;;;;;:70;;;;4132:5;4126:21;;;4148:10;4160:6;4126:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4125:42;4121:53;;;4169:5;;;4121:53;4184:62;4193:5;4200:10;4212:6;4220;:13;4227:5;4220:13;;;;;;;;;;;;;;;:25;4234:10;4220:25;;;;;;;;;;;;;;;;4184:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3896:357;;:::o;742:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;484:19::-;;;;:::o;2982:175::-;3043:41;3051:6;:9;3058:1;3051:9;;;;;;;;;;;;;:21;3061:10;3051:21;;;;;;;;;;;;;;;;3074:9;3043:7;:41::i;:::-;3019:6;:9;3026:1;3019:9;;;;;;;;;;;;;:21;3029:10;3019:21;;;;;;;;;;;;;;;:65;;;;3094:56;3102:1;3105:10;3117:9;3128:6;:9;3135:1;3128:9;;;;;;;;;;;;;:21;3138:10;3128:21;;;;;;;;;;;;;;;;3094:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2982:175::o;2152:156::-;2241:5;;;;;;;;;;;2227:19;;:10;:19;;;;2223:30;;;2248:5;;;2223:30;2283:18;2263:17;;:38;;;;;;;;;;;;;;;;;;2152:156;:::o;348:32::-;;;;;;;;;;;;;:::o;4259:115::-;4325:4;4348:6;:13;4355:5;4348:13;;;;;;;;;;;;;;;:19;4362:4;4348:19;;;;;;;;;;;;;;;;4341:26;;4259:115;;;;:::o;234:20::-;;;;;;;;;;;;;:::o;7178:711::-;7361:4;7377:12;7657:15;7727;7392:72;7399:4;7405:8;7415:9;7426;7437:10;7449:7;7458:5;7392:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7377:87;;7494:6;:12;7501:4;7494:12;;;;;;;;;;;;;;;:18;7507:4;7494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:93;;;;7583:4;7516:71;;:63;7567:4;7526:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7573:1;7575;7577;7516:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;7494:93;7493:134;;;;;7620:7;7604:12;:23;;7493:134;7478:159;7474:173;;;7646:1;7639:8;;;;7474:173;7675:42;7683:9;7694:10;:16;7705:4;7694:16;;;;;;;;;;;;;;;:22;7711:4;7694:22;;;;;;;;;;;;;;;;;;7675:7;:42::i;:::-;7657:60;;7791:10;7745:43;7753:6;:17;7760:9;7753:17;;;;;;;;;;;;;;;:23;7771:4;7753:23;;;;;;;;;;;;;;;;7778:9;7745:7;:43::i;:::-;:56;;;;;;;;7727:74;;7826:10;7815;:21;7811:44;;;7845:10;7838:17;;;;7811:44;7872:10;7865:17;;7178:711;;;;;;;;;;;;;;;;:::o;536:166:3:-;616:7;639:6;652:1;648;:5;639:14;;675:1;670;:6;;663:14;;;;;;694:1;687:8;;536:166;;;;;:::o;5545:1178:1:-;5683:16;5748;5813:18;5889:17;5730:7;5702:24;5710:6;5718:7;;5702;:24::i;:::-;:36;;;;;;;;5683:55;;5795:7;5767:24;5775:6;5783:7;;5767;:24::i;:::-;:36;;;;;;;;5748:55;;5834:1;5813:22;;5870:3;5849:17;;;;;;;;;;;:24;;;;5845:277;;;5923:17;;;;;;;;;;;5909:45;;;5955:4;5909:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5889:71;;5992:1;5978:12;:15;5974:75;;;6041:7;6011:26;6019:6;6027:9;;6011:7;:26::i;:::-;:38;;;;;;;;5995:54;;5974:75;6081:1;6067:12;:15;6063:48;;;6100:11;6084:27;;6063:48;5845:277;6162:67;6170:6;:16;6177:8;6170:16;;;;;;;;;;;;;;;:28;6187:10;6170:28;;;;;;;;;;;;;;;;6200;6208:6;6216:11;6200:7;:28::i;:::-;6162:7;:67::i;:::-;6131:6;:16;6138:8;6131:16;;;;;;;;;;;;;;;:28;6148:10;6131:28;;;;;;;;;;;;;;;:98;;;;6264:85;6272:6;:16;6279:8;6272:16;;;;;;;;;;;;;;;:22;6289:4;6272:22;;;;;;;;;;;;;;;;6296:52;6304:30;6312:6;6320:13;6304:7;:30::i;:::-;6336:11;6296:7;:52::i;:::-;6264:7;:85::i;:::-;6239:6;:16;6246:8;6239:16;;;;;;;;;;;;;;;:22;6256:4;6239:22;;;;;;;;;;;;;;;:110;;;;6390:96;6398:6;:16;6405:8;6398:16;;;;;;;;;;;;;;;:28;6415:10;;;;;;;;;;;6398:28;;;;;;;;;;;;;;;;6428:57;6436:33;6444:11;6457;6436:7;:33::i;:::-;6471:13;6428:7;:57::i;:::-;6390:7;:96::i;:::-;6359:6;:16;6366:8;6359:16;;;;;;;;;;;;;;;:28;6376:10;;;;;;;;;;;6359:28;;;;;;;;;;;;;;;:127;;;;6522:73;6530:6;:17;6537:9;6530:17;;;;;;;;;;;;;;;:23;6548:4;6530:23;;;;;;;;;;;;;;;;6585:9;6555:27;6563:10;6575:6;6555:7;:27::i;:::-;:39;;;;;;;;6522:7;:73::i;:::-;6496:6;:17;6503:9;6496:17;;;;;;;;;;;;;;;:23;6514:4;6496:23;;;;;;;;;;;;;;;:99;;;;6637:79;6645:6;:17;6652:9;6645:17;;;;;;;;;;;;;;;:29;6663:10;6645:29;;;;;;;;;;;;;;;;6706:9;6676:27;6684:10;6696:6;6676:7;:27::i;:::-;:39;;;;;;;;6637:7;:79::i;:::-;6605:6;:17;6612:9;6605:17;;;;;;;;;;;;;;;:29;6623:10;6605:29;;;;;;;;;;;;;;;:111;;;;5545:1178;;;;;;;;;;:::o;384:146:3:-;464:7;499:1;494;:6;;487:14;;;;;;522:1;518;:5;511:12;;384:146;;;;:::o;50:180::-;130:7;153:6;166:1;162;:5;153:14;;189:1;184;:6;:20;;;;203:1;198;194;:5;;;;;;;;:10;184:20;177:28;;;;;;222:1;215:8;;50:180;;;;;:::o", - "sources": [ - "AccountLevels.sol", - "EtherDelta.sol", - "tokens/Token/Token.sol", - "utils/SafeMath/SafeMath.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Exchange.json b/packages/0x.js/test/artifacts/Exchange.json deleted file mode 100644 index 8e01d7c13..000000000 --- a/packages/0x.js/test/artifacts/Exchange.json +++ /dev/null @@ -1,634 +0,0 @@ -{ - "contract_name": "Exchange", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x50d9d5de7ea3f16b7e655c3ed280d1d7ff50422b4fc42ae609422eab5028d2ca", - "source_tree_hash": "0xed7525b123061d69ae37377fac4a2f71e09eaa0e91a9bcf12359a60cd61aadac", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "isRoundingError", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "filled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "cancelled", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "fillOrdersUpTo", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "cancelTakerTokenAmount", - "type": "uint256" - } - ], - "name": "cancelOrder", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ZRX_TOKEN_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrKillOrders", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrKillOrder", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "getUnavailableTakerTokenAmount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "signer", - "type": "address" - }, - { - "name": "hash", - "type": "bytes32" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "numerator", - "type": "uint256" - }, - { - "name": "denominator", - "type": "uint256" - }, - { - "name": "target", - "type": "uint256" - } - ], - "name": "getPartialAmount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "TOKEN_TRANSFER_PROXY_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "fillTakerTokenAmounts", - "type": "uint256[]" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "batchFillOrders", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5][]" - }, - { - "name": "orderValues", - "type": "uint256[6][]" - }, - { - "name": "cancelTakerTokenAmounts", - "type": "uint256[]" - } - ], - "name": "batchCancelOrders", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - }, - { - "name": "fillTakerTokenAmount", - "type": "uint256" - }, - { - "name": "shouldThrowOnInsufficientBalanceOrAllowance", - "type": "bool" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "fillOrder", - "outputs": [ - { - "name": "filledTakerTokenAmount", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "orderAddresses", - "type": "address[5]" - }, - { - "name": "orderValues", - "type": "uint256[6]" - } - ], - "name": "getOrderHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "EXTERNAL_QUERY_GAS_LIMIT", - "outputs": [ - { - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_zrxToken", - "type": "address" - }, - { - "name": "_tokenTransferProxy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": false, - "name": "taker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "filledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "filledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidMakerFee", - "type": "uint256" - }, - { - "indexed": false, - "name": "paidTakerFee", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogFill", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "maker", - "type": "address" - }, - { - "indexed": true, - "name": "feeRecipient", - "type": "address" - }, - { - "indexed": false, - "name": "makerToken", - "type": "address" - }, - { - "indexed": false, - "name": "takerToken", - "type": "address" - }, - { - "indexed": false, - "name": "cancelledMakerTokenAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "cancelledTakerTokenAmount", - "type": "uint256" - }, - { - "indexed": true, - "name": "tokens", - "type": "bytes32" - }, - { - "indexed": false, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogCancel", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "errorId", - "type": "uint8" - }, - { - "indexed": true, - "name": "orderHash", - "type": "bytes32" - } - ], - "name": "LogError", - "type": "event" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b604051604080612c2583398101604052808051906020019091908051906020019091905050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050612b5f806100c66000396000f3006060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee14610101578063288cdc911461014e5780632ac1262214610189578063363349be146101c4578063394c21e7146103be5780633b30ba591461044d5780634f150787146104a2578063741bcc93146106b45780637e9abb50146107555780638163681e1461079057806398024a8b14610814578063add1cbc51461085d578063b7b2c7d6146108b2578063baa0181d14610acf578063bc61394a14610c21578063cfc4d0ec14610ce1578063f06bbf7514610d6f578063ffa1ad7414610da0575b600080fd5b341561010c57600080fd5b6101346004808035906020019091908035906020019091908035906020019091905050610e2e565b604051808215151515815260200191505060405180910390f35b341561015957600080fd5b610173600480803560001916906020019091905050610e86565b6040518082815260200191505060405180910390f35b341561019457600080fd5b6101ae600480803560001916906020019091905050610e9e565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6103a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561024a57848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610205565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102c657848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610281565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610eb6565b6040518082815260200191505060405180910390f35b34156103c957600080fd5b6104376004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190505061101b565b6040518082815260200191505060405180910390f35b341561045857600080fd5b610460611503565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104ad57600080fd5b6106b260048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561052857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104e3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156105a457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061055f565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611528565b005b34156106bf57600080fd5b6107536004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115e5565b005b341561076057600080fd5b61077a60048080356000191690602001909190505061160a565b6040518082815260200191505060405180910390f35b341561079b57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611653565b604051808215151515815260200191505060405180910390f35b341561081f57600080fd5b610847600480803590602001909190803590602001909190803590602001909190505061174d565b6040518082815260200191505060405180910390f35b341561086857600080fd5b61087061176b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108bd57600080fd5b610acd60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561093857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108f3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109b457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061096f565b505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611791565b005b3415610ada57600080fd5b610c1f60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b5557848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610b10565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610bd157848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b8c565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611851565b005b3415610c2c57600080fd5b610ccb6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118c4565b6040518082815260200191505060405180910390f35b3415610cec57600080fd5b610d516004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091905050612064565b60405180826000191660001916815260200191505060405180910390f35b3415610d7a57600080fd5b610d8261230f565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610dab57600080fd5b610db3612315565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df3578082015181840152602081019050610dd8565b50505050905090810190601f168015610e205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600084801515610e3d57fe5b86850991506000821415610e545760009250610e7d565b610e73610e6483620f424061234e565b610e6e888761234e565b612381565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b6000806000809150600090505b895181101561100b57896000815181101515610edb57fe5b906020019060200201516003600581101515610ef357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610f1c57fe5b906020019060200201516003600581101515610f3457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f5b57600080fd5b610fef82610fea8c84815181101515610f7057fe5b906020019060200201518c85815181101515610f8857fe5b90602001906020020151610f9c8d8861239c565b8c8c88815181101515610fab57fe5b906020019060200201518c89815181101515610fc357fe5b906020019060200201518c8a815181101515610fdb57fe5b906020019060200201516118c4565b6123b5565b915087821415610ffe5761100b565b8080600101915050610ec3565b8192505050979650505050505050565b6000611025612a67565b6000806101606040519081016040528088600060058110151561104457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561107357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860026005811015156110a257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110d157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600460058110151561110057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561112f57fe5b6020020151815260200187600160068110151561114857fe5b6020020151815260200187600260068110151561116157fe5b6020020151815260200187600360068110151561117a57fe5b6020020151815260200187600460068110151561119357fe5b602002015181526020016111a78989612064565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111ee57600080fd5b60008360a00151118015611206575060008360c00151115b80156112125750600085115b151561121d57600080fd5b8261012001514210151561127a57826101400151600019166000600381111561124257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b6112958360c0015161129085610140015161160a565b61239c565b91506112a185836123d3565b905060008114156112fb5782610140015160001916600160038111156112c357fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b611325600360008561014001516000191660001916815260200190815260200160002054826123b5565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b045871318660400151876060015161145d878a60c001518b60a0015161174d565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b86518110156115dc576115cf878281518110151561154857fe5b90602001906020020151878381518110151561156057fe5b90602001906020020151878481518110151561157857fe5b90602001906020020151878581518110151561159057fe5b9060200190602002015187868151811015156115a857fe5b9060200190602002015187878151811015156115c057fe5b906020019060200201516115e5565b808060010191505061152e565b50505050505050565b836115f687878760008888886118c4565b14151561160257600080fd5b505050505050565b600061164c60026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123b5565b9050919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1151561170b57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b600061176261175c858461234e565b84612381565b90509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b87518110156118475761183988828151811015156117b157fe5b9060200190602002015188838151811015156117c957fe5b9060200190602002015188848151811015156117e157fe5b906020019060200201518888868151811015156117fa57fe5b90602001906020020151888781518110151561181257fe5b90602001906020020151888881518110151561182a57fe5b906020019060200201516118c4565b508080600101915050611797565b5050505050505050565b60008090505b83518110156118be576118b0848281518110151561187157fe5b90602001906020020151848381518110151561188957fe5b9060200190602002015184848151811015156118a157fe5b9060200190602002015161101b565b508080600101915050611857565b50505050565b60006118ce612a67565b600080600080610160604051908101604052808e60006005811015156118f057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561191f57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561194e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561197d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119ac57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119db57fe5b602002015181526020018d60016006811015156119f457fe5b602002015181526020018d6002600681101515611a0d57fe5b602002015181526020018d6003600681101515611a2657fe5b602002015181526020018d6004600681101515611a3f57fe5b60200201518152602001611a538f8f612064565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611aca57503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611ad557600080fd5b60008560a00151118015611aed575060008560c00151115b8015611af9575060008b115b1515611b0457600080fd5b611b1a85600001518661014001518b8b8b611653565b1515611b2557600080fd5b84610120015142101515611b82578461014001516000191660006003811115611b4a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611b9d8560c00151611b9887610140015161160a565b61239c565b9350611ba98b856123d3565b95506000861415611c03578461014001516000191660016003811115611bcb57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611c16868660c001518760a00151610e2e565b15611c6a578461014001516000191660026003811115611c3257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b89158015611c7f5750611c7d85876123ec565b155b15611cd25784610140015160001916600380811115611c9a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611ce5868660c001518760a0015161174d565b9250611d11600260008761014001516000191660001916815260200190815260200160002054876123b5565b600260008761014001516000191660001916815260200190815260200160002081905550611d4985604001518660000151338661273c565b1515611d5457600080fd5b611d6885606001513387600001518961273c565b1515611d7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e725760008560e001511115611e1057611dcd868660c001518760e0015161174d565b9150611e046000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000015187608001518561273c565b1515611e0f57600080fd5b5b60008561010001511115611e7157611e32868660c0015187610100015161174d565b9050611e656000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387608001518461273c565b1515611e7057600080fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561207657fe5b602002015184600160058110151561208a57fe5b602002015185600260058110151561209e57fe5b60200201518660036005811015156120b257fe5b60200201518760046005811015156120c657fe5b60200201518760006006811015156120da57fe5b60200201518860016006811015156120ee57fe5b602002015189600260068110151561210257fe5b60200201518a600360068110151561211657fe5b60200201518b600460068110151561212a57fe5b60200201518c600560068110151561213e57fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c505050505050505050505050506040518091039020905092915050565b61138781565b6040805190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6000808284029050600084148061236f575082848281151561236c57fe5b04145b151561237757fe5b8091505092915050565b600080828481151561238f57fe5b0490508091505092915050565b60008282111515156123aa57fe5b818303905092915050565b60008082840190508381101515156123c957fe5b8091505092915050565b60008183106123e257816123e4565b825b905092915050565b60008060008060008060008060003397506124108a8c60c001518d60a0015161174d565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126bd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff161495506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff1614945061250b8a8c60c001518d60e0015161174d565b93506125218a8c60c001518d610100015161174d565b92508561252e5783612539565b61253887856123b5565b5b9150846125465782612551565b6125508a846123b5565b5b9050816125836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161288b565b10806125bc5750816125ba6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161294e565b105b806125f05750806125ee6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61288b565b105b806126245750806126226000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61294e565b105b15612632576000985061272e565b8515801561266b57508661264e8c604001518d6000015161288b565b108061266a5750866126688c604001518d6000015161294e565b105b5b15612679576000985061272e565b841580156126aa5750896126918c606001518a61288b565b10806126a95750896126a78c606001518a61294e565b105b5b156126b8576000985061272e565b612729565b866126d08c604001518d6000015161288b565b10806126ec5750866126ea8c604001518d6000015161294e565b105b806127035750896127018c606001518a61288b565b105b8061271a5750896127188c606001518a61294e565b105b15612728576000985061272e565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561286a57600080fd5b5af1151561287757600080fd5b505050604051805190509050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561292e57600080fd5b87f1151561293b57600080fd5b5050505060405180519050905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a4757600080fd5b87f11515612a5457600080fd5b5050505060405180519050905092915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000801916815250905600a165627a7a72305820b801c0ef623f52d9211fad0d14f56dea047af15d059f311166c24afd65803a320029", - "runtime_bytecode": "0x6060604052600436106100fc576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314df96ee14610101578063288cdc911461014e5780632ac1262214610189578063363349be146101c4578063394c21e7146103be5780633b30ba591461044d5780634f150787146104a2578063741bcc93146106b45780637e9abb50146107555780638163681e1461079057806398024a8b14610814578063add1cbc51461085d578063b7b2c7d6146108b2578063baa0181d14610acf578063bc61394a14610c21578063cfc4d0ec14610ce1578063f06bbf7514610d6f578063ffa1ad7414610da0575b600080fd5b341561010c57600080fd5b6101346004808035906020019091908035906020019091908035906020019091905050610e2e565b604051808215151515815260200191505060405180910390f35b341561015957600080fd5b610173600480803560001916906020019091905050610e86565b6040518082815260200191505060405180910390f35b341561019457600080fd5b6101ae600480803560001916906020019091905050610e9e565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b6103a860048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561024a57848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610205565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156102c657848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610281565b5050505050919080359060200190919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610eb6565b6040518082815260200191505060405180910390f35b34156103c957600080fd5b6104376004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190505061101b565b6040518082815260200191505060405180910390f35b341561045857600080fd5b610460611503565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104ad57600080fd5b6106b260048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561052857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906104e3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156105a457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061055f565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611528565b005b34156106bf57600080fd5b6107536004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c00190600680602002604051908101604052809291908260066020028082843782019150505050509190803590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506115e5565b005b341561076057600080fd5b61077a60048080356000191690602001909190505061160a565b6040518082815260200191505060405180910390f35b341561079b57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050611653565b604051808215151515815260200191505060405180910390f35b341561081f57600080fd5b610847600480803590602001909190803590602001909190803590602001909190505061174d565b6040518082815260200191505060405180910390f35b341561086857600080fd5b61087061176b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156108bd57600080fd5b610acd60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b8282101561093857848483905060a0020160058060200260405190810160405280929190826005602002808284378201915050505050815260200190600101906108f3565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b828210156109b457848483905060c00201600680602002604051908101604052809291908260066020028082843782019150505050508152602001906001019061096f565b505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080351515906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611791565b005b3415610ada57600080fd5b610c1f60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610b5557848483905060a002016005806020026040519081016040528092919082600560200280828437820191505050505081526020019060010190610b10565b5050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020016000905b82821015610bd157848483905060c002016006806020026040519081016040528092919082600660200280828437820191505050505081526020019060010190610b8c565b50505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050611851565b005b3415610c2c57600080fd5b610ccb6004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091908035906020019091908035151590602001909190803560ff1690602001909190803560001916906020019091908035600019169060200190919050506118c4565b6040518082815260200191505060405180910390f35b3415610cec57600080fd5b610d516004808060a001906005806020026040519081016040528092919082600560200280828437820191505050505091908060c001906006806020026040519081016040528092919082600660200280828437820191505050505091905050612064565b60405180826000191660001916815260200191505060405180910390f35b3415610d7a57600080fd5b610d8261230f565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610dab57600080fd5b610db3612315565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610df3578082015181840152602081019050610dd8565b50505050905090810190601f168015610e205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600084801515610e3d57fe5b86850991506000821415610e545760009250610e7d565b610e73610e6483620f424061234e565b610e6e888761234e565b612381565b90506103e8811192505b50509392505050565b60026020528060005260406000206000915090505481565b60036020528060005260406000206000915090505481565b6000806000809150600090505b895181101561100b57896000815181101515610edb57fe5b906020019060200201516003600581101515610ef357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff168a82815181101515610f1c57fe5b906020019060200201516003600581101515610f3457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16141515610f5b57600080fd5b610fef82610fea8c84815181101515610f7057fe5b906020019060200201518c85815181101515610f8857fe5b90602001906020020151610f9c8d8861239c565b8c8c88815181101515610fab57fe5b906020019060200201518c89815181101515610fc357fe5b906020019060200201518c8a815181101515610fdb57fe5b906020019060200201516118c4565b6123b5565b915087821415610ffe5761100b565b8080600101915050610ec3565b8192505050979650505050505050565b6000611025612a67565b6000806101606040519081016040528088600060058110151561104457fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600160058110151561107357fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860026005811015156110a257fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018860036005811015156110d157fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200188600460058110151561110057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff16815260200187600060068110151561112f57fe5b6020020151815260200187600160068110151561114857fe5b6020020151815260200187600260068110151561116157fe5b6020020151815260200187600360068110151561117a57fe5b6020020151815260200187600460068110151561119357fe5b602002015181526020016111a78989612064565b6000191681525092503373ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161415156111ee57600080fd5b60008360a00151118015611206575060008360c00151115b80156112125750600085115b151561121d57600080fd5b8261012001514210151561127a57826101400151600019166000600381111561124257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b6112958360c0015161129085610140015161160a565b61239c565b91506112a185836123d3565b905060008114156112fb5782610140015160001916600160038111156112c357fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a3600093506114f9565b611325600360008561014001516000191660001916815260200190815260200160002054826123b5565b60036000856101400151600019166000191681526020019081526020016000208190555082604001518360600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916836080015173ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff167f67d66f160bc93d925d05dae1794c90d2d6d6688b29b84ff069398a9b045871318660400151876060015161145d878a60c001518b60a0015161174d565b878a6101400151604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182600019166000191681526020019550505050505060405180910390a48093505b5050509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b86518110156115dc576115cf878281518110151561154857fe5b90602001906020020151878381518110151561156057fe5b90602001906020020151878481518110151561157857fe5b90602001906020020151878581518110151561159057fe5b9060200190602002015187868151811015156115a857fe5b9060200190602002015187878151811015156115c057fe5b906020019060200201516115e5565b808060010191505061152e565b50505050505050565b836115f687878760008888886118c4565b14151561160257600080fd5b505050505050565b600061164c60026000846000191660001916815260200190815260200160002054600360008560001916600019168152602001908152602001600020546123b5565b9050919050565b600060018560405180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040518091039020858585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1151561170b57600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614905095945050505050565b600061176261175c858461234e565b84612381565b90509392505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b87518110156118475761183988828151811015156117b157fe5b9060200190602002015188838151811015156117c957fe5b9060200190602002015188848151811015156117e157fe5b906020019060200201518888868151811015156117fa57fe5b90602001906020020151888781518110151561181257fe5b90602001906020020151888881518110151561182a57fe5b906020019060200201516118c4565b508080600101915050611797565b5050505050505050565b60008090505b83518110156118be576118b0848281518110151561187157fe5b90602001906020020151848381518110151561188957fe5b9060200190602002015184848151811015156118a157fe5b9060200190602002015161101b565b508080600101915050611857565b50505050565b60006118ce612a67565b600080600080610160604051908101604052808e60006005811015156118f057fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600160058110151561191f57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600260058110151561194e57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e600360058110151561197d57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018e60046005811015156119ac57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff1681526020018d60006006811015156119db57fe5b602002015181526020018d60016006811015156119f457fe5b602002015181526020018d6002600681101515611a0d57fe5b602002015181526020018d6003600681101515611a2657fe5b602002015181526020018d6004600681101515611a3f57fe5b60200201518152602001611a538f8f612064565b600019168152509450600073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161480611aca57503373ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16145b1515611ad557600080fd5b60008560a00151118015611aed575060008560c00151115b8015611af9575060008b115b1515611b0457600080fd5b611b1a85600001518661014001518b8b8b611653565b1515611b2557600080fd5b84610120015142101515611b82578461014001516000191660006003811115611b4a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611b9d8560c00151611b9887610140015161160a565b61239c565b9350611ba98b856123d3565b95506000861415611c03578461014001516000191660016003811115611bcb57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611c16868660c001518760a00151610e2e565b15611c6a578461014001516000191660026003811115611c3257fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b89158015611c7f5750611c7d85876123ec565b155b15611cd25784610140015160001916600380811115611c9a57fe5b60ff167f36d86c59e00bd73dc19ba3adfe068e4b64ac7e92be35546adeddf1b956a87e9060405160405180910390a360009550612054565b611ce5868660c001518760a0015161174d565b9250611d11600260008761014001516000191660001916815260200190815260200160002054876123b5565b600260008761014001516000191660001916815260200190815260200160002081905550611d4985604001518660000151338661273c565b1515611d5457600080fd5b611d6885606001513387600001518961273c565b1515611d7357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16856080015173ffffffffffffffffffffffffffffffffffffffff16141515611e725760008560e001511115611e1057611dcd868660c001518760e0015161174d565b9150611e046000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866000015187608001518561273c565b1515611e0f57600080fd5b5b60008561010001511115611e7157611e32868660c0015187610100015161174d565b9050611e656000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff163387608001518461273c565b1515611e7057600080fd5b5b5b84604001518560600151604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140192505050604051809103902060001916856080015173ffffffffffffffffffffffffffffffffffffffff16866000015173ffffffffffffffffffffffffffffffffffffffff167f0d0b9391970d9a25552f37d436d2aae2925e2bfe1b2a923754bada030c498cb33389604001518a60600151898d8a8a8f6101400151604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815260200183815260200182600019166000191681526020019850505050505050505060405180910390a48595505b5050505050979650505050505050565b60003083600060058110151561207657fe5b602002015184600160058110151561208a57fe5b602002015185600260058110151561209e57fe5b60200201518660036005811015156120b257fe5b60200201518760046005811015156120c657fe5b60200201518760006006811015156120da57fe5b60200201518860016006811015156120ee57fe5b602002015189600260068110151561210257fe5b60200201518a600360068110151561211657fe5b60200201518b600460068110151561212a57fe5b60200201518c600560068110151561213e57fe5b6020020151604051808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018681526020018581526020018481526020018381526020018281526020019c505050505050505050505050506040518091039020905092915050565b61138781565b6040805190810160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6000808284029050600084148061236f575082848281151561236c57fe5b04145b151561237757fe5b8091505092915050565b600080828481151561238f57fe5b0490508091505092915050565b60008282111515156123aa57fe5b818303905092915050565b60008082840190508381101515156123c957fe5b8091505092915050565b60008183106123e257816123e4565b825b905092915050565b60008060008060008060008060003397506124108a8c60c001518d60a0015161174d565b9650600073ffffffffffffffffffffffffffffffffffffffff168b6080015173ffffffffffffffffffffffffffffffffffffffff161415156126bd576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6040015173ffffffffffffffffffffffffffffffffffffffff161495506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b6060015173ffffffffffffffffffffffffffffffffffffffff1614945061250b8a8c60c001518d60e0015161174d565b93506125218a8c60c001518d610100015161174d565b92508561252e5783612539565b61253887856123b5565b5b9150846125465782612551565b6125508a846123b5565b5b9050816125836000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161288b565b10806125bc5750816125ba6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168d6000015161294e565b105b806125f05750806125ee6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61288b565b105b806126245750806126226000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a61294e565b105b15612632576000985061272e565b8515801561266b57508661264e8c604001518d6000015161288b565b108061266a5750866126688c604001518d6000015161294e565b105b5b15612679576000985061272e565b841580156126aa5750896126918c606001518a61288b565b10806126a95750896126a78c606001518a61294e565b105b5b156126b8576000985061272e565b612729565b866126d08c604001518d6000015161288b565b10806126ec5750866126ea8c604001518d6000015161294e565b105b806127035750896127018c606001518a61288b565b105b8061271a5750896127188c606001518a61294e565b105b15612728576000985061272e565b5b600198505b505050505050505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315dacbea868686866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b151561286a57600080fd5b5af1151561287757600080fd5b505050604051805190509050949350505050565b60008273ffffffffffffffffffffffffffffffffffffffff166370a0823161138761ffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600088803b151561292e57600080fd5b87f1151561293b57600080fd5b5050505060405180519050905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e61138761ffff1684600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600088803b1515612a4757600080fd5b87f11515612a5457600080fd5b5050505060405180519050905092915050565b61016060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000801916815250905600a165627a7a72305820b801c0ef623f52d9211fad0d14f56dea047af15d059f311166c24afd65803a320029", - "updated_at": 1522263980531, - "source_map": "995:22775:0:-;;;2959:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3056:9;3035:18;;:30;;;;;;;;;;;;;;;;;;3107:19;3075:29;;:51;;;;;;;;;;;;;;;;;;2959:174;;995:22775;;;;;;", - "source_map_runtime": "995:22775:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1736:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1781:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14311:989;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:1942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1565:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13062:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10862:419;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19208:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17487:350;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18783:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1604:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11912:619;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15658:381;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:4043;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16449:706;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1409:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:458;18197:4;18217:14;18347:30;18260:11;18234:38;;;;;;;18249:9;18241:6;18234:38;18217:55;;18299:1;18286:9;:14;18282:32;;;18309:5;18302:12;;;;18282:32;18380:98;18401:27;18409:9;18420:7;18401;:27::i;:::-;18442:26;18450:9;18461:6;18442:7;:26::i;:::-;18380:7;:98::i;:::-;18347:131;;18523:4;18495:25;:32;18488:39;;18076:458;;;;;;;;:::o;1736:39::-;;;;;;;;;;;;;;;;;:::o;1781:42::-;;;;;;;;;;;;;;;;;:::o;14311:989::-;14590:4;14610:27;14656:6;14640:1;14610:31;;14665:1;14656:10;;14651:604;14672:14;:21;14668:1;:25;14651:604;;;14746:14;14761:1;14746:17;;;;;;;;;;;;;;;;;;14764:1;14746:20;;;;;;;;;;;;;14722:44;;:14;14737:1;14722:17;;;;;;;;;;;;;;;;;;14740:1;14722:20;;;;;;;;;;;;;:44;;;14714:53;;;;;;;;14852:321;14860:22;14884:288;14911:14;14926:1;14911:17;;;;;;;;;;;;;;;;;;14946:11;14958:1;14946:14;;;;;;;;;;;;;;;;;;14978:53;14986:20;15008:22;14978:7;:53::i;:::-;15049:43;15110:1;15112;15110:4;;;;;;;;;;;;;;;;;;15132:1;15134;15132:4;;;;;;;;;;;;;;;;;;15154:1;15156;15154:4;;;;;;;;;;;;;;;;;;14884:9;:288::i;:::-;14852:7;:321::i;:::-;14827:346;;15217:20;15191:22;:46;15187:57;;;15239:5;;15187:57;14695:3;;;;;;;14651:604;;;15271:22;15264:29;;14311:989;;;;;;;;;;;:::o;8299:1942::-;8454:4;8474:18;;:::i;:::-;9334:30;9457;8495:512;;;;;;;;;8522:14;8537:1;8522:17;;;;;;;;;;;;;8495:512;;;;;;8560:14;8575:1;8560:17;;;;;;;;;;;;;8495:512;;;;;;8603:14;8618:1;8603:17;;;;;;;;;;;;;8495:512;;;;;;8646:14;8661:1;8646:17;;;;;;;;;;;;;8495:512;;;;;;8691:14;8706:1;8691:17;;;;;;;;;;;;;8495:512;;;;;;8740:11;8752:1;8740:14;;;;;;;;;;;;;8495:512;;;;8786:11;8798:1;8786:14;;;;;;;;;;;;;8495:512;;;;8824:11;8836:1;8824:14;;;;;;;;;;;;;8495:512;;;;8862:11;8874:1;8862:14;;;;;;;;;;;;;8495:512;;;;8916:11;8928:1;8916:14;;;;;;;;;;;;;8495:512;;;;8955:41;8968:14;8984:11;8955:12;:41::i;:::-;8495:512;;;;;;8474:533;;9041:10;9026:25;;:5;:11;;;:25;;;9018:34;;;;;;;;9095:1;9070:5;:22;;;:26;:56;;;;;9125:1;9100:5;:22;;;:26;9070:56;:86;;;;;9155:1;9130:22;:26;9070:86;9062:95;;;;;;;;9191:5;:30;;;9172:15;:49;;9168:156;;;9275:5;:15;;;9237:54;;;9252:20;9246:27;;;;;;;;9237:54;;;;;;;;;;;;9312:1;9305:8;;;;9168:156;9367:80;9375:5;:22;;;9399:47;9430:5;:15;;;9399:30;:47::i;:::-;9367:7;:80::i;:::-;9334:113;;9490:57;9497:22;9521:25;9490:6;:57::i;:::-;9457:90;;9590:1;9561:25;:30;9557:155;;;9663:5;:15;;;9607:72;;;9622:38;9616:45;;;;;;;;9607:72;;;;;;;;;;;;9700:1;9693:8;;;;9557:155;9751:62;9759:9;:26;9769:5;:15;;;9759:26;;;;;;;;;;;;;;;;;;9787:25;9751:7;:62::i;:::-;9722:9;:26;9732:5;:15;;;9722:26;;;;;;;;;;;;;;;;;:91;;;;10118:5;:16;;;10136:5;:16;;;10108:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9824:368;;;9872:5;:18;;;9824:368;;9847:5;:11;;;9824:368;;;9904:5;:16;;;9934:5;:16;;;9964:91;9981:25;10008:5;:22;;;10032:5;:22;;;9964:16;:91::i;:::-;10069:25;10167:5;:15;;;9824:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10209:25;10202:32;;8299:1942;;;;;;;;;:::o;1565:33::-;;;;;;;;;;;;;:::o;13062:512::-;13295:6;13304:1;13295:10;;13290:278;13311:14;:21;13307:1;:25;13290:278;;;13353:204;13386:14;13401:1;13386:17;;;;;;;;;;;;;;;;;;13421:11;13433:1;13421:14;;;;;;;;;;;;;;;;;;13453:21;13475:1;13453:24;;;;;;;;;;;;;;;;;;13495:1;13497;13495:4;;;;;;;;;;;;;;;;;;13517:1;13519;13517:4;;;;;;;;;;;;;;;;;;13539:1;13541;13539:4;;;;;;;;;;;;;;;;;;13353:15;:204::i;:::-;13334:3;;;;;;;13290:278;;;13062:512;;;;;;;:::o;10862:419::-;11253:20;11079:170;11102:14;11130:11;11155:20;11189:5;11208:1;11223;11238;11079:9;:170::i;:::-;:194;11071:203;;;;;;;;10862:419;;;;;;:::o;19208:190::-;19316:4;19343:48;19351:6;:17;19358:9;19351:17;;;;;;;;;;;;;;;;;;19370:9;:20;19380:9;19370:20;;;;;;;;;;;;;;;;;;19343:7;:48::i;:::-;19336:55;;19208:190;;;:::o;17487:350::-;17664:4;17701:129;17770:4;17724:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17789:1;17804;17819;17701:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17691:139;;:6;:139;;;17684:146;;17487:350;;;;;;;:::o;18783:204::-;18905:4;18932:48;18940:26;18948:9;18959:6;18940:7;:26::i;:::-;18968:11;18932:7;:48::i;:::-;18925:55;;18783:204;;;;;:::o;1604:44::-;;;;;;;;;;;;;:::o;11912:619::-;12197:6;12206:1;12197:10;;12192:333;12213:14;:21;12209:1;:25;12192:333;;;12255:259;12282:14;12297:1;12282:17;;;;;;;;;;;;;;;;;;12317:11;12329:1;12317:14;;;;;;;;;;;;;;;;;;12349:21;12371:1;12349:24;;;;;;;;;;;;;;;;;;12391:43;12452:1;12454;12452:4;;;;;;;;;;;;;;;;;;12474:1;12476;12474:4;;;;;;;;;;;;;;;;;;12496:1;12498;12496:4;;;;;;;;;;;;;;;;;;12255:9;:259::i;:::-;;12236:3;;;;;;;12192:333;;;11912:619;;;;;;;;:::o;15658:381::-;15828:6;15837:1;15828:10;;15823:210;15844:14;:21;15840:1;:25;15823:210;;;15886:136;15915:14;15930:1;15915:17;;;;;;;;;;;;;;;;;;15950:11;15962:1;15950:14;;;;;;;;;;;;;;;;;;15982:23;16006:1;15982:26;;;;;;;;;;;;;;;;;;15886:11;:136::i;:::-;;15867:3;;;;;;;15823:210;;;15658:381;;;;:::o;3838:4043::-;4120:27;4163:18;;:::i;:::-;5194:30;6015:27;6143:17;6170;4184:512;;;;;;;;;4211:14;4226:1;4211:17;;;;;;;;;;;;;4184:512;;;;;;4249:14;4264:1;4249:17;;;;;;;;;;;;;4184:512;;;;;;4292:14;4307:1;4292:17;;;;;;;;;;;;;4184:512;;;;;;4335:14;4350:1;4335:17;;;;;;;;;;;;;4184:512;;;;;;4380:14;4395:1;4380:17;;;;;;;;;;;;;4184:512;;;;;;4429:11;4441:1;4429:14;;;;;;;;;;;;;4184:512;;;;4475:11;4487:1;4475:14;;;;;;;;;;;;;4184:512;;;;4513:11;4525:1;4513:14;;;;;;;;;;;;;4184:512;;;;4551:11;4563:1;4551:14;;;;;;;;;;;;;4184:512;;;;4605:11;4617:1;4605:14;;;;;;;;;;;;;4184:512;;;;4644:41;4657:14;4673:11;4644:12;:41::i;:::-;4184:512;;;;;;4163:533;;4738:1;4715:25;;:5;:11;;;:25;;;:54;;;;4759:10;4744:25;;:5;:11;;;:25;;;4715:54;4707:63;;;;;;;;4813:1;4788:5;:22;;;:26;:56;;;;;4843:1;4818:5;:22;;;:26;4788:56;:84;;;;;4871:1;4848:20;:24;4788:84;4780:93;;;;;;;;4891:125;4921:5;:11;;;4946:5;:15;;;4975:1;4990;5005;4891:16;:125::i;:::-;4883:134;;;;;;;;5051:5;:30;;;5032:15;:49;;5028:156;;;5135:5;:15;;;5097:54;;;5112:20;5106:27;;;;;;;;5097:54;;;;;;;;;;;;5172:1;5165:8;;;;5028:156;5227:80;5235:5;:22;;;5259:47;5290:5;:15;;;5259:30;:47::i;:::-;5227:7;:80::i;:::-;5194:113;;5342:55;5349:20;5371:25;5342:6;:55::i;:::-;5317:80;;5437:1;5411:22;:27;5407:152;;;5510:5;:15;;;5454:72;;;5469:38;5463:45;;;;;;;;5454:72;;;;;;;;;;;;5547:1;5540:8;;;;5407:152;5573:87;5589:22;5613:5;:22;;;5637:5;:22;;;5573:15;:87::i;:::-;5569:205;;;5725:5;:15;;;5676:65;;;5691:31;5685:38;;;;;;;;5676:65;;;;;;;;;;;;5762:1;5755:8;;;;5569:205;5789:43;5788:44;:94;;;;;5837:45;5852:5;5859:22;5837:14;:45::i;:::-;5836:46;5788:94;5784:221;;;5956:5;:15;;;5898:74;;;5913:40;5907:47;;;;;;;;5898:74;;;;;;;;;;;;5993:1;5986:8;;;;5784:221;6045:88;6062:22;6086:5;:22;;;6110:5;:22;;;6045:16;:88::i;:::-;6015:118;;6223:56;6231:6;:23;6238:5;:15;;;6231:23;;;;;;;;;;;;;;;;;;6256:22;6223:7;:56::i;:::-;6197:6;:23;6204:5;:15;;;6197:23;;;;;;;;;;;;;;;;;:82;;;;6297:154;6340:5;:16;;;6370:5;:11;;;6395:10;6419:22;6297:29;:154::i;:::-;6289:163;;;;;;;;6470:154;6513:5;:16;;;6543:10;6567:5;:11;;;6592:22;6470:29;:154::i;:::-;6462:163;;;;;;;;6669:1;6639:32;;:5;:18;;;:32;;;;6635:820;;;6708:1;6691:5;:14;;;:18;6687:373;;;6744:80;6761:22;6785:5;:22;;;6809:5;:14;;;6744:16;:80::i;:::-;6729:95;;6850:194;6901:18;;;;;;;;;;;6941:5;:11;;;6974:5;:18;;;7014:12;6850:29;:194::i;:::-;6842:203;;;;;;;;6687:373;7094:1;7077:5;:14;;;:18;7073:372;;;7130:80;7147:22;7171:5;:22;;;7195:5;:14;;;7130:16;:80::i;:::-;7115:95;;7236:193;7287:18;;;;;;;;;;;7327:10;7359:5;:18;;;7399:12;7236:29;:193::i;:::-;7228:202;;;;;;;;7073:372;6635:820;7761:5;:16;;;7779:5;:16;;;7751:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:370;;;7535:5;:18;;;7465:370;;7486:5;:11;;;7465:370;;;7511:10;7567:5;:16;;;7597:5;:16;;;7627:22;7663;7699:12;7725;7810:5;:15;;;7465:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7852:22;7845:29;;3838:4043;;;;;;;;;;;;;;;:::o;16449:706::-;16568:7;16629:4;16648:14;16663:1;16648:17;;;;;;;;;;;;;16688:14;16703:1;16688:17;;;;;;;;;;;;;16728:14;16743:1;16728:17;;;;;;;;;;;;;16773:14;16788:1;16773:17;;;;;;;;;;;;;16818:14;16833:1;16818:17;;;;;;;;;;;;;16865:11;16877:1;16865:14;;;;;;;;;;;;;16916:11;16928:1;16916:14;;;;;;;;;;;;;16967:11;16979:1;16967:14;;;;;;;;;;;;;17010:11;17022:1;17010:14;;;;;;;;;;;;;17053:11;17065:1;17053:14;;;;;;;;;;;;;17112:11;17124:1;17112:14;;;;;;;;;;;;;16598:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16591:557;;16449:706;;;;:::o;1455:54::-;1505:4;1455:54;:::o;1409:40::-;;;;;;;;;;;;;;;;;;;;:::o;53:184:3:-;137:7;160:6;173:1;169;:5;160:14;;196:1;191;:6;:20;;;;210:1;205;201;:5;;;;;;;;:10;191:20;184:28;;;;;;229:1;222:8;;53:184;;;;;:::o;243:146::-;327:7;350:6;363:1;359;:5;;;;;;;;350:14;;381:1;374:8;;243:146;;;;;:::o;395:150::-;479:7;514:1;509;:6;;502:14;;;;;;537:1;533;:5;526:12;;395:150;;;;:::o;551:170::-;635:7;658:6;671:1;667;:5;658:14;;694:1;689;:6;;682:14;;;;;;713:1;706:8;;551:170;;;;;:::o;1156:139::-;1245:7;1279:1;1275;:5;:13;;1287:1;1275:13;;;1283:1;1275:13;1268:20;;1156:139;;;;:::o;20288:2363:0:-;20537:4;20557:13;20593:25;20770:20;20845;20920:17;21032;21144:21;21258;20573:10;20557:26;;20621:86;20638:20;20660:5;:22;;;20684:5;:22;;;20621:16;:86::i;:::-;20593:114;;20752:1;20722:32;;:5;:18;;;:32;;;;20718:1904;;;20813:18;;;;;;;;;;;20793:38;;:5;:16;;;:38;;;20770:61;;20888:18;;;;;;;;;;;20868:38;;:5;:16;;;:38;;;20845:61;;20940:78;20957:20;20979:5;:22;;;21003:5;:14;;;20940:16;:78::i;:::-;20920:98;;21052:78;21069:20;21091:5;:22;;;21115:5;:14;;;21052:16;:78::i;:::-;21032:98;;21168:15;:76;;21232:12;21168:76;;;21186:43;21194:20;21216:12;21186:7;:43::i;:::-;21168:76;21144:100;;21282:15;:76;;21346:12;21282:76;;;21300:43;21308:20;21330:12;21300:7;:43::i;:::-;21282:76;21258:100;;21426:16;21380:43;21391:18;;;;;;;;;;;21411:5;:11;;;21380:10;:43::i;:::-;:62;:146;;;;21510:16;21462:45;21475:18;;;;;;;;;;;21495:5;:11;;;21462:12;:45::i;:::-;:64;21380:146;:222;;;;21586:16;21546:37;21557:18;;;;;;;;;;;21577:5;21546:10;:37::i;:::-;:56;21380:222;:300;;;;21664:16;21622:39;21635:18;;;;;;;;;;;21655:5;21622:12;:39::i;:::-;:58;21380:300;21373:334;;;21702:5;21695:12;;;;21373:334;21727:15;21726:16;:236;;;;;21794:20;21750:41;21761:5;:16;;;21779:5;:11;;;21750:10;:41::i;:::-;:64;:211;;;;21941:20;21895:43;21908:5;:16;;;21926:5;:11;;;21895:12;:43::i;:::-;:66;21750:211;21726:236;21722:267;;;21984:5;21977:12;;;;21722:267;22008:15;22007:16;:224;;;;;22069:20;22031:35;22042:5;:16;;;22060:5;22031:10;:35::i;:::-;:58;:199;;;;22210:20;22170:37;22183:5;:16;;;22201:5;22170:12;:37::i;:::-;:60;22031:199;22007:224;22003:255;;;22253:5;22246:12;;;;22003:255;20718:1904;;;22326:20;22282:41;22293:5;:16;;;22311:5;:11;;;22282:10;:41::i;:::-;:64;:153;;;;22415:20;22369:43;22382:5;:16;;;22400:5;:11;;;22369:12;:43::i;:::-;:66;22282:153;:234;;;;22496:20;22458:35;22469:5;:16;;;22487:5;22458:10;:35::i;:::-;:58;22282:234;:317;;;;22579:20;22539:37;22552:5;:16;;;22570:5;22539:12;:37::i;:::-;:60;22282:317;22275:347;;;22617:5;22610:12;;;;22275:347;20718:1904;22640:4;22633:11;;20288:2363;;;;;;;;;;;;;:::o;19762:279::-;19921:4;19967:29;;;;;;;;;;;19948:62;;;20011:5;20018:4;20024:2;20028:5;19948:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19941:93;;19762:279;;;;;;:::o;22821:339::-;23032:4;23065:5;23059:22;;;1505:4;23059:52;;23112:5;23059:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23052:66;;22821:339;;;;:::o;23396:372::-;23609:4;23642:5;23636:22;;;1505:4;23636:52;;23689:5;23696:29;;;;;;;;;;;23636:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23629:97;;23396:372;;;;:::o;995:22775::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "Exchange.sol", - "TokenTransferProxy/TokenTransferProxy.sol", - "previous/Ownable/Ownable_v1.sol", - "previous/SafeMath/SafeMath_v1.sol", - "previous/Token/Token_v1.sol" - ], - "address": "0x48bacb9266a570d521063ef5dd96e61686dbe788", - "constructor_args": "0x0000000000000000000000001d7022f5b17d2f8b695918fb48fa1089c9f854010000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c48" - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MaliciousToken.json b/packages/0x.js/test/artifacts/MaliciousToken.json deleted file mode 100644 index a0c3e3ddc..000000000 --- a/packages/0x.js/test/artifacts/MaliciousToken.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "contract_name": "MaliciousToken", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x91d9300198fcb37383f39ae62bafd5a92b6def37f673c23b8ec37caca5bf9c69", - "source_tree_hash": "0xd31259e791da9de56d06674f846caf98d2108f325bb5d4d38689f336b8105e93", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ], - "bytecode": "0x60606040526001600360006101000a81548160ff021916908360ff160217905550341561002b57600080fd5b6109968061003a6000396000f300606060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007d57806318160ddd146100d757806323b872dd1461010057806370a0823114610179578063a9059cbb146101c6578063dd62ed3e14610220575b600080fd5b341561008857600080fd5b6100bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028c565b604051808215151515815260200191505060405180910390f35b34156100e257600080fd5b6100ea61037e565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610384565b604051808215151515815260200191505060405180910390f35b341561018457600080fd5b6101b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610677565b6040518082815260200191505060405180910390f35b34156101d157600080fd5b610206600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106c7565b604051808215151515815260200191505060405180910390f35b341561022b57600080fd5b610276600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108a7565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104da57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156104e557600080fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610681610936565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561079557506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156107a057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006108b1610936565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6003600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505600a165627a7a723058209be2ab2021ece000a0a23c0c462fc88da7e89ad1aa8fe6c8542fda6a5ef108300029", - "runtime_bytecode": "0x606060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007d57806318160ddd146100d757806323b872dd1461010057806370a0823114610179578063a9059cbb146101c6578063dd62ed3e14610220575b600080fd5b341561008857600080fd5b6100bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028c565b604051808215151515815260200191505060405180910390f35b34156100e257600080fd5b6100ea61037e565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610384565b604051808215151515815260200191505060405180910390f35b341561018457600080fd5b6101b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610677565b6040518082815260200191505060405180910390f35b34156101d157600080fd5b610206600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106c7565b604051808215151515815260200191505060405180910390f35b341561022b57600080fd5b610276600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108a7565b6040518082815260200191505060405180910390f35b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b80156104da57506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156104e557600080fd5b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000610681610936565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561079557506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15156107a057600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60006108b1610936565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6003600081819054906101000a900460ff168092919060010191906101000a81548160ff021916908360ff160217905550505600a165627a7a723058209be2ab2021ece000a0a23c0c462fc88da7e89ad1aa8fe6c8542fda6a5ef108300029", - "updated_at": 1522263998131, - "source_map": "96:556:0:-;;;162:1;140:23;;;;;;;;;;;;;;;;;;;;96:556;;;;;;;;;;;;;;", - "source_map_runtime": "96:556:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;435:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;107:322:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;466:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:214:1;933:4;985:6;953:7;:19;961:10;953:19;;;;;;;;;;;;;;;:29;973:8;953:29;;;;;;;;;;;;;;;:38;;;;1022:8;1001:38;;1010:10;1001:38;;;1032:6;1001:38;;;;;;;;;;;;;;;;;;1056:4;1049:11;;853:214;;;;:::o;1472:23::-;;;;:::o;435:412::-;530:4;577:6;558:8;:15;567:5;558:15;;;;;;;;;;;;;;;;:25;;:65;;;;;617:6;587:7;:14;595:5;587:14;;;;;;;;;;;;;;;:26;602:10;587:26;;;;;;;;;;;;;;;;:36;;558:65;:108;;;;;653:8;:13;662:3;653:13;;;;;;;;;;;;;;;;643:6;627:8;:13;636:3;627:13;;;;;;;;;;;;;;;;:22;:39;;558:108;550:117;;;;;;;;694:6;677:8;:13;686:3;677:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;729:6;710:8;:15;719:5;710:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;775:6;745:7;:14;753:5;745:14;;;;;;;;;;;;;;;:26;760:10;745:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;807:3;791:28;;800:5;791:28;;;812:6;791:28;;;;;;;;;;;;;;;;;;836:4;829:11;;435:412;;;;;:::o;303:157:0:-;387:4;407:13;:11;:13::i;:::-;437:8;:16;446:6;437:16;;;;;;;;;;;;;;;;430:23;;303:157;;;:::o;107:322:1:-;183:4;235:6;211:8;:20;220:10;211:20;;;;;;;;;;;;;;;;:30;;:73;;;;;271:8;:13;280:3;271:13;;;;;;;;;;;;;;;;261:6;245:8;:13;254:3;245:13;;;;;;;;;;;;;;;;:22;:39;;211:73;203:82;;;;;;;;319:6;295:8;:20;304:10;295:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;352:6;335:8;:13;344:3;335:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;389:3;368:33;;377:10;368:33;;;394:6;368:33;;;;;;;;;;;;;;;;;;418:4;411:11;;107:322;;;;:::o;466:184:0:-;568:4;588:13;:11;:13::i;:::-;618:7;:15;626:6;618:15;;;;;;;;;;;;;;;:25;634:8;618:25;;;;;;;;;;;;;;;;611:32;;466:184;;;;:::o;221:76::-;275:13;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;221:76::o", - "sources": [ - "MaliciousToken.sol", - "tokens/ERC20Token/ERC20Token.sol", - "tokens/Token/Token.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWallet.json b/packages/0x.js/test/artifacts/MultiSigWallet.json deleted file mode 100644 index 2da7a954c..000000000 --- a/packages/0x.js/test/artifacts/MultiSigWallet.json +++ /dev/null @@ -1,552 +0,0 @@ -{ - "contract_name": "MultiSigWallet", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xe4dcaad5ebc708ef4258ff1a4152c7b94956a61f99db39fb7ae3003cc7087234", - "source_tree_hash": "0xe4dcaad5ebc708ef4258ff1a4152c7b94956a61f99db39fb7ae3003cc7087234", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "revokeConfirmation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "address" - } - ], - "name": "confirmations", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "transactions", - "outputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "executed", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "from", - "type": "uint256" - }, - { - "name": "to", - "type": "uint256" - }, - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionIds", - "outputs": [ - { - "name": "_transactionIds", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmations", - "outputs": [ - { - "name": "_confirmations", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "transactionCount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_required", - "type": "uint256" - } - ], - "name": "changeRequirement", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "submitTransaction", - "outputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MAX_OWNER_COUNT", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "required", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_required", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Confirmation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Revocation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Submission", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Execution", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "ExecutionFailure", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerAddition", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerRemoval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "required", - "type": "uint256" - } - ], - "name": "RequirementChange", - "type": "event" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b604051620022f7380380620022f783398101604052808051820191906020018051906020019091905050600082518260328211806200004e57508181115b806200005a5750600081145b80620000665750600082145b156200007157600080fd5b600092505b8451831015620001a8576002600086858151811015156200009357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806200011f575060008584815181101515620000fd57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200012a57600080fd5b60016002600087868151811015156200013f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000076565b8460039080519060200190620001c0929190620001d3565b50836004819055505050505050620002a8565b8280548282559060005260206000209081019282156200024f579160200282015b828111156200024e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620001f4565b5b5090506200025e919062000262565b5090565b620002a591905b80821115620002a157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000269565b5090565b90565b61203f80620002b86000396000f30060606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104b1578063a8abe69a1461051b578063b5dc40c3146105b2578063b77bf6001461062a578063ba51a6df14610653578063c01a8c8414610676578063c642747414610699578063d74f8edd14610732578063dc8452cd1461075b578063e20056e614610784578063ee22610b146107dc575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b341561018257600080fd5b61019860048080359060200190919050506107ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061083e565b005b341561021e57600080fd5b6102346004808035906020019091905050610ada565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c80565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca0565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610ccf565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d61565b005b341561036957600080fd5b61037f6004808035906020019091905050610f57565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba600480803590602001909190505061103d565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611109565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610473578082015181840152602081019050610458565b50505050905090810190601f1680156104a05780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156104bc57600080fd5b6104c46111fe565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105075780820151818401526020810190506104ec565b505050509050019250505060405180910390f35b341561052657600080fd5b61055b600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611292565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059e578082015181840152602081019050610583565b505050509050019250505060405180910390f35b34156105bd57600080fd5b6105d360048080359060200190919050506113ee565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106165780820151818401526020810190506105fb565b505050509050019250505060405180910390f35b341561063557600080fd5b61063d611618565b6040518082815260200191505060405180910390f35b341561065e57600080fd5b610674600480803590602001909190505061161e565b005b341561068157600080fd5b61069760048080359060200190919050506116d0565b005b34156106a457600080fd5b61071c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118a9565b6040518082815260200191505060405180910390f35b341561073d57600080fd5b6107456118c8565b6040518082815260200191505060405180910390f35b341561076657600080fd5b61076e6118cd565b6040518082815260200191505060405180910390f35b341561078f57600080fd5b6107da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b34156107e757600080fd5b6107fd6004808035906020019091905050611be8565b005b60038181548110151561080e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a5b578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561096657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a4e5760036001600380549050038154811015156109c557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a5b565b8180600101925050610930565b6001600381818054905003915081610a739190611eee565b506003805490506004541115610a9257610a9160038054905061161e565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b3357600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b9e57600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610bcc57600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d5a57838015610d0e575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d415750828015610d40575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d4d576001820191505b8080600101915050610cd7565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9b57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610df357600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610e1857600080fd5b6001600380549050016004546032821180610e3257508181115b80610e3d5750600081145b80610e485750600082145b15610e5257600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610ebe9190611f1a565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b60038054905081101561103557600160008581526020019081526020016000206000600383815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611015576001820191505b6004548214156110285760019250611036565b8080600101915050610f64565b5b5050919050565b600080600090505b6003805490508110156111035760016000848152602001908152602001600020600060038381548110151561107657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110f6576001820191505b8080600101915050611045565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611206611f46565b600380548060200260200160405190810160405280929190818152602001828054801561128857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161123e575b5050505050905090565b61129a611f5a565b6112a2611f5a565b6000806005546040518059106112b55750595b9080825280602002602001820160405250925060009150600090505b60055481101561137157858015611308575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061133b575084801561133a575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156113645780838381518110151561134f57fe5b90602001906020020181815250506001820191505b80806001019150506112d1565b8787036040518059106113815750595b908082528060200260200182016040525093508790505b868110156113e35782818151811015156113ae57fe5b90602001906020020151848983038151811015156113c857fe5b90602001906020020181815250508080600101915050611398565b505050949350505050565b6113f6611f46565b6113fe611f46565b6000806003805490506040518059106114145750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156115735760016000868152602001908152602001600020600060038381548110151561146157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611566576003818154811015156114e957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561152357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611430565b816040518059106115815750595b90808252806020026020018201604052509350600090505b818110156116105782818151811015156115af57fe5b9060200190602002015184828151811015156115c757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611599565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165857600080fd5b60038054905081603282118061166d57508181115b806116785750600081145b806116835750600082145b1561168d57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561172957600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561178357600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117ed57600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36118a285611be8565b5050505050565b60006118b6848484611d9e565b90506118c1816116d0565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561196857600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c057600080fd5b600092505b600380549050831015611aab578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119f857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a9e5783600384815481101515611a5057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aab565b82806001019350506119c5565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611c1857600080fd5b611c2183610f57565b15611d9957600080848152602001908152602001600020915060018260030160006101000a81548160ff0219169083151502179055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260010154836002016040518082805460018160011615610100020316600290048015611d005780601f10611cd557610100808354040283529160200191611d00565b820191906000526020600020905b815481529060010190602001808311611ce357829003601f168201915b505091505060006040518083038185875af19250505015611d4d57827f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611d98565b827f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008260030160006101000a81548160ff0219169083151502179055505b5b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611dc557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611e84929190611f6e565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b815481835581811511611f1557818360005260206000209182019101611f149190611fee565b5b505050565b815481835581811511611f4157818360005260206000209182019101611f409190611fee565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611faf57805160ff1916838001178555611fdd565b82800160010185558215611fdd579182015b82811115611fdc578251825591602001919060010190611fc1565b5b509050611fea9190611fee565b5090565b61201091905b8082111561200c576000816000905550600101611ff4565b5090565b905600a165627a7a723058203660a52c3e499e6033db3525fe242cdfa7a3faa0c09a1a3a16fc71bad2f485b20029", - "runtime_bytecode": "0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104b1578063a8abe69a1461051b578063b5dc40c3146105b2578063b77bf6001461062a578063ba51a6df14610653578063c01a8c8414610676578063c642747414610699578063d74f8edd14610732578063dc8452cd1461075b578063e20056e614610784578063ee22610b146107dc575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b341561018257600080fd5b61019860048080359060200190919050506107ff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061083e565b005b341561021e57600080fd5b6102346004808035906020019091905050610ada565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c80565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca0565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610ccf565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d61565b005b341561036957600080fd5b61037f6004808035906020019091905050610f57565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba600480803590602001909190505061103d565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611109565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610473578082015181840152602081019050610458565b50505050905090810190601f1680156104a05780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156104bc57600080fd5b6104c46111fe565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105075780820151818401526020810190506104ec565b505050509050019250505060405180910390f35b341561052657600080fd5b61055b600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611292565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561059e578082015181840152602081019050610583565b505050509050019250505060405180910390f35b34156105bd57600080fd5b6105d360048080359060200190919050506113ee565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106165780820151818401526020810190506105fb565b505050509050019250505060405180910390f35b341561063557600080fd5b61063d611618565b6040518082815260200191505060405180910390f35b341561065e57600080fd5b610674600480803590602001909190505061161e565b005b341561068157600080fd5b61069760048080359060200190919050506116d0565b005b34156106a457600080fd5b61071c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506118a9565b6040518082815260200191505060405180910390f35b341561073d57600080fd5b6107456118c8565b6040518082815260200191505060405180910390f35b341561076657600080fd5b61076e6118cd565b6040518082815260200191505060405180910390f35b341561078f57600080fd5b6107da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118d3565b005b34156107e757600080fd5b6107fd6004808035906020019091905050611be8565b005b60038181548110151561080e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561087a57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a5b578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561096657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a4e5760036001600380549050038154811015156109c557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a5b565b8180600101925050610930565b6001600381818054905003915081610a739190611eee565b506003805490506004541115610a9257610a9160038054905061161e565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b3357600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b9e57600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610bcc57600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d5a57838015610d0e575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d415750828015610d40575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d4d576001820191505b8080600101915050610cd7565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9b57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610df357600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610e1857600080fd5b6001600380549050016004546032821180610e3257508181115b80610e3d5750600081145b80610e485750600082145b15610e5257600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610ebe9190611f1a565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b60038054905081101561103557600160008581526020019081526020016000206000600383815481101515610f9557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611015576001820191505b6004548214156110285760019250611036565b8080600101915050610f64565b5b5050919050565b600080600090505b6003805490508110156111035760016000848152602001908152602001600020600060038381548110151561107657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110f6576001820191505b8080600101915050611045565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611206611f46565b600380548060200260200160405190810160405280929190818152602001828054801561128857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161123e575b5050505050905090565b61129a611f5a565b6112a2611f5a565b6000806005546040518059106112b55750595b9080825280602002602001820160405250925060009150600090505b60055481101561137157858015611308575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061133b575084801561133a575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156113645780838381518110151561134f57fe5b90602001906020020181815250506001820191505b80806001019150506112d1565b8787036040518059106113815750595b908082528060200260200182016040525093508790505b868110156113e35782818151811015156113ae57fe5b90602001906020020151848983038151811015156113c857fe5b90602001906020020181815250508080600101915050611398565b505050949350505050565b6113f6611f46565b6113fe611f46565b6000806003805490506040518059106114145750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156115735760016000868152602001908152602001600020600060038381548110151561146157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611566576003818154811015156114e957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561152357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611430565b816040518059106115815750595b90808252806020026020018201604052509350600090505b818110156116105782818151811015156115af57fe5b9060200190602002015184828151811015156115c757fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611599565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165857600080fd5b60038054905081603282118061166d57508181115b806116785750600081145b806116835750600082145b1561168d57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561172957600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561178357600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156117ed57600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36118a285611be8565b5050505050565b60006118b6848484611d9e565b90506118c1816116d0565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190f57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561196857600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119c057600080fd5b600092505b600380549050831015611aab578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119f857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a9e5783600384815481101515611a5057fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611aab565b82806001019350506119c5565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611c1857600080fd5b611c2183610f57565b15611d9957600080848152602001908152602001600020915060018260030160006101000a81548160ff0219169083151502179055508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260010154836002016040518082805460018160011615610100020316600290048015611d005780601f10611cd557610100808354040283529160200191611d00565b820191906000526020600020905b815481529060010190602001808311611ce357829003601f168201915b505091505060006040518083038185875af19250505015611d4d57827f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611d98565b827f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008260030160006101000a81548160ff0219169083151502179055505b5b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611dc557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611e84929190611f6e565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b815481835581811511611f1557818360005260206000209182019101611f149190611fee565b5b505050565b815481835581811511611f4157818360005260206000209182019101611f409190611fee565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611faf57805160ff1916838001178555611fdd565b82800160010185558215611fdd579182015b82811115611fdc578251825591602001919060010190611fc1565b5b509050611fea9190611fee565b5090565b61201091905b8082111561200c576000816000905550600101611ff4565b5090565b905600a165627a7a723058203660a52c3e499e6033db3525fe242cdfa7a3faa0c09a1a3a16fc71bad2f485b20029", - "updated_at": 1522263990820, - "source_map": "186:11249:0:-;;;2814:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:6;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;186:11249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "source_map_runtime": "186:11249:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;186:11249;936:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;6274:291;;;;;;;;;;;;;;;;;;;;;;;;;;890:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;9833:575;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;5806:344;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6679:474;;;;;;;;;;;;;;;;;;;;;;;;;;936:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;6274:291::-;6357:10;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;6387:13;6402:10;1694:13;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;6434:13;1976:12;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;6506:5;6463:13;:28;6477:13;6463:28;;;;;;;;;;;:40;6492:10;6463:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;6544:13;6532:10;6521:37;;;;;;;;;;;;1758:1;1463;;6274:291;;:::o;890:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9136:319::-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;3311:277::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;8622:252::-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;9833:575::-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;5806:344::-;5889:10;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;5927:13;1581:1;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;5963:13;5978:10;1843:13;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;6047:4;6004:13;:28;6018:13;6004:28;;;;;;;;;;;:40;6033:10;6004:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;6086:13;6074:10;6061:39;;;;;;;;;;;;6110:33;6129:13;6110:18;:33::i;:::-;1611:1;;1463;5806:344;;:::o;5456:244::-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;217:41::-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;6679:474::-;6837:14;6762:13;1976:12;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;6795:26;6807:13;6795:11;:26::i;:::-;6791:356;;;6854:12;:27;6867:13;6854:27;;;;;;;;;;;6837:44;;6909:4;6895:2;:11;;;:18;;;;;;;;;;;;;;;;;;6931:2;:14;;;;;;;;;;;;:19;;6957:2;:8;;;6967:2;:7;;6931:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6927:210;;;7003:13;6993:24;;;;;;;;;;6927:210;;;7071:13;7054:31;;;;;;;;;;7117:5;7103:2;:11;;;:19;;;;;;;;;;;;;;;;;;6927:210;6791:356;6679:474;;;:::o;7974:451::-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;186:11249::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "MultiSigWallet.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json deleted file mode 100644 index e688afae1..000000000 --- a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLock.json +++ /dev/null @@ -1,633 +0,0 @@ -{ - "contract_name": "MultiSigWalletWithTimeLock", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x73f2aeb4c300248f7c2c851b085e41525007202decc34831880688f1aee6e126", - "source_tree_hash": "0xbb079315d5a2798ed8399ea2a110cefcc083e33684ad5f5698cd3f582568c4c6", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "revokeConfirmation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "address" - } - ], - "name": "confirmations", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secondsTimeLocked", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_secondsTimeLocked", - "type": "uint256" - } - ], - "name": "changeTimeLock", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "transactions", - "outputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "executed", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "from", - "type": "uint256" - }, - { - "name": "to", - "type": "uint256" - }, - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionIds", - "outputs": [ - { - "name": "_transactionIds", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmations", - "outputs": [ - { - "name": "_confirmations", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "transactionCount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_required", - "type": "uint256" - } - ], - "name": "changeRequirement", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "submitTransaction", - "outputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "confirmationTimes", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MAX_OWNER_COUNT", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "required", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_required", - "type": "uint256" - }, - { - "name": "_secondsTimeLocked", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - }, - { - "indexed": false, - "name": "confirmationTime", - "type": "uint256" - } - ], - "name": "ConfirmationTimeSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "secondsTimeLocked", - "type": "uint256" - } - ], - "name": "TimeLockChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Confirmation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Revocation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Submission", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Execution", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "ExecutionFailure", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerAddition", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerRemoval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "required", - "type": "uint256" - } - ], - "name": "RequirementChange", - "type": "event" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b6040516200250a3803806200250a833981016040528080518201919060200180519060200190919080519060200190919050508282600082518260328211806200005957508181115b80620000655750600081145b80620000715750600082145b156200007c57600080fd5b600092505b8451831015620001b3576002600086858151811015156200009e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806200012a5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200013557600080fd5b60016002600087868151811015156200014a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000081565b8460039080519060200190620001cb929190620001e8565b5083600481905550505050505080600681905550505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b61223d80620002cd6000396000f30060606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610198578063173825d9146101fb57806320ea8d86146102345780632f54bf6e146102575780633411c81c146102a857806337bd78a014610302578063547415251461032b5780637065cb481461036f578063784547a7146103a85780637ad28c51146103e35780638b51d13f146104065780639ace38c21461043d578063a0e67e2b1461051e578063a8abe69a14610588578063b5dc40c31461061f578063b77bf60014610697578063ba51a6df146106c0578063c01a8c84146106e3578063c642747414610706578063d38f2d821461079f578063d74f8edd146107d6578063dc8452cd146107ff578063e20056e614610828578063ee22610b14610880575b6000341115610196573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101a357600080fd5b6101b960048080359060200190919050506108a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561020657600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108e2565b005b341561023f57600080fd5b6102556004808035906020019091905050610b7e565b005b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d3b565b604051808215151515815260200191505060405180910390f35b34156102b357600080fd5b6102e8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d5b565b604051808215151515815260200191505060405180910390f35b341561030d57600080fd5b610315610d8a565b6040518082815260200191505060405180910390f35b341561033657600080fd5b610359600480803515159060200190919080351515906020019091905050610d90565b6040518082815260200191505060405180910390f35b341561037a57600080fd5b6103a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e22565b005b34156103b357600080fd5b6103c96004808035906020019091905050611018565b604051808215151515815260200191505060405180910390f35b34156103ee57600080fd5b61040460048080359060200190919050506110fe565b005b341561041157600080fd5b6104276004808035906020019091905050611179565b6040518082815260200191505060405180910390f35b341561044857600080fd5b61045e6004808035906020019091905050611245565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104e05780820151818401526020810190506104c5565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b341561052957600080fd5b61053161133a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610574578082015181840152602081019050610559565b505050509050019250505060405180910390f35b341561059357600080fd5b6105c86004808035906020019091908035906020019091908035151590602001909190803515159060200190919050506113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561060b5780820151818401526020810190506105f0565b505050509050019250505060405180910390f35b341561062a57600080fd5b610640600480803590602001909190505061152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610683578082015181840152602081019050610668565b505050509050019250505060405180910390f35b34156106a257600080fd5b6106aa611754565b6040518082815260200191505060405180910390f35b34156106cb57600080fd5b6106e1600480803590602001909190505061175a565b005b34156106ee57600080fd5b610704600480803590602001909190505061180c565b005b341561071157600080fd5b610789600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b6040518082815260200191505060405180910390f35b34156107aa57600080fd5b6107c06004808035906020019091905050611a2b565b6040518082815260200191505060405180910390f35b34156107e157600080fd5b6107e9611a43565b6040518082815260200191505060405180910390f35b341561080a57600080fd5b610812611a48565b6040518082815260200191505060405180910390f35b341561083357600080fd5b61087e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b341561088b57600080fd5b6108a16004808035906020019091905050611d63565b005b6003818154811015156108b257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091e57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561097757600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610aff578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610af2576003600160038054905003815481101515610a6957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610aa457fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aff565b81806001019250506109d4565b6001600381818054905003915081610b1791906120ec565b506003805490506004541115610b3657610b3560038054905061175a565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bd757600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c4257600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610c7057600080fd5b84610c7a81611018565b151515610c8657600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610e1b57838015610dcf575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610e025750828015610e01575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e0e576001820191505b8080600101915050610d98565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5c57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eb457600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610ed957600080fd5b6001600380549050016004546032821180610ef357508181115b80610efe5750600081145b80610f095750600082145b15610f1357600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610f7f9190612118565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110f65760016000858152602001908152602001600020600060038381548110151561105657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110d6576001820191505b6004548214156110e957600192506110f7565b8080600101915050611025565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561113857600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b60038054905081101561123f576001600084815260200190815260200160002060006003838154811015156111b257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611232576001820191505b8080600101915050611181565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611342612144565b60038054806020026020016040519081016040528092919081815260200182805480156113c457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161137a575b5050505050905090565b6113d6612158565b6113de612158565b6000806005546040518059106113f15750595b9080825280602002602001820160405250925060009150600090505b6005548110156114ad57858015611444575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806114775750848015611476575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114a05780838381518110151561148b57fe5b90602001906020020181815250506001820191505b808060010191505061140d565b8787036040518059106114bd5750595b908082528060200260200182016040525093508790505b8681101561151f5782818151811015156114ea57fe5b906020019060200201518489830381518110151561150457fe5b906020019060200201818152505080806001019150506114d4565b505050949350505050565b611532612144565b61153a612144565b6000806003805490506040518059106115505750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156116af5760016000868152602001908152602001600020600060038381548110151561159d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116a25760038181548110151561162557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561165f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061156c565b816040518059106116bd5750595b90808252806020026020018201604052509350600090505b8181101561174c5782818151811015156116eb57fe5b90602001906020020151848281518110151561170357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506116d5565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179457600080fd5b6003805490508160328211806117a957508181115b806117b45750600081145b806117bf5750600082145b156117c957600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561186557600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118bf57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561192957600080fd5b8461193381611018565b15151561193f57600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36119f486611018565b15611a0457611a038642611f48565b5b505050505050565b6000611a19848484611f9c565b9050611a248161180c565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ae357600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b3b57600080fd5b600092505b600380549050831015611c26578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611b7357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c195783600384815481101515611bcb57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26565b8280600101935050611b40565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611d9357600080fd5b82611d9d81611018565b1515611da857600080fd5b836006546007600083815260200190815260200160002054014210151515611dcf57600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460010154856002016040518082805460018160011615610100020316600290048015611ea95780601f10611e7e57610100808354040283529160200191611ea9565b820191906000526020600020905b815481529060010190602001808311611e8c57829003601f168201915b505091505060006040518083038185875af19250505015611ef657847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f41565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611fc357600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061208292919061216c565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b8154818355818115116121135781836000526020600020918201910161211291906121ec565b5b505050565b81548183558181151161213f5781836000526020600020918201910161213e91906121ec565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121ad57805160ff19168380011785556121db565b828001600101855582156121db579182015b828111156121da5782518255916020019190600101906121bf565b5b5090506121e891906121ec565b5090565b61220e91905b8082111561220a5760008160009055506001016121f2565b5090565b905600a165627a7a723058205bc5a07e35918a4112ecdd9be6ec87c69df2616baae15eda51ab262a394d89db0029", - "runtime_bytecode": "0x60606040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610198578063173825d9146101fb57806320ea8d86146102345780632f54bf6e146102575780633411c81c146102a857806337bd78a014610302578063547415251461032b5780637065cb481461036f578063784547a7146103a85780637ad28c51146103e35780638b51d13f146104065780639ace38c21461043d578063a0e67e2b1461051e578063a8abe69a14610588578063b5dc40c31461061f578063b77bf60014610697578063ba51a6df146106c0578063c01a8c84146106e3578063c642747414610706578063d38f2d821461079f578063d74f8edd146107d6578063dc8452cd146107ff578063e20056e614610828578063ee22610b14610880575b6000341115610196573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101a357600080fd5b6101b960048080359060200190919050506108a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561020657600080fd5b610232600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108e2565b005b341561023f57600080fd5b6102556004808035906020019091905050610b7e565b005b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d3b565b604051808215151515815260200191505060405180910390f35b34156102b357600080fd5b6102e8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d5b565b604051808215151515815260200191505060405180910390f35b341561030d57600080fd5b610315610d8a565b6040518082815260200191505060405180910390f35b341561033657600080fd5b610359600480803515159060200190919080351515906020019091905050610d90565b6040518082815260200191505060405180910390f35b341561037a57600080fd5b6103a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e22565b005b34156103b357600080fd5b6103c96004808035906020019091905050611018565b604051808215151515815260200191505060405180910390f35b34156103ee57600080fd5b61040460048080359060200190919050506110fe565b005b341561041157600080fd5b6104276004808035906020019091905050611179565b6040518082815260200191505060405180910390f35b341561044857600080fd5b61045e6004808035906020019091905050611245565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104e05780820151818401526020810190506104c5565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b341561052957600080fd5b61053161133a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610574578082015181840152602081019050610559565b505050509050019250505060405180910390f35b341561059357600080fd5b6105c86004808035906020019091908035906020019091908035151590602001909190803515159060200190919050506113ce565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561060b5780820151818401526020810190506105f0565b505050509050019250505060405180910390f35b341561062a57600080fd5b610640600480803590602001909190505061152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610683578082015181840152602081019050610668565b505050509050019250505060405180910390f35b34156106a257600080fd5b6106aa611754565b6040518082815260200191505060405180910390f35b34156106cb57600080fd5b6106e1600480803590602001909190505061175a565b005b34156106ee57600080fd5b610704600480803590602001909190505061180c565b005b341561071157600080fd5b610789600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a0c565b6040518082815260200191505060405180910390f35b34156107aa57600080fd5b6107c06004808035906020019091905050611a2b565b6040518082815260200191505060405180910390f35b34156107e157600080fd5b6107e9611a43565b6040518082815260200191505060405180910390f35b341561080a57600080fd5b610812611a48565b6040518082815260200191505060405180910390f35b341561083357600080fd5b61087e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a4e565b005b341561088b57600080fd5b6108a16004808035906020019091905050611d63565b005b6003818154811015156108b257fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091e57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561097757600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610aff578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a0a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610af2576003600160038054905003815481101515610a6957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610aa457fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aff565b81806001019250506109d4565b6001600381818054905003915081610b1791906120ec565b506003805490506004541115610b3657610b3560038054905061175a565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bd757600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c4257600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610c7057600080fd5b84610c7a81611018565b151515610c8657600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610e1b57838015610dcf575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610e025750828015610e01575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e0e576001820191505b8080600101915050610d98565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5c57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610eb457600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415610ed957600080fd5b6001600380549050016004546032821180610ef357508181115b80610efe5750600081145b80610f095750600082145b15610f1357600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610f7f9190612118565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110f65760016000858152602001908152602001600020600060038381548110151561105657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110d6576001820191505b6004548214156110e957600192506110f7565b8080600101915050611025565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561113857600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b60038054905081101561123f576001600084815260200190815260200160002060006003838154811015156111b257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611232576001820191505b8080600101915050611181565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561131d5780601f106112f25761010080835404028352916020019161131d565b820191906000526020600020905b81548152906001019060200180831161130057829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b611342612144565b60038054806020026020016040519081016040528092919081815260200182805480156113c457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161137a575b5050505050905090565b6113d6612158565b6113de612158565b6000806005546040518059106113f15750595b9080825280602002602001820160405250925060009150600090505b6005548110156114ad57858015611444575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806114775750848015611476575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114a05780838381518110151561148b57fe5b90602001906020020181815250506001820191505b808060010191505061140d565b8787036040518059106114bd5750595b908082528060200260200182016040525093508790505b8681101561151f5782818151811015156114ea57fe5b906020019060200201518489830381518110151561150457fe5b906020019060200201818152505080806001019150506114d4565b505050949350505050565b611532612144565b61153a612144565b6000806003805490506040518059106115505750595b9080825280602002602001820160405250925060009150600090505b6003805490508110156116af5760016000868152602001908152602001600020600060038381548110151561159d57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156116a25760038181548110151561162557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838381518110151561165f57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061156c565b816040518059106116bd5750595b90808252806020026020018201604052509350600090505b8181101561174c5782818151811015156116eb57fe5b90602001906020020151848281518110151561170357fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806001019150506116d5565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561179457600080fd5b6003805490508160328211806117a957508181115b806117b45750600081145b806117bf5750600082145b156117c957600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561186557600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118bf57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561192957600080fd5b8461193381611018565b15151561193f57600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a36119f486611018565b15611a0457611a038642611f48565b5b505050505050565b6000611a19848484611f9c565b9050611a248161180c565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a8a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ae357600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611b3b57600080fd5b600092505b600380549050831015611c26578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611b7357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c195783600384815481101515611bcb57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c26565b8280600101935050611b40565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff1615611d9357600080fd5b82611d9d81611018565b1515611da857600080fd5b836006546007600083815260200190815260200160002054014210151515611dcf57600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460010154856002016040518082805460018160011615610100020316600290048015611ea95780601f10611e7e57610100808354040283529160200191611ea9565b820191906000526020600020905b815481529060010190602001808311611e8c57829003601f168201915b505091505060006040518083038185875af19250505015611ef657847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f41565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff161415611fc357600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061208292919061216c565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b8154818355818115116121135781836000526020600020918201910161211291906121ec565b5b505050565b81548183558181151161213f5781836000526020600020918201910161213e91906121ec565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121ad57805160ff19168380011785556121db565b828001600101855582156121db579182015b828111156121da5782518255916020019190600101906121bf565b5b5090506121e891906121ec565b5090565b61220e91905b8082111561220a5760008160009055506001016121f2565b5090565b905600a165627a7a723058205bc5a07e35918a4112ecdd9be6ec87c69df2616baae15eda51ab262a394d89db0029", - "updated_at": 1522263993736, - "source_map": "855:3594:1:-;;;1904:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:7;2047:9;2959:6:0;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;2092:18:1;2072:17;:38;;;;1904:213;;;855:3594;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "source_map_runtime": "855:3594:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1:0;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;855:3594:1;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:332:1;;;;;;;;;;;;;;;;;;;;;;;;;;890:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:186:1;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;9833:575;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;2613:459:1;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3642:472:1;;;;;;;;;;;;;;;;;;;;;;;;;;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;3196:332:1:-;3279:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3309:13:1;3324:10;1694:13:0;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;3356:13:1;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3397:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;3469:5;3426:13;:28;3440:13;3426:28;;;;;;;;;;;:40;3455:10;3426:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;3507:13;3495:10;3484:37;;;;;;;;;;;;2041:1:0;1758;1463;;3196:332:1;;:::o;890:40:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1049:29:1:-;;;;:::o;9136:319:0:-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;3311:277::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;2321:186:1:-;1208:4:0;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;2438:18:1;2418:17;:38;;;;2466:34;2481:18;2466:34;;;;;;;;;;;;;;;;;;2321:186;:::o;8622:252:0:-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;9833:575::-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;2613:459:1:-;2696:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;2734:13:1;1581:1:0;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;2770:13:1;2785:10;1843:13:0;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;2823:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;2895:4;2852:13;:28;2866:13;2852:28;;;;;;;;;;;:40;2881:10;2852:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;2934:13;2922:10;2909:39;;;;;;;;;;;;2962:26;2974:13;2962:11;:26::i;:::-;2958:108;;;3004:51;3024:13;3039:15;3004:19;:51::i;:::-;2958:108;1907:1:0;1611;;1463;2613:459:1;;:::o;5456:244:0:-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;1085:47:1:-;;;;;;;;;;;;;;;;;:::o;217:41:0:-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;3642:472:1:-;3828:22;3725:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3763:13:1;1318:26;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;3799:13;1483:17;;1448;:32;1466:13;1448:32;;;;;;;;;;;;:52;1429:15;:71;;1421:80;;;;;;;;3853:12;:27;3866:13;3853:27;;;;;;;;;;;3828:52;;3904:4;3890:2;:11;;;:18;;;;;;;;;;;;;;;;;;3922:2;:14;;;;;;;;;;;;:19;;3948:2;:8;;;3958:2;:7;;3922:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3918:190;;;3990:13;3980:24;;;;;;;;;;3918:190;;;4050:13;4033:31;;;;;;;;;;4092:5;4078:2;:11;;;:19;;;;;;;;;;;;;;;;;;3918:190;1355:1;2041::0;3642:472:1;;;:::o;4224:223::-;4362:16;4327:17;:32;4345:13;4327:32;;;;;;;;;;;:51;;;;4408:13;4388:52;4423:16;4388:52;;;;;;;;;;;;;;;;;;4224:223;;:::o;7974:451:0:-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;855:3594:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "MultiSigWallet/MultiSigWallet.sol", - "MultiSigWalletWithTimeLock.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json b/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json deleted file mode 100644 index 33f651e31..000000000 --- a/packages/0x.js/test/artifacts/MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.json +++ /dev/null @@ -1,687 +0,0 @@ -{ - "contract_name": "MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xda08395db72af1130287a88849e0cf0c895eb7c98e41483df3a4d457ca832910", - "source_tree_hash": "0x22f98f4bdfb835e87b3541309d2163fc6ef5da91bf84f4304b9b1052c93dfb0d", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "revokeConfirmation", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "address" - } - ], - "name": "confirmations", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secondsTimeLocked", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "data", - "type": "bytes" - } - ], - "name": "isFunctionRemoveAuthorizedAddress", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "executeRemoveAuthorizedAddress", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_secondsTimeLocked", - "type": "uint256" - } - ], - "name": "changeTimeLock", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "count", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "transactions", - "outputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "executed", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "from", - "type": "uint256" - }, - { - "name": "to", - "type": "uint256" - }, - { - "name": "pending", - "type": "bool" - }, - { - "name": "executed", - "type": "bool" - } - ], - "name": "getTransactionIds", - "outputs": [ - { - "name": "_transactionIds", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "TOKEN_TRANSFER_PROXY_CONTRACT", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "getConfirmations", - "outputs": [ - { - "name": "_confirmations", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "transactionCount", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_required", - "type": "uint256" - } - ], - "name": "changeRequirement", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "destination", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "submitTransaction", - "outputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "confirmationTimes", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MAX_OWNER_COUNT", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "required", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "transactionId", - "type": "uint256" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_required", - "type": "uint256" - }, - { - "name": "_secondsTimeLocked", - "type": "uint256" - }, - { - "name": "_tokenTransferProxy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - }, - { - "indexed": false, - "name": "confirmationTime", - "type": "uint256" - } - ], - "name": "ConfirmationTimeSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "secondsTimeLocked", - "type": "uint256" - } - ], - "name": "TimeLockChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Confirmation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Revocation", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Submission", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "Execution", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "transactionId", - "type": "uint256" - } - ], - "name": "ExecutionFailure", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerAddition", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - } - ], - "name": "OwnerRemoval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "required", - "type": "uint256" - } - ], - "name": "RequirementChange", - "type": "event" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b60405162002ad238038062002ad2833981016040528080518201919060200180519060200190919080519060200190919080519060200190919050508383838282600082518260328211806200006557508181115b80620000715750600081145b806200007d5750600082145b156200008857600080fd5b600092505b8451831015620001bf57600260008685815181101515620000aa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680620001365750600085848151811015156200011457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16145b156200014157600080fd5b60016002600087868151811015156200015657fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082806001019350506200008d565b8460039080519060200190620001d792919062000239565b508360048190555050505050508060068190555050505080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506200030e565b828054828255906000526020600020908101928215620002b5579160200282015b82811115620002b45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200025a565b5b509050620002c49190620002c8565b5090565b6200030b91905b808211156200030757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620002cf565b5090565b90565b6127b4806200031e6000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101b9578063173825d91461021c57806320ea8d86146102555780632f54bf6e146102785780633411c81c146102c957806337bd78a014610323578063547415251461034c578063553a48fd146103905780635711b311146104055780637065cb4814610428578063784547a7146104615780637ad28c511461049c5780638b51d13f146104bf5780639ace38c2146104f6578063a0e67e2b146105d7578063a8abe69a14610641578063add1cbc5146106d8578063b5dc40c31461072d578063b77bf600146107a5578063ba51a6df146107ce578063c01a8c84146107f1578063c642747414610814578063d38f2d82146108ad578063d74f8edd146108e4578063dc8452cd1461090d578063e20056e614610936578063ee22610b1461098e575b60003411156101b7573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101c457600080fd5b6101da60048080359060200190919050506109b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f0565b005b341561026057600080fd5b6102766004808035906020019091905050610c8c565b005b341561028357600080fd5b6102af600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e49565b604051808215151515815260200191505060405180910390f35b34156102d457600080fd5b610309600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e69565b604051808215151515815260200191505060405180910390f35b341561032e57600080fd5b610336610e98565b6040518082815260200191505060405180910390f35b341561035757600080fd5b61037a600480803515159060200190919080351515906020019091905050610e9e565b6040518082815260200191505060405180910390f35b341561039b57600080fd5b6103eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f30565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610426600480803590602001909190505061106d565b005b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611373565b005b341561046c57600080fd5b6104826004808035906020019091905050611569565b604051808215151515815260200191505060405180910390f35b34156104a757600080fd5b6104bd600480803590602001909190505061164f565b005b34156104ca57600080fd5b6104e060048080359060200190919050506116ca565b6040518082815260200191505060405180910390f35b341561050157600080fd5b6105176004808035906020019091905050611796565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561059957808201518184015260208101905061057e565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156105e257600080fd5b6105ea61188b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561062d578082015181840152602081019050610612565b505050509050019250505060405180910390f35b341561064c57600080fd5b61068160048080359060200190919080359060200190919080351515906020019091908035151590602001909190505061191f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106c45780820151818401526020810190506106a9565b505050509050019250505060405180910390f35b34156106e357600080fd5b6106eb611a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073857600080fd5b61074e6004808035906020019091905050611aa1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b34156107b057600080fd5b6107b8611ccb565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107ef6004808035906020019091905050611cd1565b005b34156107fc57600080fd5b6108126004808035906020019091905050611d83565b005b341561081f57600080fd5b610897600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f83565b6040518082815260200191505060405180910390f35b34156108b857600080fd5b6108ce6004808035906020019091905050611fa2565b6040518082815260200191505060405180910390f35b34156108ef57600080fd5b6108f7611fba565b6040518082815260200191505060405180910390f35b341561091857600080fd5b610920611fbf565b6040518082815260200191505060405180910390f35b341561094157600080fd5b61098c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fc5565b005b341561099957600080fd5b6109af60048080359060200190919050506122da565b005b6003818154811015156109c057fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2c57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610c0d578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610b1857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c00576003600160038054905003815481101515610b7757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610bb257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0d565b8180600101925050610ae2565b6001600381818054905003915081610c259190612663565b506003805490506004541115610c4457610c43600380549050611cd1565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce557600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d5057600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610d7e57600080fd5b84610d8881611569565b151515610d9457600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610f2957838015610edd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610f105750828015610f0f575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610f1c576001820191505b8080600101915050610ea6565b5092915050565b600080600060405180807f72656d6f7665417574686f72697a656441646472657373286164647265737329815250602001905060405180910390209150600090505b6004811015611062578181600481101515610f8957fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610fdc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561105557600080fd5b8080600101915050610f72565b600192505050919050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561109d57600080fd5b826110a781611569565b15156110b257600080fd5b8360008060008381526020019081526020016000209050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561114957600080fd5b6111ee816002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b5050505050610f30565b15156111f957600080fd5b600080878152602001908152602001600020945060018560030160006101000a81548160ff0219169083151502179055508460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685600101548660020160405180828054600181600116156101000203166002900480156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b505091505060006040518083038185875af1925050501561132057857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a261136b565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ad57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141561142a57600080fd5b600160038054905001600454603282118061144457508181115b8061144f5750600081145b8061145a5750600082145b1561146457600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380548060010182816114d0919061268f565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b600380549050811015611647576001600085815260200190815260200160002060006003838154811015156115a757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611627576001820191505b60045482141561163a5760019250611648565b8080600101915050611576565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168957600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b6003805490508110156117905760016000848152602001908152602001600020600060038381548110151561170357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611783576001820191505b80806001019150506116d2565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6118936126bb565b600380548060200260200160405190810160405280929190818152602001828054801561191557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118cb575b5050505050905090565b6119276126cf565b61192f6126cf565b6000806005546040518059106119425750595b9080825280602002602001820160405250925060009150600090505b6005548110156119fe57858015611995575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806119c857508480156119c7575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156119f1578083838151811015156119dc57fe5b90602001906020020181815250506001820191505b808060010191505061195e565b878703604051805910611a0e5750595b908082528060200260200182016040525093508790505b86811015611a70578281815181101515611a3b57fe5b9060200190602002015184898303815181101515611a5557fe5b90602001906020020181815250508080600101915050611a25565b505050949350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa96126bb565b611ab16126bb565b600080600380549050604051805910611ac75750595b9080825280602002602001820160405250925060009150600090505b600380549050811015611c2657600160008681526020019081526020016000206000600383815481101515611b1457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c1957600381815481101515611b9c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383815181101515611bd657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611ae3565b81604051805910611c345750595b90808252806020026020018201604052509350600090505b81811015611cc3578281815181101515611c6257fe5b906020019060200201518482815181101515611c7a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611c4c565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0b57600080fd5b600380549050816032821180611d2057508181115b80611d2b5750600081145b80611d365750600082145b15611d4057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ddc57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e3657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ea057600080fd5b84611eaa81611569565b151515611eb657600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a3611f6b86611569565b15611f7b57611f7a86426124bf565b5b505050505050565b6000611f90848484612513565b9050611f9b81611d83565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200157600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561205a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b257600080fd5b600092505b60038054905083101561219d578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156120ea57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612190578360038481548110151561214257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061219d565b82806001019350506120b7565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561230a57600080fd5b8261231481611569565b151561231f57600080fd5b83600654600760008381526020019081526020016000205401421015151561234657600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600101548560020160405180828054600181600116156101000203166002900480156124205780601f106123f557610100808354040283529160200191612420565b820191906000526020600020905b81548152906001019060200180831161240357829003601f168201915b505091505060006040518083038185875af1925050501561246d57847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a26124b8565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff16141561253a57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906125f99291906126e3565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b81548183558181151161268a578183600052602060002091820191016126899190612763565b5b505050565b8154818355818115116126b6578183600052602060002091820191016126b59190612763565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272457805160ff1916838001178555612752565b82800160010185558215612752579182015b82811115612751578251825591602001919060010190612736565b5b50905061275f9190612763565b5090565b61278591905b80821115612781576000816000905550600101612769565b5090565b905600a165627a7a72305820dd959439d9134dd17c9407ff2927ca034d0822eb2e39b8b5c1fca22c2808c6e00029", - "runtime_bytecode": "0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101b9578063173825d91461021c57806320ea8d86146102555780632f54bf6e146102785780633411c81c146102c957806337bd78a014610323578063547415251461034c578063553a48fd146103905780635711b311146104055780637065cb4814610428578063784547a7146104615780637ad28c511461049c5780638b51d13f146104bf5780639ace38c2146104f6578063a0e67e2b146105d7578063a8abe69a14610641578063add1cbc5146106d8578063b5dc40c31461072d578063b77bf600146107a5578063ba51a6df146107ce578063c01a8c84146107f1578063c642747414610814578063d38f2d82146108ad578063d74f8edd146108e4578063dc8452cd1461090d578063e20056e614610936578063ee22610b1461098e575b60003411156101b7573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34156101c457600080fd5b6101da60048080359060200190919050506109b1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561022757600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f0565b005b341561026057600080fd5b6102766004808035906020019091905050610c8c565b005b341561028357600080fd5b6102af600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e49565b604051808215151515815260200191505060405180910390f35b34156102d457600080fd5b610309600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610e69565b604051808215151515815260200191505060405180910390f35b341561032e57600080fd5b610336610e98565b6040518082815260200191505060405180910390f35b341561035757600080fd5b61037a600480803515159060200190919080351515906020019091905050610e9e565b6040518082815260200191505060405180910390f35b341561039b57600080fd5b6103eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f30565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610426600480803590602001909190505061106d565b005b341561043357600080fd5b61045f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611373565b005b341561046c57600080fd5b6104826004808035906020019091905050611569565b604051808215151515815260200191505060405180910390f35b34156104a757600080fd5b6104bd600480803590602001909190505061164f565b005b34156104ca57600080fd5b6104e060048080359060200190919050506116ca565b6040518082815260200191505060405180910390f35b341561050157600080fd5b6105176004808035906020019091905050611796565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b8381101561059957808201518184015260208101905061057e565b50505050905090810190601f1680156105c65780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34156105e257600080fd5b6105ea61188b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561062d578082015181840152602081019050610612565b505050509050019250505060405180910390f35b341561064c57600080fd5b61068160048080359060200190919080359060200190919080351515906020019091908035151590602001909190505061191f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106c45780820151818401526020810190506106a9565b505050509050019250505060405180910390f35b34156106e357600080fd5b6106eb611a7b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561073857600080fd5b61074e6004808035906020019091905050611aa1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b34156107b057600080fd5b6107b8611ccb565b6040518082815260200191505060405180910390f35b34156107d957600080fd5b6107ef6004808035906020019091905050611cd1565b005b34156107fc57600080fd5b6108126004808035906020019091905050611d83565b005b341561081f57600080fd5b610897600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f83565b6040518082815260200191505060405180910390f35b34156108b857600080fd5b6108ce6004808035906020019091905050611fa2565b6040518082815260200191505060405180910390f35b34156108ef57600080fd5b6108f7611fba565b6040518082815260200191505060405180910390f35b341561091857600080fd5b610920611fbf565b6040518082815260200191505060405180910390f35b341561094157600080fd5b61098c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611fc5565b005b341561099957600080fd5b6109af60048080359060200190919050506122da565b005b6003818154811015156109c057fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2c57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610a8557600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610c0d578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610b1857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610c00576003600160038054905003815481101515610b7757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610bb257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0d565b8180600101925050610ae2565b6001600381818054905003915081610c259190612663565b506003805490506004541115610c4457610c43600380549050611cd1565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ce557600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d5057600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff1615610d7e57600080fd5b84610d8881611569565b151515610d9457600080fd5b60006001600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a3505050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60065481565b600080600090505b600554811015610f2957838015610edd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610f105750828015610f0f575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610f1c576001820191505b8080600101915050610ea6565b5092915050565b600080600060405180807f72656d6f7665417574686f72697a656441646472657373286164647265737329815250602001905060405180910390209150600090505b6004811015611062578181600481101515610f8957fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181101515610fdc57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561105557600080fd5b8080600101915050610f72565b600192505050919050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561109d57600080fd5b826110a781611569565b15156110b257600080fd5b8360008060008381526020019081526020016000209050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561114957600080fd5b6111ee816002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b5050505050610f30565b15156111f957600080fd5b600080878152602001908152602001600020945060018560030160006101000a81548160ff0219169083151502179055508460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1685600101548660020160405180828054600181600116156101000203166002900480156112d35780601f106112a8576101008083540402835291602001916112d3565b820191906000526020600020905b8154815290600101906020018083116112b657829003601f168201915b505091505060006040518083038185875af1925050501561132057857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a261136b565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ad57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff16141561142a57600080fd5b600160038054905001600454603282118061144457508181115b8061144f5750600081145b8061145a5750600082145b1561146457600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600380548060010182816114d0919061268f565b9160005260206000209001600087909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b600380549050811015611647576001600085815260200190815260200160002060006003838154811015156115a757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611627576001820191505b60045482141561163a5760019250611648565b8080600101915050611576565b5b5050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168957600080fd5b806006819055507fd1c9101a34feff75cccef14a28785a0279cb0b49c1f321f21f5f422e746b4377816040518082815260200191505060405180910390a150565b600080600090505b6003805490508110156117905760016000848152602001908152602001600020600060038381548110151561170357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611783576001820191505b80806001019150506116d2565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561186e5780601f106118435761010080835404028352916020019161186e565b820191906000526020600020905b81548152906001019060200180831161185157829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6118936126bb565b600380548060200260200160405190810160405280929190818152602001828054801561191557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118cb575b5050505050905090565b6119276126cf565b61192f6126cf565b6000806005546040518059106119425750595b9080825280602002602001820160405250925060009150600090505b6005548110156119fe57858015611995575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806119c857508480156119c7575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156119f1578083838151811015156119dc57fe5b90602001906020020181815250506001820191505b808060010191505061195e565b878703604051805910611a0e5750595b908082528060200260200182016040525093508790505b86811015611a70578281815181101515611a3b57fe5b9060200190602002015184898303815181101515611a5557fe5b90602001906020020181815250508080600101915050611a25565b505050949350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611aa96126bb565b611ab16126bb565b600080600380549050604051805910611ac75750595b9080825280602002602001820160405250925060009150600090505b600380549050811015611c2657600160008681526020019081526020016000206000600383815481101515611b1457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611c1957600381815481101515611b9c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383815181101515611bd657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b8080600101915050611ae3565b81604051805910611c345750595b90808252806020026020018201604052509350600090505b81811015611cc3578281815181101515611c6257fe5b906020019060200201518482815181101515611c7a57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611c4c565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d0b57600080fd5b600380549050816032821180611d2057508181115b80611d2b5750600081145b80611d365750600082145b15611d4057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ddc57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e3657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ea057600080fd5b84611eaa81611569565b151515611eb657600080fd5b600180600088815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550853373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a3611f6b86611569565b15611f7b57611f7a86426124bf565b5b505050505050565b6000611f90848484612513565b9050611f9b81611d83565b9392505050565b60076020528060005260406000206000915090505481565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200157600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561205a57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b257600080fd5b600092505b60038054905083101561219d578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156120ea57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612190578360038481548110151561214257fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061219d565b82806001019350506120b7565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b60008160008082815260200190815260200160002060030160009054906101000a900460ff161561230a57600080fd5b8261231481611569565b151561231f57600080fd5b83600654600760008381526020019081526020016000205401421015151561234657600080fd5b600080868152602001908152602001600020935060018460030160006101000a81548160ff0219169083151502179055508360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684600101548560020160405180828054600181600116156101000203166002900480156124205780601f106123f557610100808354040283529160200191612420565b820191906000526020600020905b81548152906001019060200180831161240357829003601f168201915b505091505060006040518083038185875af1925050501561246d57847f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a26124b8565b847f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008460030160006101000a81548160ff0219169083151502179055505b5050505050565b806007600084815260200190815260200160002081905550817f0b237afe65f1514fd7ea3f923ea4fe792bdd07000a912b6cd1602a8e7f573c8d826040518082815260200191505060405180910390a25050565b60008360008173ffffffffffffffffffffffffffffffffffffffff16141561253a57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020190805190602001906125f99291906126e3565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b81548183558181151161268a578183600052602060002091820191016126899190612763565b5b505050565b8154818355818115116126b6578183600052602060002091820191016126b59190612763565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061272457805160ff1916838001178555612752565b82800160010185558215612752579182015b82811115612751578251825591602001919060010190612736565b5b50905061275f9190612763565b5090565b61278591905b80821115612781576000816000905550600101612769565b5090565b905600a165627a7a72305820dd959439d9134dd17c9407ff2927ca034d0822eb2e39b8b5c1fca22c2808c6e00029", - "updated_at": 1522263996823, - "source_map": "714:2422:2:-;;;1582:349;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:7;1828:9;1839:18;2038:7:1;2047:9;2959:6:0;2913:7;:14;2929:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;2966:1;2959:8;;2954:168;2971:7;:14;2969:1;:16;2954:168;;;3010:7;:19;3018:7;3026:1;3018:10;;;;;;;;;;;;;;;;;;3010:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;3047:1;3033:7;3041:1;3033:10;;;;;;;;;;;;;;;;;;:15;;;3010:38;3006:65;;;3066:5;;;3006:65;3107:4;3085:7;:19;3093:7;3101:1;3093:10;;;;;;;;;;;;;;;;;;3085:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2987:3;;;;;;;2954:168;;;3140:7;3131:6;:16;;;;;;;;;;;;:::i;:::-;;3168:9;3157:8;:20;;;;2814:370;;;;;2092:18:1;2072:17;:38;;;;1904:213;;;1905:19:2;1873:29;;:51;;;;;;;;;;;;;;;;;;1582:349;;;;714:2422;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "source_map_runtime": "714:2422:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:1:0;2507:9;:13;2503:61;;;2542:10;2534:30;;;2554:9;2534:30;;;;;;;;;;;;;;;;;;2503:61;714:2422:2;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3711:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:332:1;;;;;;;;;;;;;;;;;;;;;;;;;;890:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9136:319:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2774:360:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2058:502;;;;;;;;;;;;;;;;;;;;;;;;;;3311:277:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7304:337;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2321:186:1;;;;;;;;;;;;;;;;;;;;;;;;;;8622:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;765:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;765:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9539:115:0;;;;;;;;;;;;;;;;;10757:676;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10757:676:0;;;;;;;;;;;;;;;;;816:44:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:575:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9833:575:0;;;;;;;;;;;;;;;;;991:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:207;;;;;;;;;;;;;;;;;;;;;;;;;;2613:459:1;;;;;;;;;;;;;;;;;;;;;;;;;;5456:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;217:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4370:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3642:472:1;;;;;;;;;;;;;;;;;;;;;;;;;;936:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3711:460::-;3859:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3801:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3839:5;3822:7;:14;3830:5;3822:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;3866:1;3859:8;;3854:170;3887:1;3871:6;:13;;;;:17;3869:1;:19;3854:170;;;3924:5;3911:18;;:6;3918:1;3911:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;3907:117;;;3961:6;3984:1;3968:6;:13;;;;:17;3961:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3949:6;3956:1;3949:9;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;4004:5;;3907:117;3890:3;;;;;;;3854:170;;;4050:1;4033:6;:18;;;;;;;;;;;;;;:::i;:::-;;4076:6;:13;;;;4065:8;;:24;4061:74;;;4103:32;4121:6;:13;;;;4103:17;:32::i;:::-;4061:74;4158:5;4145:19;;;;;;;;;;;;1242:1;3711:460;;:::o;3196:332:1:-;3279:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;3309:13:1;3324:10;1694:13:0;:28;1708:13;1694:28;;;;;;;;;;;:35;1723:5;1694:35;;;;;;;;;;;;;;;;;;;;;;;;;1693:36;1689:59;;;1743:5;;;1689:59;3356:13:1;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3397:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;3469:5;3426:13;:28;3440:13;3426:28;;;;;;;;;;;:40;3455:10;3426:40;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;3507:13;3495:10;3484:37;;;;;;;;;;;;2041:1:0;1758;1463;;3196:332:1;;:::o;890:40:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;820:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1049:29:1:-;;;;:::o;9136:319:0:-;9243:10;9274:6;9281:1;9274:8;;9269:179;9286:16;;9284:1;:18;9269:179;;;9328:7;:36;;;;;9340:12;:15;9353:1;9340:15;;;;;;;;;;;:24;;;;;;;;;;;;9339:25;9328:36;:92;;;;9384:8;:36;;;;;9396:12;:15;9409:1;9396:15;;;;;;;;;;;:24;;;;;;;;;;;;9384:36;9328:92;9321:127;;;9447:1;9438:10;;;;9321:127;9304:3;;;;;;;9269:179;;;9136:319;;;;;:::o;2774:360:2:-;2878:4;2898:39;3003:6;2947:40;;;;;;;;;;;;;;;;;;;2898:90;;3012:1;3003:10;;2998:109;3019:1;3015;:5;2998:109;;;3060:32;3093:1;3060:35;;;;;;;;;;;;3049:46;;;:4;3054:1;3049:7;;;;;;;;;;;;;;;;;;;;:46;;;;3041:55;;;;;;;;3022:3;;;;;;;2998:109;;;3123:4;3116:11;;2774:360;;;;;:::o;2058:502::-;2274:22;2153:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;2191:13:2;1318:26:1;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;2245:13:2;937:22;962:12;:27;975:13;962:27;;;;;;;;;;;937:52;;1025:29;;;;;;;;;;;1007:47;;:2;:14;;;;;;;;;;;;:47;;;999:56;;;;;;;;1073:42;1107:2;:7;;1073:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;:42::i;:::-;1065:51;;;;;;;;2299:12;:27;2312:13;2299:27;;;;;;;;;;;2274:52;;2350:4;2336:2;:11;;;:18;;;;;;;;;;;;;;;;;;2368:2;:14;;;;;;;;;;;;:19;;2394:2;:8;;;2404:2;:7;;2368:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:190;;;2436:13;2426:24;;;;;;;;;;2364:190;;;2496:13;2479:31;;;;;;;;;;2538:5;2524:2;:11;;;:19;;;;;;;;;;;;;;;;;;2364:190;1355:1:1;;2041::0;2058:502:2;;;:::o;3311:277:0:-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;3404:5;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;3427:5;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;3475:1;3459:6;:13;;;;:17;3478:8;;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;3519:4;3502:7;:14;3510:5;3502:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;3533:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;3545:5;3533:18;;;;;;;;;;;;;;;;;;;;;;;3575:5;3561:20;;;;;;;;;;;;2146:1;;1355;1242;3311:277;:::o;7304:337::-;7394:4;7414:10;7443:6;7427:1;7414:14;;7450:1;7443:8;;7438:197;7455:6;:13;;;;7453:1;:15;7438:197;;;7493:13;:28;7507:13;7493:28;;;;;;;;;;;:39;7522:6;7529:1;7522:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;7493:39;;;;;;;;;;;;;;;;;;;;;;;;;7489:71;;;7559:1;7550:10;;;;7489:71;7587:8;;7578:5;:17;7574:50;;;7620:4;7613:11;;;;7574:50;7470:3;;;;;;;7438:197;;;7304:337;;;;;;:::o;2321:186:1:-;1208:4:0;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;2438:18:1;2418:17;:38;;;;2466:34;2481:18;2466:34;;;;;;;;;;;;;;;;;;2321:186;:::o;8622:252:0:-;8721:10;8752:6;8759:1;8752:8;;8747:120;8764:6;:13;;;;8762:1;:15;8747:120;;;8800:13;:28;8814:13;8800:28;;;;;;;;;;;:39;8829:6;8836:1;8829:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;8800:39;;;;;;;;;;;;;;;;;;;;;;;;;8796:71;;;8866:1;8857:10;;;;8796:71;8779:3;;;;;;;8747:120;;;8622:252;;;;:::o;765:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9539:115::-;9609:9;;:::i;:::-;9641:6;9634:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9539:115;:::o;10757:676::-;10882:22;;:::i;:::-;10920:32;;:::i;:::-;10993:10;11017:6;10966:16;;10955:28;;;;;;;;;;;;;;;;;;;;;;;;10920:63;;11006:1;10993:14;;11040:1;11038:3;;11033:250;11045:16;;11043:1;:18;11033:250;;;11087:7;:36;;;;;11099:12;:15;11112:1;11099:15;;;;;;;;;;;:24;;;;;;;;;;;;11098:25;11087:36;:92;;;;11143:8;:36;;;;;11155:12;:15;11168:1;11155:15;;;;;;;;;;;:24;;;;;;;;;;;;11143:36;11087:92;11080:203;;;11239:1;11211:18;11230:5;11211:25;;;;;;;;;;;;;;;;;:29;;;;;11267:1;11258:10;;;;11080:203;11063:3;;;;;;;11033:250;;;11326:4;11321:2;:9;11310:21;;;;;;;;;;;;;;;;;;;;;;;;11292:39;;11348:4;11346:6;;11341:85;11356:2;11354:1;:4;11341:85;;;11405:18;11424:1;11405:21;;;;;;;;;;;;;;;;;;11377:15;11397:4;11393:1;:8;11377:25;;;;;;;;;;;;;;;;;:49;;;;;11360:3;;;;;;;11341:85;;;10757:676;;;;;;;;;:::o;816:44:2:-;;;;;;;;;;;;;:::o;9833:575:0:-;9928:24;;:::i;:::-;9968:34;;:::i;:::-;10043:10;10067:6;10019;:13;;;;10005:28;;;;;;;;;;;;;;;;;;;;;;;;9968:65;;10056:1;10043:14;;10090:1;10088:3;;10083:186;10095:6;:13;;;;10093:1;:15;10083:186;;;10131:13;:28;10145:13;10131:28;;;;;;;;;;;:39;10160:6;10167:1;10160:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10131:39;;;;;;;;;;;;;;;;;;;;;;;;;10127:142;;;10217:6;10224:1;10217:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:17;10208:5;10190:24;;;;;;;;;;;;;;;;;:36;;;;;;;;;;;10253:1;10244:10;;;;10127:142;10110:3;;;;;;;10083:186;;;10309:5;10295:20;;;;;;;;;;;;;;;;;;;;;;;;10278:37;;10332:1;10330:3;;10325:76;10337:5;10335:1;:7;10325:76;;;10381:17;10399:1;10381:20;;;;;;;;;;;;;;;;;;10361:14;10376:1;10361:17;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;10344:3;;;;;;;10325:76;;;9833:575;;;;;;:::o;991:28::-;;;;:::o;4990:207::-;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;5092:6;:13;;;;5107:9;256:2;2236:10;:28;:66;;;;2292:10;2280:9;:22;2236:66;:96;;;;2331:1;2318:9;:14;2236:96;:127;;;;2362:1;2348:10;:15;2236:127;2229:153;;;2377:5;;;2229:153;5143:9;5132:8;:20;;;;5162:28;5180:9;5162:28;;;;;;;;;;;;;;;;;;1242:1;;4990:207;:::o;2613:459:1:-;2696:10;1420:7:0;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;2734:13:1;1581:1:0;1538:12;:27;1551:13;1538:27;;;;;;;;;;;:39;;;;;;;;;;;;:44;;;1534:67;;;1596:5;;;1534:67;2770:13:1;2785:10;1843:13:0;:28;1857:13;1843:28;;;;;;;;;;;:35;1872:5;1843:35;;;;;;;;;;;;;;;;;;;;;;;;;1839:58;;;1892:5;;;1839:58;2823:13:1;1205:26;1217:13;1205:11;:26::i;:::-;1204:27;1196:36;;;;;;;;2895:4;2852:13;:28;2866:13;2852:28;;;;;;;;;;;:40;2881:10;2852:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;2934:13;2922:10;2909:39;;;;;;;;;;;;2962:26;2974:13;2962:11;:26::i;:::-;2958:108;;;3004:51;3024:13;3039:15;3004:19;:51::i;:::-;2958:108;1907:1:0;1611;;1463;2613:459:1;;:::o;5456:244:0:-;5560:18;5610:40;5625:11;5638:5;5645:4;5610:14;:40::i;:::-;5594:56;;5660:33;5679:13;5660:18;:33::i;:::-;5456:244;;;;;:::o;1085:47:1:-;;;;;;;;;;;;;;;;;:::o;217:41:0:-;256:2;217:41;:::o;965:20::-;;;;:::o;4370:449::-;4541:6;1208:4;1186:27;;:10;:27;;;;1182:50;;;1227:5;;;1182:50;4479:5;1420:7;:14;1428:5;1420:14;;;;;;;;;;;;;;;;;;;;;;;;;1419:15;1415:38;;;1448:5;;;1415:38;4512:8;1312:7;:14;1320:5;1312:14;;;;;;;;;;;;;;;;;;;;;;;;;1308:37;;;1340:5;;;1308:37;4548:1;4541:8;;4536:149;4553:6;:13;;;;4551:1;:15;4536:149;;;4602:5;4589:18;;:6;4596:1;4589:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;4585:100;;;4639:8;4627:6;4634:1;4627:9;;;;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4665:5;;4585:100;4568:3;;;;;;;4536:149;;;4711:5;4694:7;:14;4702:5;4694:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4746:4;4726:7;:17;4734:8;4726:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;4773:5;4760:19;;;;;;;;;;;;4803:8;4789:23;;;;;;;;;;;;1463:1;1242;4370:449;;;:::o;3642:472:1:-;3828:22;3725:13;1976:12:0;:27;1989:13;1976:27;;;;;;;;;;;:36;;;;;;;;;;;;1972:59;;;2026:5;;;1972:59;3763:13:1;1318:26;1330:13;1318:11;:26::i;:::-;1310:35;;;;;;;;3799:13;1483:17;;1448;:32;1466:13;1448:32;;;;;;;;;;;;:52;1429:15;:71;;1421:80;;;;;;;;3853:12;:27;3866:13;3853:27;;;;;;;;;;;3828:52;;3904:4;3890:2;:11;;;:18;;;;;;;;;;;;;;;;;;3922:2;:14;;;;;;;;;;;;:19;;3948:2;:8;;;3958:2;:7;;3922:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3918:190;;;3990:13;3980:24;;;;;;;;;;3918:190;;;4050:13;4033:31;;;;;;;;;;4092:5;4078:2;:11;;;:19;;;;;;;;;;;;;;;;;;3918:190;1355:1;2041::0;3642:472:1;;;:::o;4224:223::-;4362:16;4327:17;:32;4345:13;4327:32;;;;;;;;;;;:51;;;;4408:13;4388:52;4423:16;4388:52;;;;;;;;;;;;;;;;;;4224:223;;:::o;7974:451:0:-;8106:18;8076:11;2116:1;2104:8;:13;;;2100:36;;;2131:5;;;2100:36;8156:16;;8140:32;;8212:140;;;;;;;;;8251:11;8212:140;;;;;;8283:5;8212:140;;;;8308:4;8212:140;;;;8336:5;8212:140;;;;;8182:12;:27;8195:13;8182:27;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8382:1;8362:16;;:21;;;;;;;;;;;8404:13;8393:25;;;;;;;;;;7974:451;;;;;;:::o;714:2422:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "MultiSigWallet/MultiSigWallet.sol", - "MultiSigWalletWithTimeLock/MultiSigWalletWithTimeLock.sol", - "MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress.sol" - ], - "address": "0x34d402f14d58e001d8efbe6585051bf9706aa064", - "constructor_args": "0x0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000001dc4c1cefef38a777b15aa20260a54e584b16c4800000000000000000000000000000000000000000000000000000000000000020000000000000000000000005409ed021d9299bf6814279a6a1411a7e866a6310000000000000000000000006ecbe1db9ef729cbe972c83fb886247691fb6beb" - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/Token.json b/packages/0x.js/test/artifacts/Token.json deleted file mode 100644 index 435d33b59..000000000 --- a/packages/0x.js/test/artifacts/Token.json +++ /dev/null @@ -1,180 +0,0 @@ -{ - "contract_name": "Token", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xe43382be55ddb9c7a28567b4cc59e35072da198e6c49a90ff1396aa8399fd61e", - "source_tree_hash": "0xe43382be55ddb9c7a28567b4cc59e35072da198e6c49a90ff1396aa8399fd61e", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6102ac8061001e6000396000f30060606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610260565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610269565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610270565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610278565b6040518082815260200191505060405180910390f35b600092915050565b60009392505050565b6000919050565b600092915050565b6000929150505600a165627a7a723058209d6fd1f3f4667354203ad6c5c83162c9691e8018a5886cd8b91f45e2ed870d990029", - "runtime_bytecode": "0x60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007257806323b872dd146100cc57806370a0823114610145578063a9059cbb14610192578063dd62ed3e146101ec575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610258565b604051808215151515815260200191505060405180910390f35b34156100d757600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610260565b604051808215151515815260200191505060405180910390f35b341561015057600080fd5b61017c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610269565b6040518082815260200191505060405180910390f35b341561019d57600080fd5b6101d2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610270565b604051808215151515815260200191505060405180910390f35b34156101f757600080fd5b610242600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610278565b6040518082815260200191505060405180910390f35b600092915050565b60009392505050565b6000919050565b600092915050565b6000929150505600a165627a7a723058209d6fd1f3f4667354203ad6c5c83162c9691e8018a5886cd8b91f45e2ed870d990029", - "updated_at": 1522263986234, - "source_map": "26:1709:0:-;;;;;;;;;;;;;;;;;", - "source_map_runtime": "26:1709:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1037:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;278:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1037:72;1101:4;1037:72;;;;:::o;667:87::-;746:4;667:87;;;;;:::o;1218:64::-;1274:4;1218:64;;;:::o;278:68::-;338:4;278:68;;;;:::o;1490:82::-;1564:4;1490:82;;;;:::o", - "sources": [ - "Token.sol" - ] - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/TokenRegistry.json b/packages/0x.js/test/artifacts/TokenRegistry.json deleted file mode 100644 index b3c2994cf..000000000 --- a/packages/0x.js/test/artifacts/TokenRegistry.json +++ /dev/null @@ -1,565 +0,0 @@ -{ - "contract_name": "TokenRegistry", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xfaf2e3107cfafb9925c2ce51653c3f636bffff9e6528cc61c6341a3e27ca3c6b", - "source_tree_hash": "0x2ff7351f8fdae20562e116b42e3ec236c656ac1af71f7a62c8591627444bce40", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_index", - "type": "uint256" - } - ], - "name": "removeToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_name", - "type": "string" - } - ], - "name": "getTokenAddressByName", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_symbol", - "type": "string" - } - ], - "name": "getTokenAddressBySymbol", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_swarmHash", - "type": "bytes" - } - ], - "name": "setTokenSwarmHash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_token", - "type": "address" - } - ], - "name": "getTokenMetaData", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_name", - "type": "string" - }, - { - "name": "_symbol", - "type": "string" - }, - { - "name": "_decimals", - "type": "uint8" - }, - { - "name": "_ipfsHash", - "type": "bytes" - }, - { - "name": "_swarmHash", - "type": "bytes" - } - ], - "name": "addToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_name", - "type": "string" - } - ], - "name": "setTokenName", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "tokens", - "outputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "symbol", - "type": "string" - }, - { - "name": "decimals", - "type": "uint8" - }, - { - "name": "ipfsHash", - "type": "bytes" - }, - { - "name": "swarmHash", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "tokenAddresses", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_name", - "type": "string" - } - ], - "name": "getTokenByName", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTokenAddresses", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_ipfsHash", - "type": "bytes" - } - ], - "name": "setTokenIpfsHash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_symbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "string" - }, - { - "name": "", - "type": "uint8" - }, - { - "name": "", - "type": "bytes" - }, - { - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_token", - "type": "address" - }, - { - "name": "_symbol", - "type": "string" - } - ], - "name": "setTokenSymbol", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "name", - "type": "string" - }, - { - "indexed": false, - "name": "symbol", - "type": "string" - }, - { - "indexed": false, - "name": "decimals", - "type": "uint8" - }, - { - "indexed": false, - "name": "ipfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "swarmHash", - "type": "bytes" - } - ], - "name": "LogAddToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "name", - "type": "string" - }, - { - "indexed": false, - "name": "symbol", - "type": "string" - }, - { - "indexed": false, - "name": "decimals", - "type": "uint8" - }, - { - "indexed": false, - "name": "ipfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "swarmHash", - "type": "bytes" - } - ], - "name": "LogRemoveToken", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldName", - "type": "string" - }, - { - "indexed": false, - "name": "newName", - "type": "string" - } - ], - "name": "LogTokenNameChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldSymbol", - "type": "string" - }, - { - "indexed": false, - "name": "newSymbol", - "type": "string" - } - ], - "name": "LogTokenSymbolChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldIpfsHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "newIpfsHash", - "type": "bytes" - } - ], - "name": "LogTokenIpfsHashChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "token", - "type": "address" - }, - { - "indexed": false, - "name": "oldSwarmHash", - "type": "bytes" - }, - { - "indexed": false, - "name": "newSwarmHash", - "type": "bytes" - } - ], - "name": "LogTokenSwarmHashChange", - "type": "event" - } - ], - "bytecode": "0x6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ccb806100536000396000f3006060604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313baf1e6146100eb5780632fbfeba91461012d5780633550b6d9146101ca57806356318820146102675780637abccac9146102e35780638da5cb5b14610519578063a880319d1461056e578063c370c86d146106bf578063e48603391461073b578063e5df8b8414610971578063e73fc0c3146109d4578063ee8c24b814610c2e578063eef05f6514610c98578063efa74f1f14610d14578063f036417f14610f6e578063f2fde38b14610fea575b600080fd5b34156100f657600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611023565b005b341561013857600080fd5b610188600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611736565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d557600080fd5b610225600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027257600080fd5b6102e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611860565b005b34156102ee57600080fd5b61031a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611afc565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156103a4578082015181840152602081019050610389565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561040a5780820151818401526020810190506103ef565b50505050905090810190601f1680156104375780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610470578082015181840152602081019050610455565b50505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156104d65780820151818401526020810190506104bb565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561052457600080fd5b61052c611eb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ed5565b005b34156106ca57600080fd5b610739600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506126c9565b005b341561074657600080fd5b610772600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b6e565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156107fc5780820151818401526020810190506107e1565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610862578082015181840152602081019050610847565b50505050905090810190601f16801561088f5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156108c85780820151818401526020810190506108ad565b50505050905090810190601f1680156108f55780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561092e578082015181840152602081019050610913565b50505050905090810190601f16801561095b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561097c57600080fd5b6109926004808035906020019091905050612e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109df57600080fd5b610a2f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612e76565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610ab9578082015181840152602081019050610a9e565b50505050905090810190601f168015610ae65780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610b1f578082015181840152602081019050610b04565b50505050905090810190601f168015610b4c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b85578082015181840152602081019050610b6a565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610beb578082015181840152602081019050610bd0565b50505050905090810190601f168015610c185780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610c3957600080fd5b610c41612f49565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c84578082015181840152602081019050610c69565b505050509050019250505060405180910390f35b3415610ca357600080fd5b610d12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fdd565b005b3415610d1f57600080fd5b610d6f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613279565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610df9578082015181840152602081019050610dde565b50505050905090810190601f168015610e265780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610e5f578082015181840152602081019050610e44565b50505050905090810190601f168015610e8c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610f2b578082015181840152602081019050610f10565b50505050905090810190601f168015610f585780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610f7957600080fd5b610fe8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061334c565b005b3415610ff557600080fd5b611021600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137f1565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108057600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561111f57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1660048481548110151561114557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561119357600080fd5b60046001600480549050038154811015156111aa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004848154811015156111e557fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048181805490500391508161124691906138c6565b50600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f32c54f1e2ea75844ded7517e7dbcd3895da7cd0c28f9ab9f9cf6ecf5f83762c683600101846002018560030160009054906101000a900460ff1686600401876005016040518080602001806020018660ff1660ff168152602001806020018060200185810385528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156113a75780601f1061137c576101008083540402835291602001916113a7565b820191906000526020600020905b81548152906001019060200180831161138a57829003601f168201915b505085810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561142a5780601f106113ff5761010080835404028352916020019161142a565b820191906000526020600020905b81548152906001019060200180831161140d57829003601f168201915b50508581038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b50508581038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050995050505050505050505060405180910390a260028260020160405180828054600181600116156101000203166002900480156115a65780601f106115845761010080835404028352918201916115a6565b820191906000526020600020905b815481529060010190602001808311611592575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382600101604051808280546001816001161561010002031660029004801561163d5780601f1061161b57610100808354040283529182019161163d565b820191906000526020600020905b815481529060010190602001808311611629575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006116ea91906138f2565b6002820160006116fa91906138f2565b6003820160006101000a81549060ff021916905560048201600061171e919061393a565b60058201600061172e919061393a565b505050505050565b60006003826040518082805190602001908083835b602083101515611770578051825260208201915060208101905060208303925061174b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002826040518082805190602001908083835b60208310151561180557805182526020820191506020810190506020830392506117e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118bd57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195c57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167fc3168fdc13112e44a031057dbf6c609b33353addb4d8037d24543e22cbfe2acd8360050185604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a675780601f10611a3c57610100808354040283529160200191611a67565b820191906000526020600020905b815481529060010190602001808311611a4a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015611aa1578082015181840152602081019050611a86565b50505050905090810190601f168015611ace5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826005019080519060200190611af5929190613982565b5050505050565b6000611b06613a02565b611b0e613a02565b6000611b18613a16565b611b20613a16565b611b28613a2a565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c625780601f10611c3757610100808354040283529160200191611c62565b820191906000526020600020905b815481529060010190602001808311611c4557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d045780601f10611cd957610100808354040283529160200191611d04565b820191906000526020600020905b815481529060010190602001808311611ce757829003601f168201915b505050505081526020016003820160009054906101000a900460ff1660ff1660ff168152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e655780601f10611e3a57610100808354040283529160200191611e65565b820191906000526020600020905b815481529060010190602001808311611e4857829003601f168201915b5050505050815250509050806000015181602001518260400151836060015184608001518560a001518494508393508191508090509650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3057600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fce57600080fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561200b57600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b60208310151561205c5780518252602082019150602081019050602083039250612037565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120d257600080fd5b87600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561212357805182526020820191506020810190506020830392506120fe565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561219957600080fd5b60c0604051908101604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018860ff16815260200187815260200186815250600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190612282929190613a92565b50604082015181600201908051906020019061229f929190613a92565b5060608201518160030160006101000a81548160ff021916908360ff16021790555060808201518160040190805190602001906122dd929190613b12565b5060a08201518160050190805190602001906122fa929190613b12565b50905050600480548060010182816123129190613b92565b916000526020600020900160008c909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050896002896040518082805190602001908083835b60208310151561239a5780518252602082019150602081019050602083039250612375565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960038a6040518082805190602001908083835b602083101515612444578051825260208201915060208101905060208303925061241f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508973ffffffffffffffffffffffffffffffffffffffff167fd8d928b0b50ca11d9dc273236b46f3526515b03602f71f3a6af4f45bd9fa91448a8a8a8a8a6040518080602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561254a57808201518184015260208101905061252f565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b838110156125b0578082015181840152602081019050612595565b50505050905090810190601f1680156125dd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156126165780820151818401526020810190506125fb565b50505050905090810190601f1680156126435780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561267c578082015181840152602081019050612661565b50505050905090810190601f1680156126a95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a250505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272657600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156127c557600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561281657805182526020820191506020810190506020830392506127f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561288c57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f4a6dbfc867b179991dec22ff19960f0a94d8d9d891fc556f547764670340e8ae84600101866040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129975780601f1061296c57610100808354040283529160200191612997565b820191906000526020600020905b81548152906001019060200180831161297a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156129d15780820151818401526020810190506129b6565b50505050905090810190601f1680156129fe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a26003836001016040518082805460018160011615610100020316600290048015612a6e5780601f10612a4c576101008083540402835291820191612a6e565b820191906000526020600020905b815481529060010190602001808311612a5a575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846003856040518082805190602001908083835b602083101515612add5780518252602082019150602081019050602083039250612ab8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083836001019080519060200190612b66929190613bbe565b505050505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c405780601f10612c1557610100808354040283529160200191612c40565b820191906000526020600020905b815481529060010190602001808311612c2357829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cde5780601f10612cb357610100808354040283529160200191612cde565b820191906000526020600020905b815481529060010190602001808311612cc157829003601f168201915b5050505050908060030160009054906101000a900460ff1690806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b505050505090806005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e2d5780601f10612e0257610100808354040283529160200191612e2d565b820191906000526020600020905b815481529060010190602001808311612e1057829003601f168201915b5050505050905086565b600481815481101515612e4657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e80613a02565b612e88613a02565b6000612e92613a16565b612e9a613a16565b60006003886040518082805190602001908083835b602083101515612ed45780518252602082019150602081019050602083039250612eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f3381611afc565b9650965096509650965096505091939550919395565b612f51613c3e565b6004805480602002602001604051908101604052809291908181526020018280548015612fd357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612f89575b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303a57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156130d957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167f5b19f79ac4e8cfa820815502e11615f1a449e28155dc289ec5cac1a11f90869483600401856040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131e45780601f106131b9576101008083540402835291602001916131e4565b820191906000526020600020905b8154815290600101906020018083116131c757829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b8381101561321e578082015181840152602081019050613203565b50505050905090810190601f16801561324b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826004019080519060200190613272929190613982565b5050505050565b6000613283613a02565b61328b613a02565b6000613295613a16565b61329d613a16565b60006002886040518082805190602001908083835b6020831015156132d757805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061333681611afc565b9650965096509650965096505091939550919395565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561344857600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b6020831015156134995780518252602082019150602081019050602083039250613474565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561350f57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f53d878a6530e56c9bc96548fa0a8cae4f1d1f49c86b0e934c086b992ebb6998f846002018660405180806020018060200183810383528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561361a5780601f106135ef5761010080835404028352916020019161361a565b820191906000526020600020905b8154815290600101906020018083116135fd57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015613654578082015181840152602081019050613639565b50505050905090810190601f1680156136815780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260028360020160405180828054600181600116156101000203166002900480156136f15780601f106136cf5761010080835404028352918201916136f1565b820191906000526020600020905b8154815290600101906020018083116136dd575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846002856040518082805190602001908083835b602083101515613760578051825260208201915060208101905060208303925061373b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360020190805190602001906137e9929190613bbe565b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561384c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156138c357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b8154818355818115116138ed578183600052602060002091820191016138ec9190613c52565b5b505050565b50805460018160011615610100020316600290046000825580601f106139185750613937565b601f0160209004906000526020600020908101906139369190613c52565b5b50565b50805460018160011615610100020316600290046000825580601f10613960575061397f565b601f01602090049060005260206000209081019061397e9190613c52565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c357805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f05782518255916020019190600101906139d5565b5b5090506139fe9190613c52565b5090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b60c060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613a5b613c77565b8152602001613a68613c77565b8152602001600060ff168152602001613a7f613c8b565b8152602001613a8c613c8b565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ad357805160ff1916838001178555613b01565b82800160010185558215613b01579182015b82811115613b00578251825591602001919060010190613ae5565b5b509050613b0e9190613c52565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b5357805160ff1916838001178555613b81565b82800160010185558215613b81579182015b82811115613b80578251825591602001919060010190613b65565b5b509050613b8e9190613c52565b5090565b815481835581811511613bb957818360005260206000209182019101613bb89190613c52565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bff57805160ff1916838001178555613c2d565b82800160010185558215613c2d579182015b82811115613c2c578251825591602001919060010190613c11565b5b509050613c3a9190613c52565b5090565b602060405190810160405280600081525090565b613c7491905b80821115613c70576000816000905550600101613c58565b5090565b90565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a723058200125fffe817cb7e4c2769cfaca2c0aaf9ff3931bcc07b0739f355303c512435b0029", - "runtime_bytecode": "0x6060604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806313baf1e6146100eb5780632fbfeba91461012d5780633550b6d9146101ca57806356318820146102675780637abccac9146102e35780638da5cb5b14610519578063a880319d1461056e578063c370c86d146106bf578063e48603391461073b578063e5df8b8414610971578063e73fc0c3146109d4578063ee8c24b814610c2e578063eef05f6514610c98578063efa74f1f14610d14578063f036417f14610f6e578063f2fde38b14610fea575b600080fd5b34156100f657600080fd5b61012b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611023565b005b341561013857600080fd5b610188600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611736565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d557600080fd5b610225600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027257600080fd5b6102e1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611860565b005b34156102ee57600080fd5b61031a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611afc565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156103a4578082015181840152602081019050610389565b50505050905090810190601f1680156103d15780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561040a5780820151818401526020810190506103ef565b50505050905090810190601f1680156104375780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610470578082015181840152602081019050610455565b50505050905090810190601f16801561049d5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156104d65780820151818401526020810190506104bb565b50505050905090810190601f1680156105035780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561052457600080fd5b61052c611eb0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057957600080fd5b6106bd600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ed5565b005b34156106ca57600080fd5b610739600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506126c9565b005b341561074657600080fd5b610772600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b6e565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b838110156107fc5780820151818401526020810190506107e1565b50505050905090810190601f1680156108295780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610862578082015181840152602081019050610847565b50505050905090810190601f16801561088f5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156108c85780820151818401526020810190506108ad565b50505050905090810190601f1680156108f55780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561092e578082015181840152602081019050610913565b50505050905090810190601f16801561095b5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b341561097c57600080fd5b6109926004808035906020019091905050612e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109df57600080fd5b610a2f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612e76565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610ab9578082015181840152602081019050610a9e565b50505050905090810190601f168015610ae65780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610b1f578082015181840152602081019050610b04565b50505050905090810190601f168015610b4c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b85578082015181840152602081019050610b6a565b50505050905090810190601f168015610bb25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610beb578082015181840152602081019050610bd0565b50505050905090810190601f168015610c185780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610c3957600080fd5b610c41612f49565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610c84578082015181840152602081019050610c69565b505050509050019250505060405180910390f35b3415610ca357600080fd5b610d12600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fdd565b005b3415610d1f57600080fd5b610d6f600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050613279565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b83811015610df9578082015181840152602081019050610dde565b50505050905090810190601f168015610e265780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015610e5f578082015181840152602081019050610e44565b50505050905090810190601f168015610e8c5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610f2b578082015181840152602081019050610f10565b50505050905090810190601f168015610f585780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b3415610f7957600080fd5b610fe8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061334c565b005b3415610ff557600080fd5b611021600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506137f1565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108057600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561111f57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1660048481548110151561114557fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561119357600080fd5b60046001600480549050038154811015156111aa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004848154811015156111e557fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160048181805490500391508161124691906138c6565b50600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f32c54f1e2ea75844ded7517e7dbcd3895da7cd0c28f9ab9f9cf6ecf5f83762c683600101846002018560030160009054906101000a900460ff1686600401876005016040518080602001806020018660ff1660ff168152602001806020018060200185810385528a8181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156113a75780601f1061137c576101008083540402835291602001916113a7565b820191906000526020600020905b81548152906001019060200180831161138a57829003601f168201915b505085810384528981815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561142a5780601f106113ff5761010080835404028352916020019161142a565b820191906000526020600020905b81548152906001019060200180831161140d57829003601f168201915b50508581038352878181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156114ad5780601f10611482576101008083540402835291602001916114ad565b820191906000526020600020905b81548152906001019060200180831161149057829003601f168201915b50508581038252868181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115305780601f1061150557610100808354040283529160200191611530565b820191906000526020600020905b81548152906001019060200180831161151357829003601f168201915b5050995050505050505050505060405180910390a260028260020160405180828054600181600116156101000203166002900480156115a65780601f106115845761010080835404028352918201916115a6565b820191906000526020600020905b815481529060010190602001808311611592575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600382600101604051808280546001816001161561010002031660029004801561163d5780601f1061161b57610100808354040283529182019161163d565b820191906000526020600020905b815481529060010190602001808311611629575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006116ea91906138f2565b6002820160006116fa91906138f2565b6003820160006101000a81549060ff021916905560048201600061171e919061393a565b60058201600061172e919061393a565b505050505050565b60006003826040518082805190602001908083835b602083101515611770578051825260208201915060208101905060208303925061174b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006002826040518082805190602001908083835b60208310151561180557805182526020820191506020810190506020830392506117e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118bd57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561195c57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167fc3168fdc13112e44a031057dbf6c609b33353addb4d8037d24543e22cbfe2acd8360050185604051808060200180602001838103835285818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015611a675780601f10611a3c57610100808354040283529160200191611a67565b820191906000526020600020905b815481529060010190602001808311611a4a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015611aa1578082015181840152602081019050611a86565b50505050905090810190601f168015611ace5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826005019080519060200190611af5929190613982565b5050505050565b6000611b06613a02565b611b0e613a02565b6000611b18613a16565b611b20613a16565b611b28613a2a565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060c060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c625780601f10611c3757610100808354040283529160200191611c62565b820191906000526020600020905b815481529060010190602001808311611c4557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d045780601f10611cd957610100808354040283529160200191611d04565b820191906000526020600020905b815481529060010190602001808311611ce757829003601f168201915b505050505081526020016003820160009054906101000a900460ff1660ff1660ff168152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dc35780601f10611d9857610100808354040283529160200191611dc3565b820191906000526020600020905b815481529060010190602001808311611da657829003601f168201915b50505050508152602001600582018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e655780601f10611e3a57610100808354040283529160200191611e65565b820191906000526020600020905b815481529060010190602001808311611e4857829003601f168201915b5050505050815250509050806000015181602001518260400151836060015184608001518560a001518494508393508191508090509650965096509650965096505091939550919395565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3057600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fce57600080fd5b86600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561200b57600080fd5b85600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b60208310151561205c5780518252602082019150602081019050602083039250612037565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120d257600080fd5b87600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561212357805182526020820191506020810190506020830392506120fe565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561219957600080fd5b60c0604051908101604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018860ff16815260200187815260200186815250600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190612282929190613a92565b50604082015181600201908051906020019061229f929190613a92565b5060608201518160030160006101000a81548160ff021916908360ff16021790555060808201518160040190805190602001906122dd929190613b12565b5060a08201518160050190805190602001906122fa929190613b12565b50905050600480548060010182816123129190613b92565b916000526020600020900160008c909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050896002896040518082805190602001908083835b60208310151561239a5780518252602082019150602081019050602083039250612375565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508960038a6040518082805190602001908083835b602083101515612444578051825260208201915060208101905060208303925061241f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508973ffffffffffffffffffffffffffffffffffffffff167fd8d928b0b50ca11d9dc273236b46f3526515b03602f71f3a6af4f45bd9fa91448a8a8a8a8a6040518080602001806020018660ff1660ff168152602001806020018060200185810385528a818151815260200191508051906020019080838360005b8381101561254a57808201518184015260208101905061252f565b50505050905090810190601f1680156125775780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b838110156125b0578082015181840152602081019050612595565b50505050905090810190601f1680156125dd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156126165780820151818401526020810190506125fb565b50505050905090810190601f1680156126435780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561267c578082015181840152602081019050612661565b50505050905090810190601f1680156126a95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a250505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272657600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156127c557600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166003826040518082805190602001908083835b60208310151561281657805182526020820191506020810190506020830392506127f1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561288c57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f4a6dbfc867b179991dec22ff19960f0a94d8d9d891fc556f547764670340e8ae84600101866040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156129975780601f1061296c57610100808354040283529160200191612997565b820191906000526020600020905b81548152906001019060200180831161297a57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156129d15780820151818401526020810190506129b6565b50505050905090810190601f1680156129fe5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a26003836001016040518082805460018160011615610100020316600290048015612a6e5780601f10612a4c576101008083540402835291820191612a6e565b820191906000526020600020905b815481529060010190602001808311612a5a575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846003856040518082805190602001908083835b602083101515612add5780518252602082019150602081019050602083039250612ab8565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083836001019080519060200190612b66929190613bbe565b505050505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c405780601f10612c1557610100808354040283529160200191612c40565b820191906000526020600020905b815481529060010190602001808311612c2357829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cde5780601f10612cb357610100808354040283529160200191612cde565b820191906000526020600020905b815481529060010190602001808311612cc157829003601f168201915b5050505050908060030160009054906101000a900460ff1690806004018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d8f5780601f10612d6457610100808354040283529160200191612d8f565b820191906000526020600020905b815481529060010190602001808311612d7257829003601f168201915b505050505090806005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612e2d5780601f10612e0257610100808354040283529160200191612e2d565b820191906000526020600020905b815481529060010190602001808311612e1057829003601f168201915b5050505050905086565b600481815481101515612e4657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612e80613a02565b612e88613a02565b6000612e92613a16565b612e9a613a16565b60006003886040518082805190602001908083835b602083101515612ed45780518252602082019150602081019050602083039250612eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f3381611afc565b9650965096509650965096505091939550919395565b612f51613c3e565b6004805480602002602001604051908101604052809291908181526020018280548015612fd357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612f89575b5050505050905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561303a57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156130d957600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508373ffffffffffffffffffffffffffffffffffffffff167f5b19f79ac4e8cfa820815502e11615f1a449e28155dc289ec5cac1a11f90869483600401856040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156131e45780601f106131b9576101008083540402835291602001916131e4565b820191906000526020600020905b8154815290600101906020018083116131c757829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b8381101561321e578082015181840152602081019050613203565b50505050905090810190601f16801561324b5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a282826004019080519060200190613272929190613982565b5050505050565b6000613283613a02565b61328b613a02565b6000613295613a16565b61329d613a16565b60006002886040518082805190602001908083835b6020831015156132d757805182526020820191506020810190506020830392506132b2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061333681611afc565b9650965096509650965096505091939550919395565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561344857600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff166002826040518082805190602001908083835b6020831015156134995780518252602082019150602081019050602083039250613474565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561350f57600080fd5b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508473ffffffffffffffffffffffffffffffffffffffff167f53d878a6530e56c9bc96548fa0a8cae4f1d1f49c86b0e934c086b992ebb6998f846002018660405180806020018060200183810383528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561361a5780601f106135ef5761010080835404028352916020019161361a565b820191906000526020600020905b8154815290600101906020018083116135fd57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b83811015613654578082015181840152602081019050613639565b50505050905090810190601f1680156136815780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260028360020160405180828054600181600116156101000203166002900480156136f15780601f106136cf5761010080835404028352918201916136f1565b820191906000526020600020905b8154815290600101906020018083116136dd575b5050915050908152602001604051809103902060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055846002856040518082805190602001908083835b602083101515613760578051825260208201915060208101905060208303925061373b565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838360020190805190602001906137e9929190613bbe565b505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561384c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156138c357806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b8154818355818115116138ed578183600052602060002091820191016138ec9190613c52565b5b505050565b50805460018160011615610100020316600290046000825580601f106139185750613937565b601f0160209004906000526020600020908101906139369190613c52565b5b50565b50805460018160011615610100020316600290046000825580601f10613960575061397f565b601f01602090049060005260206000209081019061397e9190613c52565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c357805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f05782518255916020019190600101906139d5565b5b5090506139fe9190613c52565b5090565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b60c060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001613a5b613c77565b8152602001613a68613c77565b8152602001600060ff168152602001613a7f613c8b565b8152602001613a8c613c8b565b81525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ad357805160ff1916838001178555613b01565b82800160010185558215613b01579182015b82811115613b00578251825591602001919060010190613ae5565b5b509050613b0e9190613c52565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b5357805160ff1916838001178555613b81565b82800160010185558215613b81579182015b82811115613b80578251825591602001919060010190613b65565b5b509050613b8e9190613c52565b5090565b815481835581811511613bb957818360005260206000209182019101613bb89190613c52565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bff57805160ff1916838001178555613c2d565b82800160010185558215613c2d579182015b82811115613c2c578251825591602001919060010190613c11565b5b509050613c3a9190613c52565b5090565b602060405190810160405280600081525090565b613c7491905b80821115613c70576000816000905550600101613c58565b5090565b90565b602060405190810160405280600081525090565b6020604051908101604052806000815250905600a165627a7a723058200125fffe817cb7e4c2769cfaca2c0aaf9ff3931bcc07b0739f355303c512435b0029", - "updated_at": 1522264000419, - "source_map": "901:8364:0:-;;;290:10:1;282:5;;:18;;;;;;;;;;;;;;;;;;901:8364:0;;;;;;", - "source_map_runtime": "901:8364:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3955:650;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7082:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6796:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6288:295;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7360:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7360:550:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;223:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:852:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:370;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1671:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1818:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8067:392;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8067:392:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9132:131:0;;;;;;;;;;;;;;;;;5835:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:400;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8622:400:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5277:396;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:140:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;3955:650:0;4245:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;4058:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;4114:6;4088:32;;:14;4103:6;4088:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;4080:41;;;;;;;;4157:14;4196:1;4172:14;:21;;;;:25;4157:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:14;4147:6;4132:22;;;;;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;4233:1;4208:14;:26;;;;;;;;;;;;;;:::i;:::-;;4275:6;:14;4282:6;4275:14;;;;;;;;;;;;;;;4245:44;;4327:5;:11;;;;;;;;;;;;4299:184;;;4352:5;:10;;4376:5;:12;;4402:5;:14;;;;;;;;;;;;4430:5;:14;;4458:5;:15;;4299:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4500:13;4514:5;:12;;4500:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:34;;;;;;;;;;;4544:11;4556:5;:10;;4544:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4537:30;;;;;;;;;;;4584:6;:14;4591:6;4584:14;;;;;;;;;;;;;;;;4577:21;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;382:1:1;3955:650:0;;;:::o;7082:114::-;7145:7;7171:11;7183:5;7171:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7171:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7164:25;;7082:114;;;:::o;6796:122::-;6863:7;6889:13;6903:7;6889:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6889:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6882:29;;6796:122;;;:::o;6288:295::-;6424:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;6402:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;6454:6;:14;6461:6;6454:14;;;;;;;;;;;;;;;6424:44;;6502:6;6478:60;;;6510:5;:15;;6527:10;6478:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6478:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6566:10;6548:5;:15;;:28;;;;;;;;;;;;:::i;:::-;;382:1:1;6288:295:0;;;:::o;7360:550::-;7464:7;7501:6;;:::i;:::-;7530;;:::i;:::-;7561:5;7594;;:::i;:::-;7627;;:::i;:::-;7673:26;;:::i;:::-;7702:6;:14;7709:6;7702:14;;;;;;;;;;;;;;;7673:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:5;:11;;;7772:5;:10;;;7796:5;:12;;;7822:5;:14;;;7850:5;:14;;;7878:5;:15;;;7726:177;;;;;;;;;;;;;;;;;;;;;;;;7360:550;;;;;;;;:::o;223:20:1:-;;;;;;;;;;;;;:::o;2975:852:0:-;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;3199:6:0;2237:1;2205:34;;:6;:14;2212:6;2205:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;2197:43;;;;;;;;3230:6;2582:1;2562:22;;:8;:22;;;;2554:31;;;;;;;;3265:7;2475:1;2441:36;;:13;2455:7;2441:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2441:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2433:45;;;;;;;;3299:5;2352:1;2322:32;;:11;2334:5;2322:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2322:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;2314:41;;;;;;;;3337:207;;;;;;;;;3372:6;3337:207;;;;;;3398:5;3337:207;;;;3425:7;3337:207;;;;3456:9;3337:207;;;;;;3489:9;3337:207;;;;3523:10;3337:207;;;3320:6;:14;3327:6;3320:14;;;;;;;;;;;;;;;:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;3554:14;:27;;;;;;;;;;;:::i;:::-;;;;;;;;;;3574:6;3554:27;;;;;;;;;;;;;;;;;;;;;;;3616:6;3591:13;3605:7;3591:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3591:22:0;;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;3653:6;3632:11;3644:5;3632:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3632:18:0;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3694:6;3669:151;;;3714:5;3733:7;3754:9;3777;3800:10;3669:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3669:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:1;2595;2250;382::1;2975:852:0;;;;;;:::o;4753:370::-;4912:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;4858:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;4891:5;2352:1;2322:32;;:11;2334:5;2322:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2322:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;2314:41;;;;;;;;4942:6;:14;4949:6;4942:14;;;;;;;;;;;;;;;4912:44;;4985:6;4966:45;;;4993:5;:10;;5005:5;4966:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4966:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5028:11;5040:5;:10;;5028:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:30;;;;;;;;;;;5082:6;5061:11;5073:5;5061:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5061:18:0;;;;;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;5111:5;5098;:10;;:18;;;;;;;;;;;;:::i;:::-;;2130:1;382::1;4753:370:0;;;:::o;1671:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1818:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8067:392::-;8167:7;8204:6;;:::i;:::-;8233;;:::i;:::-;8264:5;8297;;:::i;:::-;8330;;:::i;:::-;8376:14;8393:11;8405:5;8393:18;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8393:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8376:35;;8428:24;8445:6;8428:16;:24::i;:::-;8421:31;;;;;;;;;;;;8067:392;;;;;;;;:::o;9132:131::-;9210:9;;:::i;:::-;9242:14;9235:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:131;:::o;5835:288::-;5969:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;5947:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;5999:6;:14;6006:6;5999:14;;;;;;;;;;;;;;;5969:44;;6046:6;6023:57;;;6054:5;:14;;6070:9;6023:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6023:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:9;6090:5;:14;;:26;;;;;;;;;;;;:::i;:::-;;382:1:1;5835:288:0;;;:::o;8622:400::-;8726:7;8763:6;;:::i;:::-;8792;;:::i;:::-;8823:5;8856;;:::i;:::-;8889;;:::i;:::-;8935:14;8952:13;8966:7;8952:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8952:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8935:39;;8991:24;9008:6;8991:16;:24::i;:::-;8984:31;;;;;;;;;;;;8622:400;;;;;;;;:::o;5277:396::-;5444:27;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;5386:6:0;2117:1;2085:34;;:6;:14;2092:6;2085:14;;;;;;;;;;;;;;;:20;;;;;;;;;;;;:34;;;;2077:43;;;;;;;;5421:7;2475:1;2441:36;;:13;2455:7;2441:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2441:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;2433:45;;;;;;;;5474:6;:14;5481:6;5474:14;;;;;;;;;;;;;;;5444:44;;5519:6;5498:51;;;5527:5;:12;;5541:7;5498:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5498:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5566:13;5580:5;:12;;5566:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:34;;;;;;;;;;;5628:6;5603:13;5617:7;5603:22;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5603:22:0;;;;;;;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;5659:7;5644:5;:12;;:22;;;;;;;;;;;;:::i;:::-;;2130:1;382::1;5277:396:0;;;:::o;396:140:1:-;366:5;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;485:1;465:22;;:8;:22;;;;461:69;;;511:8;503:5;;:16;;;;;;;;;;;;;;;;;;461:69;396:140;:::o;901:8364:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o", - "sources": [ - "TokenRegistry.sol", - "previous/Ownable/Ownable_v1.sol" - ], - "address": "0x0b1ba0af832d7c05fd64161e0db78e85978e8082", - "constructor_args": "0x" - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/TokenTransferProxy.json b/packages/0x.js/test/artifacts/TokenTransferProxy.json deleted file mode 100644 index 1dae6ff10..000000000 --- a/packages/0x.js/test/artifacts/TokenTransferProxy.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "contract_name": "TokenTransferProxy", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xf376b57d58b01cb4e9c70a03a1ab6b06bc61d7eb4714bc360dd063c08028453a", - "source_tree_hash": "0xdf01ff6605f16387ea2d3e043c6bce5d2f6661f23b4243d3783e0ede0e5dfa1d", - "optimizer_enabled": false, - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "from", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "target", - "type": "address" - } - ], - "name": "addAuthorizedAddress", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "authorities", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "target", - "type": "address" - } - ], - "name": "removeAuthorizedAddress", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "authorized", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getAuthorizedAddresses", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "target", - "type": "address" - }, - { - "indexed": true, - "name": "caller", - "type": "address" - } - ], - "name": "LogAuthorizedAddressAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "target", - "type": "address" - }, - { - "indexed": true, - "name": "caller", - "type": "address" - } - ], - "name": "LogAuthorizedAddressRemoved", - "type": "event" - } - ], - "bytecode": "0x6060604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bbb806100536000396000f30060606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315dacbea1461009357806342f1181e1461012b578063494503d41461016457806370712939146101c75780638da5cb5b14610200578063b918161114610255578063d39de6e9146102a6578063f2fde38b14610310575b600080fd5b341561009e57600080fd5b610111600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610349565b604051808215151515815260200191505060405180910390f35b341561013657600080fd5b610162600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061049a565b005b341561016f57600080fd5b6101856004808035906020019091905050610667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d257600080fd5b6101fe600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a6565b005b341561020b57600080fd5b610213610950565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026057600080fd5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610975565b604051808215151515815260200191505060405180910390f35b34156102b157600080fd5b6102b9610995565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fc5780820151818401526020810190506102e1565b505050509050019250505060405180910390f35b341561031b57600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a29565b005b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103a357600080fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561047957600080fd5b5af1151561048657600080fd5b505050604051805190509050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f557600080fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561054f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600280548060010182816105ba9190610afe565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f94bb87f4c15c4587ff559a7584006fa01ddf9299359be6b512b94527aa961aca60405160405180910390a35050565b60028181548110151561067657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070357600080fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561075c57600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600091505b6002805490508210156108f1578273ffffffffffffffffffffffffffffffffffffffff166002838154811015156107e357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108e457600260016002805490500381548110151561084257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028381548110151561087d57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002818180549050039150816108de9190610b2a565b506108f1565b81806001019250506107b0565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff5b347a1e40749dd050f5f07fbdbeb7e3efa9756903044dd29401fd1d4bb4a1c60405160405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b61099d610b56565b6002805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d5575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610afb57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b815481835581811511610b2557818360005260206000209182019101610b249190610b6a565b5b505050565b815481835581811511610b5157818360005260206000209182019101610b509190610b6a565b5b505050565b602060405190810160405280600081525090565b610b8c91905b80821115610b88576000816000905550600101610b70565b5090565b905600a165627a7a72305820fed86165dce3bb5eb0a28cdca700b6bf5b860b17026cf311e6641cad8a63914f0029", - "runtime_bytecode": "0x60606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806315dacbea1461009357806342f1181e1461012b578063494503d41461016457806370712939146101c75780638da5cb5b14610200578063b918161114610255578063d39de6e9146102a6578063f2fde38b14610310575b600080fd5b341561009e57600080fd5b610111600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610349565b604051808215151515815260200191505060405180910390f35b341561013657600080fd5b610162600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061049a565b005b341561016f57600080fd5b6101856004808035906020019091905050610667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101d257600080fd5b6101fe600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a6565b005b341561020b57600080fd5b610213610950565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026057600080fd5b61028c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610975565b604051808215151515815260200191505060405180910390f35b34156102b157600080fd5b6102b9610995565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fc5780820151818401526020810190506102e1565b505050509050019250505060405180910390f35b341561031b57600080fd5b610347600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a29565b005b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156103a357600080fd5b8473ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561047957600080fd5b5af1151561048657600080fd5b505050604051805190509050949350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104f557600080fd5b80600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561054f57600080fd5b60018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600280548060010182816105ba9190610afe565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f94bb87f4c15c4587ff559a7584006fa01ddf9299359be6b512b94527aa961aca60405160405180910390a35050565b60028181548110151561067657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561070357600080fd5b81600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561075c57600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600091505b6002805490508210156108f1578273ffffffffffffffffffffffffffffffffffffffff166002838154811015156107e357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156108e457600260016002805490500381548110151561084257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028381548110151561087d57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016002818180549050039150816108de9190610b2a565b506108f1565b81806001019250506107b0565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff5b347a1e40749dd050f5f07fbdbeb7e3efa9756903044dd29401fd1d4bb4a1c60405160405180910390a3505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b61099d610b56565b6002805480602002602001604051908101604052809291908181526020018280548015610a1f57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109d5575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610afb57806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b815481835581811511610b2557818360005260206000209182019101610b249190610b6a565b5b505050565b815481835581811511610b5157818360005260206000209182019101610b509190610b6a565b5b505050565b602060405190810160405280600081525090565b610b8c91905b80821115610b88576000816000905550600101610b70565b5090565b905600a165627a7a72305820fed86165dce3bb5eb0a28cdca700b6bf5b860b17026cf311e6641cad8a63914f0029", - "updated_at": 1522263988802, - "source_map": "974:2475:0:-;;;290:10:1;282:5;;:18;;;;;;;;;;;;;;;;;;974:2475:0;;;;;;", - "source_map_runtime": "974:2475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1776:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;1448:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2140:476;;;;;;;;;;;;;;;;;;;;;;;;;;;;223:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1399:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3314:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3314:133:0;;;;;;;;;;;;;;;;;396:140:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:239:0;3092:4;1142:10;:22;1153:10;1142:22;;;;;;;;;;;;;;;;;;;;;;;;;1134:31;;;;;;;;3125:5;3119:25;;;3145:4;3151:2;3155:5;3119:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3112:49;;2929:239;;;;;;:::o;1776:250::-;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;1883:6:0;1356:10;:18;1367:6;1356:18;;;;;;;;;;;;;;;;;;;;;;;;;1355:19;1347:28;;;;;;;;1926:4;1905:10;:18;1916:6;1905:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;1940:11;:24;;;;;;;;;;;:::i;:::-;;;;;;;;;;1957:6;1940:24;;;;;;;;;;;;;;;;;;;;;;;2008:10;1974:45;;2000:6;1974:45;;;;;;;;;;;;382:1:1;1776:250:0;:::o;1448:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2140:476::-;2309:6;366:5:1;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;2247:6:0;1249:10;:18;1260:6;1249:18;;;;;;;;;;;;;;;;;;;;;;;;;1241:27;;;;;;;;2276:10;:18;2287:6;2276:18;;;;;;;;;;;;;;;;2269:25;;;;;;;;;;;2318:1;2309:10;;2304:249;2325:11;:18;;;;2321:1;:22;2304:249;;;2386:6;2368:24;;:11;2380:1;2368:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;2364:179;;;2429:11;2462:1;2441:11;:18;;;;:22;2429:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:11;2424:1;2412:14;;;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;2504:1;2482:11;:23;;;;;;;;;;;;;;:::i;:::-;;2523:5;;2364:179;2345:3;;;;;;;2304:249;;;2598:10;2562:47;;2590:6;2562:47;;;;;;;;;;;;382:1:1;2140:476:0;;:::o;223:20:1:-;;;;;;;;;;;;;:::o;1399:43:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;3314:133::-;3397:9;;:::i;:::-;3429:11;3422:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3314:133;:::o;396:140:1:-;366:5;;;;;;;;;;;352:19;;:10;:19;;;344:28;;;;;;;;485:1;465:22;;:8;:22;;;;461:69;;;511:8;503:5;;:16;;;;;;;;;;;;;;;;;;461:69;396:140;:::o;974:2475:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "TokenTransferProxy.sol", - "previous/Ownable/Ownable_v1.sol", - "previous/Token/Token_v1.sol" - ], - "address": "0x1dc4c1cefef38a777b15aa20260a54e584b16c48", - "constructor_args": "0x" - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/WETH9.json b/packages/0x.js/test/artifacts/WETH9.json deleted file mode 100644 index 8e78ff8c3..000000000 --- a/packages/0x.js/test/artifacts/WETH9.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "contract_name": "WETH9", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0xce985174db1a24d312c0d544abb926a9b107bd9abd6424288a8e54a16d3e006b", - "source_tree_hash": "0xce985174db1a24d312c0d544abb926a9b107bd9abd6424288a8e54a16d3e006b", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "guy", - "type": "address" - }, - { - "name": "wad", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, - { - "name": "wad", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "wad", - "type": "uint256" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "dst", - "type": "address" - }, - { - "name": "wad", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "src", - "type": "address" - }, - { - "indexed": true, - "name": "guy", - "type": "address" - }, - { - "indexed": false, - "name": "wad", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "src", - "type": "address" - }, - { - "indexed": true, - "name": "dst", - "type": "address" - }, - { - "indexed": false, - "name": "wad", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "dst", - "type": "address" - }, - { - "indexed": false, - "name": "wad", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "src", - "type": "address" - }, - { - "indexed": false, - "name": "wad", - "type": "uint256" - } - ], - "name": "Withdrawal", - "type": "event" - } - ], - "bytecode": "0x60606040526040805190810160405280600d81526020017f57726170706564204574686572000000000000000000000000000000000000008152506000908051906020019061004f9291906100c8565b506040805190810160405280600481526020017f57455448000000000000000000000000000000000000000000000000000000008152506001908051906020019061009b9291906100c8565b506012600260006101000a81548160ff021916908360ff16021790555034156100c357600080fd5b61016d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061010957805160ff1916838001178555610137565b82800160010185558215610137579182015b8281111561013657825182559160200191906001019061011b565b5b5090506101449190610148565b5090565b61016a91905b8082111561016657600081600090555060010161014e565b5090565b90565b610c348061017c6000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820554392411204aaff4bbf87641e26cc9ba9429832b57fb8bf17a20725869079630029", - "runtime_bytecode": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820554392411204aaff4bbf87641e26cc9ba9429832b57fb8bf17a20725869079630029", - "updated_at": 1522263987558, - "source_map": "712:1778:0:-;;;733:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;779:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;841:2;816:27;;;;;;;;;;;;;;;;;;;;712:1778;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "source_map_runtime": "712:1778:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1281:9;:7;:9::i;:::-;712:1778;733:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;733:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1728:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2033:455;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1432:198;;;;;;;;;;;;;;;;;;;;;;;;;;816:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1102:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;779:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:125;;;;;;1173:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1302:125;1371:9;1346;:21;1356:10;1346:21;;;;;;;;;;;;;;;;:34;;;;;;;;;;;1398:10;1390:30;;;1410:9;1390:30;;;;;;;;;;;;;;;;;;1302:125::o;733:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1728:172::-;1784:4;1829:3;1800:9;:21;1810:10;1800:21;;;;;;;;;;;;;;;:26;1822:3;1800:26;;;;;;;;;;;;;;;:32;;;;1863:3;1842:30;;1851:10;1842:30;;;1868:3;1842:30;;;;;;;;;;;;;;;;;;1889:4;1882:11;;1728:172;;;;:::o;1636:86::-;1680:4;1703;:12;;;1696:19;;1636:86;:::o;2033:455::-;2123:4;2169:3;2151:9;:14;2161:3;2151:14;;;;;;;;;;;;;;;;:21;;2143:30;;;;;;;;2195:10;2188:17;;:3;:17;;;;:59;;;;;2244:2;2209:9;:14;2219:3;2209:14;;;;;;;;;;;;;;;:26;2224:10;2209:26;;;;;;;;;;;;;;;;:38;;2188:59;2184:179;;;2301:3;2271:9;:14;2281:3;2271:14;;;;;;;;;;;;;;;:26;2286:10;2271:26;;;;;;;;;;;;;;;;:33;;2263:42;;;;;;;;2349:3;2319:9;:14;2329:3;2319:14;;;;;;;;;;;;;;;:26;2334:10;2319:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;2184:179;2391:3;2373:9;:14;2383:3;2373:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2422:3;2404:9;:14;2414:3;2404:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;2450:3;2436:23;;2445:3;2436:23;;;2455:3;2436:23;;;;;;;;;;;;;;;;;;2477:4;2470:11;;2033:455;;;;;:::o;1432:198::-;1510:3;1485:9;:21;1495:10;1485:21;;;;;;;;;;;;;;;;:28;;1477:37;;;;;;;;1549:3;1524:9;:21;1534:10;1524:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;1562:10;:19;;:24;1582:3;1562:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:10;1596:27;;;1619:3;1596:27;;;;;;;;;;;;;;;;;;1432:198;:::o;816:27::-;;;;;;;;;;;;;:::o;1102:65::-;;;;;;;;;;;;;;;;;:::o;779:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1906:121::-;1963:4;1986:34;1999:10;2011:3;2016;1986:12;:34::i;:::-;1979:41;;1906:121;;;;:::o;1173:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "sources": [ - "WETH9.sol" - ], - "address": "0x871dd7c2b4b25e1aa18728e9d5f2af4c4e431f5c", - "constructor_args": "0x" - } - } -} \ No newline at end of file diff --git a/packages/0x.js/test/artifacts/ZRXToken.json b/packages/0x.js/test/artifacts/ZRXToken.json deleted file mode 100644 index add1b46cb..000000000 --- a/packages/0x.js/test/artifacts/ZRXToken.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "contract_name": "ZRXToken", - "networks": { - "50": { - "solc_version": "0.4.21", - "keccak256": "0x68278a8290a59fb66c378f7517c1029efe226d916e252deceb0a2799a6bc4e77", - "source_tree_hash": "0xa2899bdb1c73e3ea6e53dc3f6a150b74f770578765c3f35ce41b912024eef73a", - "optimizer_enabled": false, - "abi": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "_owner", - "type": "address" - }, - { - "indexed": true, - "name": "_spender", - "type": "address" - }, - { - "indexed": false, - "name": "_value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - } - ], - "bytecode": "0x60606040526b033b2e3c9fd0803ce8000000600355341561001f57600080fd5b6003546000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b6b806100736000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009e578063095ea7b31461012c57806318160ddd1461018657806323b872dd146101af578063313ce5671461022857806370a082311461025757806395d89b41146102a4578063a9059cbb14610332578063dd62ed3e1461038c575b600080fd5b34156100a957600080fd5b6100b16103f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61016c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610431565b604051808215151515815260200191505060405180910390f35b341561019157600080fd5b610199610523565b6040518082815260200191505060405180910390f35b34156101ba57600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610529565b604051808215151515815260200191505060405180910390f35b341561023357600080fd5b61023b61084e565b604051808260ff1660ff16815260200191505060405180910390f35b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610853565b6040518082815260200191505060405180910390f35b34156102af57600080fd5b6102b761089b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033d57600080fd5b610372600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108d4565b604051808215151515815260200191505060405180910390f35b341561039757600080fd5b6103e2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ab8565b6040518082815260200191505060405180910390f35b6040805190810160405280601181526020017f30782050726f746f636f6c20546f6b656e00000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60035481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105f95750828110155b801561068357506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1561084157826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107d35782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150610846565b600091505b509392505050565b601281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f5a5258000000000000000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109a257506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610aad57816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ab2565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058208d390fd21199c29f8db28b3d6e4408333dc6e8e0cc07d9c272ff17c7f16dc2120029", - "runtime_bytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461009e578063095ea7b31461012c57806318160ddd1461018657806323b872dd146101af578063313ce5671461022857806370a082311461025757806395d89b41146102a4578063a9059cbb14610332578063dd62ed3e1461038c575b600080fd5b34156100a957600080fd5b6100b16103f8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f15780820151818401526020810190506100d6565b50505050905090810190601f16801561011e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013757600080fd5b61016c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610431565b604051808215151515815260200191505060405180910390f35b341561019157600080fd5b610199610523565b6040518082815260200191505060405180910390f35b34156101ba57600080fd5b61020e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610529565b604051808215151515815260200191505060405180910390f35b341561023357600080fd5b61023b61084e565b604051808260ff1660ff16815260200191505060405180910390f35b341561026257600080fd5b61028e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610853565b6040518082815260200191505060405180910390f35b34156102af57600080fd5b6102b761089b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033d57600080fd5b610372600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108d4565b604051808215151515815260200191505060405180910390f35b341561039757600080fd5b6103e2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ab8565b6040518082815260200191505060405180910390f35b6040805190810160405280601181526020017f30782050726f746f636f6c20546f6b656e00000000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60035481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156105f95750828110155b801561068357506000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b1561084157826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156107d35782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150610846565b600091505b509392505050565b601281565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040805190810160405280600381526020017f5a5258000000000000000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156109a257506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110155b15610aad57816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610ab2565b600090505b92915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050929150505600a165627a7a723058208d390fd21199c29f8db28b3d6e4408333dc6e8e0cc07d9c272ff17c7f16dc2120029", - "updated_at": 1522263985587, - "source_map": "753:342:0:-;;;872:6;846:32;;1022:71;;;;;;;;1075:11;;1052:8;:20;1061:10;1052:20;;;;;;;;;;;;;;;:34;;;;753:342;;;;;;", - "source_map_runtime": "753:342:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;923:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1087:187:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;846:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1066:609:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;805:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;978:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;125:410:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1280:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;923:49:0;;;;;;;;;;;;;;;;;;;;:::o;1087:187:1:-;1144:4;1192:6;1160:7;:19;1168:10;1160:19;;;;;;;;;;;;;;;:29;1180:8;1160:29;;;;;;;;;;;;;;;:38;;;;1229:8;1208:38;;1217:10;1208:38;;;1239:6;1208:38;;;;;;;;;;;;;;;;;;1263:4;1256:11;;1087:187;;;;:::o;846:32:0:-;;;;:::o;1066:609:3:-;1161:4;1181:14;1198:7;:14;1206:5;1198:14;;;;;;;;;;;;;;;:26;1213:10;1198:26;;;;;;;;;;;;;;;;1181:43;;1257:6;1238:8;:15;1247:5;1238:15;;;;;;;;;;;;;;;;:25;;:60;;;;;1292:6;1279:9;:19;;1238:60;:115;;;;;1340:8;:13;1349:3;1340:13;;;;;;;;;;;;;;;;1330:6;1314:8;:13;1323:3;1314:13;;;;;;;;;;;;;;;;:22;:39;;1238:115;1234:435;;;1395:6;1378:8;:13;1387:3;1378:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1434:6;1415:8;:15;1424:5;1415:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;768:10;1458:9;:20;1454:95;;;1528:6;1498:7;:14;1506:5;1498:14;;;;;;;;;;;;;;;:26;1513:10;1498:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;1454:95;1578:3;1562:28;;1571:5;1562:28;;;1583:6;1562:28;;;;;;;;;;;;;;;;;;1611:4;1604:11;;;;1234:435;1653:5;1646:12;;1066:609;;;;;;;:::o;805:35:0:-;838:2;805:35;:::o;982:99:1:-;1035:4;1058:8;:16;1067:6;1058:16;;;;;;;;;;;;;;;;1051:23;;982:99;;;:::o;978:37:0:-;;;;;;;;;;;;;;;;;;;;:::o;125:410:1:-;178:4;291:6;267:8;:20;276:10;267:20;;;;;;;;;;;;;;;;:30;;:73;;;;;327:8;:13;336:3;327:13;;;;;;;;;;;;;;;;317:6;301:8;:13;310:3;301:13;;;;;;;;;;;;;;;;:22;:39;;267:73;263:266;;;380:6;356:8;:20;365:10;356:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;417:6;400:8;:13;409:3;400:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;458:3;437:33;;446:10;437:33;;;463:6;437:33;;;;;;;;;;;;;;;;;;491:4;484:11;;;;263:266;521:5;514:12;;125:410;;;;;:::o;1280:126::-;1351:4;1374:7;:15;1382:6;1374:15;;;;;;;;;;;;;;;:25;1390:8;1374:25;;;;;;;;;;;;;;;;1367:32;;1280:126;;;;:::o", - "sources": [ - "ZRXToken.sol", - "previous/ERC20Token/ERC20Token_v1.sol", - "previous/Token/Token_v1.sol", - "previous/UnlimitedAllowanceToken/UnlimitedAllowanceToken_v1.sol" - ], - "address": "0x1d7022f5b17d2f8b695918fb48fa1089c9f85401", - "constructor_args": "0x" - } - } -} \ No newline at end of file -- cgit v1.2.3 From 6f72fed8b5b37fac5096413b363b533e0a29f7b5 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 9 Apr 2018 17:23:27 +0900 Subject: Removed unused command --- packages/website/package.json | 4 ---- 1 file changed, 4 deletions(-) (limited to 'packages') diff --git a/packages/website/package.json b/packages/website/package.json index 7d0c68b47..ce108bc9a 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -8,13 +8,9 @@ "clean": "shx rm -f public/bundle*", "lint": "tslint --project . 'ts/**/*.ts' 'ts/**/*.tsx'", "dev": "webpack-dev-server --content-base public --https", - "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../website/contracts; done;", "deploy_staging": "npm run build; aws s3 sync ./public/. s3://staging-0xproject --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers", "deploy_live": "npm run build; aws s3 sync ./public/. s3://0xproject.com --profile 0xproject --region us-east-1 --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers" }, - "config": { - "artifacts": "Mintable" - }, "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { -- cgit v1.2.3 From b7e98abc43daa4c625e155327cf8ea5656da2451 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Mon, 9 Apr 2018 19:11:18 +0900 Subject: Refactor publish script to have it's main execution body be lean and discrete steps --- packages/monorepo-scripts/src/publish.ts | 61 +++++++++++++++++++++----------- packages/monorepo-scripts/src/types.ts | 4 +++ 2 files changed, 44 insertions(+), 21 deletions(-) (limited to 'packages') diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index adc1de64a..f0fb00acd 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -10,7 +10,7 @@ import semverDiff = require('semver-diff'); import semverSort = require('semver-sort'); import { constants } from './constants'; -import { Changelog, Changes, SemVerIndex, UpdatedPackage } from './types'; +import { Changelog, Changes, PackageToVersionChange, SemVerIndex, UpdatedPackage } from './types'; import { utils } from './utils'; const IS_DRY_RUN = process.env.IS_DRY_RUN === 'true'; @@ -23,6 +23,39 @@ const semverNameToIndex: { [semver: string]: number } = { }; (async () => { + // Fetch public, updated Lerna packages + const updatedPublicLernaPackages = await getUpdatedPublicLernaPackagesAsync(); + + // Update CHANGELOGs + const updatedPublicLernaPackageNames = _.map(updatedPublicLernaPackages, pkg => pkg.package.name); + utils.log(`Will update CHANGELOGs and publish: \n${updatedPublicLernaPackageNames.join('\n')}\n`); + const packageToVersionChange = await updateChangeLogsAsync(updatedPublicLernaPackages); + + // Push changelog changes to Github + if (!IS_DRY_RUN) { + await pushChangelogsToGithubAsync(); + } + + // Call LernaPublish + utils.log('Version updates to apply:'); + _.each(packageToVersionChange, (versionChange: string, packageName: string) => { + utils.log(`${packageName} -> ${versionChange}`); + }); + utils.log(`Calling 'lerna publish'...`); + await lernaPublishAsync(packageToVersionChange); +})().catch(err => { + utils.log(err); + process.exit(1); +}); + +async function pushChangelogsToGithubAsync() { + await execAsync(`git add . --all`, { cwd: constants.monorepoRootPath }); + await execAsync(`git commit -m "Updated CHANGELOGS"`, { cwd: constants.monorepoRootPath }); + await execAsync(`git push`, { cwd: constants.monorepoRootPath }); + utils.log(`Pushed CHANGELOG updates to Github`); +} + +async function getUpdatedPublicLernaPackagesAsync(): Promise { const updatedPublicPackages = await getPublicLernaUpdatedPackagesAsync(); const updatedPackageNames = _.map(updatedPublicPackages, pkg => pkg.name); @@ -30,10 +63,11 @@ const semverNameToIndex: { [semver: string]: number } = { const updatedPublicLernaPackages = _.filter(allLernaPackages, pkg => { return _.includes(updatedPackageNames, pkg.package.name); }); - const updatedPublicLernaPackageNames = _.map(updatedPublicLernaPackages, pkg => pkg.package.name); - utils.log(`Will update CHANGELOGs and publish: \n${updatedPublicLernaPackageNames.join('\n')}\n`); + return updatedPublicLernaPackages; +} - const packageToVersionChange: { [name: string]: string } = {}; +async function updateChangeLogsAsync(updatedPublicLernaPackages: LernaPackage[]): Promise { + const packageToVersionChange: PackageToVersionChange = {}; for (const lernaPackage of updatedPublicLernaPackages) { const packageName = lernaPackage.package.name; const changelogJSONPath = path.join(lernaPackage.location, 'CHANGELOG.json'); @@ -88,23 +122,8 @@ const semverNameToIndex: { [semver: string]: number } = { utils.log(`${packageName}: Updated CHANGELOG.md`); } - if (!IS_DRY_RUN) { - await execAsync(`git add . --all`, { cwd: constants.monorepoRootPath }); - await execAsync(`git commit -m "Updated CHANGELOGS"`, { cwd: constants.monorepoRootPath }); - await execAsync(`git push`, { cwd: constants.monorepoRootPath }); - utils.log(`Pushed CHANGELOG updates to Github`); - } - - utils.log('Version updates to apply:'); - _.each(packageToVersionChange, (versionChange: string, packageName: string) => { - utils.log(`${packageName} -> ${versionChange}`); - }); - utils.log(`Calling 'lerna publish'...`); - await lernaPublishAsync(packageToVersionChange); -})().catch(err => { - utils.log(err); - process.exit(1); -}); + return packageToVersionChange; +} async function lernaPublishAsync(packageToVersionChange: { [name: string]: string }) { // HACK: Lerna publish does not provide a way to specify multiple package versions via diff --git a/packages/monorepo-scripts/src/types.ts b/packages/monorepo-scripts/src/types.ts index 9e6edd186..28d00d710 100644 --- a/packages/monorepo-scripts/src/types.ts +++ b/packages/monorepo-scripts/src/types.ts @@ -21,3 +21,7 @@ export enum SemVerIndex { Minor, Major, } + +export interface PackageToVersionChange { + [name: string]: string; +} -- cgit v1.2.3 From 61fc3346c2fe2adc33dfe84aa50780d61e10efdf Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Tue, 3 Apr 2018 17:39:55 -0700 Subject: Updated deployer to accept a list of contract directories as input. Contract directories are namespaced to a void clashes. Also in this commit is a fix for overloading contract functions. --- packages/abi-gen/src/index.ts | 14 +- packages/abi-gen/src/types.ts | 9 +- packages/abi-gen/src/utils.ts | 4 +- packages/base-contract/src/index.ts | 51 +- packages/contract_templates/contract.handlebars | 2 +- .../partials/callAsync.handlebars | 4 +- packages/contract_templates/partials/tx.handlebars | 22 +- packages/contracts/package.json | 2 +- packages/deployer/package.json | 2 + packages/deployer/src/cli.ts | 37 +- packages/deployer/src/compiler.ts | 102 ++-- packages/deployer/src/utils/compiler.ts | 65 ++- packages/deployer/src/utils/contract.ts | 4 +- packages/deployer/src/utils/encoder.ts | 4 +- packages/deployer/src/utils/types.ts | 19 +- packages/deployer/test/compiler_test.ts | 16 +- packages/deployer/test/compiler_utils_test.ts | 22 +- packages/deployer/test/deployer_test.ts | 16 +- .../deployer/test/fixtures/contracts/Exchange.sol | 602 --------------------- .../test/fixtures/contracts/TokenTransferProxy.sol | 115 ---- .../test/fixtures/contracts/main/Exchange.sol | 602 +++++++++++++++++++++ .../fixtures/contracts/main/TokenTransferProxy.sol | 115 ++++ packages/metacoin/artifacts/Metacoin.json | 95 +++- packages/metacoin/contracts/Metacoin.sol | 15 + packages/metacoin/package.json | 2 +- packages/metacoin/test/metacoin_test.ts | 56 +- packages/utils/src/abi_utils.ts | 74 +++ packages/utils/src/index.ts | 1 + 28 files changed, 1233 insertions(+), 839 deletions(-) delete mode 100644 packages/deployer/test/fixtures/contracts/Exchange.sol delete mode 100644 packages/deployer/test/fixtures/contracts/TokenTransferProxy.sol create mode 100644 packages/deployer/test/fixtures/contracts/main/Exchange.sol create mode 100644 packages/deployer/test/fixtures/contracts/main/TokenTransferProxy.sol create mode 100644 packages/utils/src/abi_utils.ts (limited to 'packages') diff --git a/packages/abi-gen/src/index.ts b/packages/abi-gen/src/index.ts index 942bb12db..9ceebe02b 100644 --- a/packages/abi-gen/src/index.ts +++ b/packages/abi-gen/src/index.ts @@ -1,7 +1,7 @@ #!/usr/bin/env node import { AbiDefinition, ConstructorAbi, EventAbi, MethodAbi } from '@0xproject/types'; -import { logUtils } from '@0xproject/utils'; +import { abiUtils, logUtils } from '@0xproject/utils'; import chalk from 'chalk'; import * as fs from 'fs'; import { sync as globSync } from 'glob'; @@ -12,7 +12,7 @@ import * as yargs from 'yargs'; import toSnakeCase = require('to-snake-case'); -import { ContextData, ContractsBackend, ParamKind } from './types'; +import { ContextData, ContractsBackend, Method, ParamKind } from './types'; import { utils } from './utils'; const ABI_TYPE_CONSTRUCTOR = 'constructor'; @@ -83,7 +83,6 @@ function writeOutputFile(name: string, renderedTsCode: string): void { Handlebars.registerHelper('parameterType', utils.solTypeToTsType.bind(utils, ParamKind.Input, args.backend)); Handlebars.registerHelper('returnType', utils.solTypeToTsType.bind(utils, ParamKind.Output, args.backend)); - if (args.partials) { registerPartials(args.partials); } @@ -126,11 +125,12 @@ for (const abiFileName of abiFileNames) { } const methodAbis = ABI.filter((abi: AbiDefinition) => abi.type === ABI_TYPE_METHOD) as MethodAbi[]; - const methodsData = _.map(methodAbis, methodAbi => { - _.map(methodAbi.inputs, (input, i: number) => { + const methodAbisSanitized = abiUtils.renameOverloadedMethods(methodAbis) as MethodAbi[]; + const methodsData = _.map(methodAbis, (methodAbi, methodAbiIndex: number) => { + _.forEach(methodAbi.inputs, (input, inputIndex: number) => { if (_.isEmpty(input.name)) { // Auto-generated getters don't have parameter names - input.name = `index_${i}`; + input.name = `index_${inputIndex}`; } }); // This will make templates simpler @@ -138,6 +138,8 @@ for (const abiFileName of abiFileNames) { ...methodAbi, singleReturnValue: methodAbi.outputs.length === 1, hasReturnValue: methodAbi.outputs.length !== 0, + tsName: methodAbisSanitized[methodAbiIndex].name, + functionSignature: abiUtils.getFunctionSignature(methodAbi), }; return methodData; }); diff --git a/packages/abi-gen/src/types.ts b/packages/abi-gen/src/types.ts index df5b1feaf..648281774 100644 --- a/packages/abi-gen/src/types.ts +++ b/packages/abi-gen/src/types.ts @@ -5,13 +5,6 @@ export enum ParamKind { Output = 'output', } -export enum AbiType { - Function = 'function', - Constructor = 'constructor', - Event = 'event', - Fallback = 'fallback', -} - export enum ContractsBackend { Web3 = 'web3', Ethers = 'ethers', @@ -20,6 +13,8 @@ export enum ContractsBackend { export interface Method extends MethodAbi { singleReturnValue: boolean; hasReturnValue: boolean; + tsName: string; + functionSignature: string; } export interface ContextData { diff --git a/packages/abi-gen/src/utils.ts b/packages/abi-gen/src/utils.ts index 755fbc71a..20b734959 100644 --- a/packages/abi-gen/src/utils.ts +++ b/packages/abi-gen/src/utils.ts @@ -1,9 +1,9 @@ -import { ConstructorAbi, DataItem } from '@0xproject/types'; +import { AbiType, ConstructorAbi, DataItem } from '@0xproject/types'; import * as fs from 'fs'; import * as _ from 'lodash'; import * as path from 'path'; -import { AbiType, ContractsBackend, ParamKind } from './types'; +import { ContractsBackend, ParamKind } from './types'; export const utils = { solTypeToTsType(paramKind: ParamKind, backend: ContractsBackend, solType: string, components?: DataItem[]): string { diff --git a/packages/base-contract/src/index.ts b/packages/base-contract/src/index.ts index bba686f8b..f6cea53fa 100644 --- a/packages/base-contract/src/index.ts +++ b/packages/base-contract/src/index.ts @@ -1,13 +1,26 @@ -import { ContractAbi, DataItem, Provider, TxData, TxDataPayable } from '@0xproject/types'; -import { BigNumber } from '@0xproject/utils'; +import { + AbiDefinition, + AbiType, + ContractAbi, + DataItem, + MethodAbi, + Provider, + TxData, + TxDataPayable, +} from '@0xproject/types'; +import { abiUtils, BigNumber } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as ethersContracts from 'ethers-contracts'; import * as _ from 'lodash'; import { formatABIDataItem } from './utils'; +export interface EthersInterfaceByFunctionSignature { + [key: string]: ethersContracts.Interface; +} + export class BaseContract { - protected _ethersInterface: ethersContracts.Interface; + protected _ethersInterfacesByFunctionSignature: EthersInterfaceByFunctionSignature; protected _web3Wrapper: Web3Wrapper; public abi: ContractAbi; public address: string; @@ -49,10 +62,40 @@ export class BaseContract { } return txDataWithDefaults; } + protected _lookupEthersInterface(functionSignature: string): ethersContracts.Interface { + const ethersInterface = this._ethersInterfacesByFunctionSignature[functionSignature]; + if (_.isUndefined(ethersInterface)) { + throw new Error(`Failed to lookup method with function signature '${functionSignature}'`); + } + return ethersInterface; + } + protected _lookupAbi(functionSignature: string): MethodAbi { + const methodAbi = _.find(this.abi, (abiDefinition: AbiDefinition) => { + if (abiDefinition.type !== AbiType.Function) { + return false; + } + const abiFunctionSignature = abiUtils.getFunctionSignature(abiDefinition); + if (abiFunctionSignature === functionSignature) { + return true; + } + return false; + }) as MethodAbi; + return methodAbi; + } constructor(abi: ContractAbi, address: string, provider: Provider, defaults?: Partial) { this._web3Wrapper = new Web3Wrapper(provider, defaults); this.abi = abi; this.address = address; - this._ethersInterface = new ethersContracts.Interface(abi); + const methodAbis = this.abi.filter( + (abiDefinition: AbiDefinition) => abiDefinition.type === AbiType.Function, + ) as MethodAbi[]; + this._ethersInterfacesByFunctionSignature = _.transform( + methodAbis, + (result: EthersInterfaceByFunctionSignature, methodAbi) => { + const functionSignature = abiUtils.getFunctionSignature(methodAbi); + result[functionSignature] = new ethersContracts.Interface([methodAbi]); + }, + {}, + ); } } diff --git a/packages/contract_templates/contract.handlebars b/packages/contract_templates/contract.handlebars index 3e3f87f10..472452d74 100644 --- a/packages/contract_templates/contract.handlebars +++ b/packages/contract_templates/contract.handlebars @@ -41,6 +41,6 @@ export class {{contractName}}Contract extends BaseContract { {{/each}} constructor(abi: ContractAbi, address: string, provider: Provider, defaults?: Partial) { super(abi, address, provider, defaults); - classUtils.bindAll(this, ['_ethersInterface', 'address', 'abi', '_web3Wrapper']); + classUtils.bindAll(this, ['_ethersInterfacesByFunctionSignature', 'address', 'abi', '_web3Wrapper']); } } // tslint:disable:max-file-line-count diff --git a/packages/contract_templates/partials/callAsync.handlebars b/packages/contract_templates/partials/callAsync.handlebars index 8de69203e..a6f4abdf2 100644 --- a/packages/contract_templates/partials/callAsync.handlebars +++ b/packages/contract_templates/partials/callAsync.handlebars @@ -5,9 +5,9 @@ async callAsync( defaultBlock?: BlockParam, ): Promise<{{> return_type outputs=outputs}}> { const self = this as any as {{contractName}}Contract; - const inputAbi = (_.find(self.abi, {name: '{{this.name}}'}) as MethodAbi).inputs; + const inputAbi = self._lookupAbi('{{this.functionSignature}}').inputs; [{{> params inputs=inputs}}] = BaseContract._formatABIDataItemList(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(self)); - const encodedData = self._ethersInterface.functions.{{this.name}}( + const encodedData = self._lookupEthersInterface('{{this.functionSignature}}').functions.{{this.name}}( {{> params inputs=inputs}} ).data; const callDataWithDefaults = await self._applyDefaultsToTxDataAsync( diff --git a/packages/contract_templates/partials/tx.handlebars b/packages/contract_templates/partials/tx.handlebars index 41ba6d3f7..22fe0c597 100644 --- a/packages/contract_templates/partials/tx.handlebars +++ b/packages/contract_templates/partials/tx.handlebars @@ -1,4 +1,4 @@ -public {{this.name}} = { +public {{this.tsName}} = { async sendTransactionAsync( {{> typed_params inputs=inputs}} {{#this.payable}} @@ -9,17 +9,17 @@ public {{this.name}} = { {{/this.payable}} ): Promise { const self = this as any as {{contractName}}Contract; - const inputAbi = (_.find(self.abi, {name: '{{this.name}}'}) as MethodAbi).inputs; + const inputAbi = self._lookupAbi('{{this.functionSignature}}').inputs; [{{> params inputs=inputs}}] = BaseContract._formatABIDataItemList(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(self)); - const encodedData = self._ethersInterface.functions.{{this.name}}( + const encodedData = self._lookupEthersInterface('{{this.functionSignature}}').functions.{{this.name}}( {{> params inputs=inputs}} - ).data + ).data; const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( { ...txData, data: encodedData, }, - self.{{this.name}}.estimateGasAsync.bind( + self.{{this.tsName}}.estimateGasAsync.bind( self, {{> params inputs=inputs}} ), @@ -32,11 +32,11 @@ public {{this.name}} = { txData: Partial = {}, ): Promise { const self = this as any as {{contractName}}Contract; - const inputAbi = (_.find(self.abi, {name: '{{this.name}}'}) as MethodAbi).inputs; + const inputAbi = self._lookupAbi('{{this.functionSignature}}').inputs; [{{> params inputs=inputs}}] = BaseContract._formatABIDataItemList(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(this)); - const encodedData = self._ethersInterface.functions.{{this.name}}( + const encodedData = self._lookupEthersInterface('{{this.functionSignature}}').functions.{{this.name}}( {{> params inputs=inputs}} - ).data + ).data; const txDataWithDefaults = await self._applyDefaultsToTxDataAsync( { ...txData, @@ -50,11 +50,11 @@ public {{this.name}} = { {{> typed_params inputs=inputs}} ): string { const self = this as any as {{contractName}}Contract; - const inputAbi = (_.find(self.abi, {name: '{{this.name}}'}) as MethodAbi).inputs; + const inputAbi = self._lookupAbi('{{this.functionSignature}}').inputs; [{{> params inputs=inputs}}] = BaseContract._formatABIDataItemList(inputAbi, [{{> params inputs=inputs}}], BaseContract._bigNumberToString.bind(self)); - const abiEncodedTransactionData = self._ethersInterface.functions.{{this.name}}( + const abiEncodedTransactionData = self._lookupEthersInterface('{{this.name}}').functions.{{this.name}}( {{> params inputs=inputs}} - ).data + ).data; return abiEncodedTransactionData; }, {{> callAsync}} diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 8152a9afe..6b7776422 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -16,7 +16,7 @@ "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov", "run_mocha": "mocha 'lib/test/**/*.js' --timeout 100000 --bail --exit", "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", - "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contracts-dir src/contracts --artifacts-dir src/artifacts", + "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contract-dirs src/contracts --artifacts-dir src/artifacts", "clean": "shx rm -rf ./lib", "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", "migrate": "yarn build && yarn compile && node ./lib/migrations/index.js", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index f6eff9973..34d27081b 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -47,12 +47,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/deployer/README.md", "devDependencies": { + "@0xproject/dev-utils": "^0.2.1", "@0xproject/monorepo-scripts": "^0.1.16", "@0xproject/tslint-config": "^0.4.14", "@types/require-from-string": "^1.2.0", "@types/semver": "^5.5.0", "@types/yargs": "^11.0.0", "chai": "^4.0.1", + "chai-as-promised": "^7.1.0", "copyfiles": "^1.2.0", "dirty-chai": "^2.0.1", "mocha": "^4.0.1", diff --git a/packages/deployer/src/cli.ts b/packages/deployer/src/cli.ts index d1bd645b3..3d69925a8 100644 --- a/packages/deployer/src/cli.ts +++ b/packages/deployer/src/cli.ts @@ -11,7 +11,7 @@ import * as yargs from 'yargs'; import { commands } from './commands'; import { constants } from './utils/constants'; import { consoleReporter } from './utils/error_reporter'; -import { CliOptions, CompilerOptions, DeployerOptions } from './utils/types'; +import { CliOptions, CompilerOptions, ContractDirectory, DeployerOptions } from './utils/types'; const DEFAULT_OPTIMIZER_ENABLED = false; const DEFAULT_CONTRACTS_DIR = path.resolve('src/contracts'); @@ -27,7 +27,7 @@ const DEFAULT_CONTRACTS_LIST = '*'; */ async function onCompileCommandAsync(argv: CliOptions): Promise { const opts: CompilerOptions = { - contractsDir: argv.contractsDir, + contractDirs: getContractDirectoriesFromList(argv.contractDirs), networkId: argv.networkId, optimizerEnabled: argv.shouldOptimize, artifactsDir: argv.artifactsDir, @@ -45,7 +45,7 @@ async function onDeployCommandAsync(argv: CliOptions): Promise { const web3Wrapper = new Web3Wrapper(web3Provider); const networkId = await web3Wrapper.getNetworkIdAsync(); const compilerOpts: CompilerOptions = { - contractsDir: argv.contractsDir, + contractDirs: getContractDirectoriesFromList(argv.contractsDir), networkId, optimizerEnabled: argv.shouldOptimize, artifactsDir: argv.artifactsDir, @@ -67,6 +67,29 @@ async function onDeployCommandAsync(argv: CliOptions): Promise { const deployerArgs = deployerArgsString.split(','); await commands.deployAsync(argv.contract as string, deployerArgs, deployerOpts); } +/** + * Creates a set of contracts to compile. + * @param contractDirectoriesList Comma separated list of contract directories + * @return Set of contract directories + */ +function getContractDirectoriesFromList(contractDirectoriesList: string): Set { + const directories = new Set(); + const possiblyNamespacedDirectories = contractDirectoriesList.split(','); + _.forEach(possiblyNamespacedDirectories, namespacedDirectory => { + const directoryComponents = namespacedDirectory.split(':'); + if (directoryComponents.length === 1) { + const directory = { namespace: '', path: directoryComponents[0] }; + directories.add(directory); + } else if (directoryComponents.length === 2) { + const directory = { namespace: directoryComponents[0], path: directoryComponents[1] }; + directories.add(directory); + } else { + throw new Error(`Unable to parse contracts directory: '${namespacedDirectory}'`); + } + }); + + return directories; +} /** * Creates a set of contracts to compile. * @param contracts Comma separated list of contracts to compile @@ -78,8 +101,7 @@ function getContractsSetFromList(contracts: string): Set { } const contractsArray = contracts.split(','); _.forEach(contractsArray, contractName => { - const fileName = `${contractName}${constants.SOLIDITY_FILE_EXTENSION}`; - specifiedContracts.add(fileName); + specifiedContracts.add(contractName); }); return specifiedContracts; } @@ -104,10 +126,11 @@ function deployCommandBuilder(yargsInstance: any) { (() => { const identityCommandBuilder = _.identity; return yargs - .option('contracts-dir', { + .option('contract-dirs', { type: 'string', default: DEFAULT_CONTRACTS_DIR, - description: 'path of contracts directory to compile', + description: + "comma separated list of contract directories.\nTo avoid filename clashes, directories should be prefixed with a namespace as follows: 'namespace:/path/to/dir'.", }) .option('network-id', { type: 'number', diff --git a/packages/deployer/src/compiler.ts b/packages/deployer/src/compiler.ts index ba360cb57..beaaab141 100644 --- a/packages/deployer/src/compiler.ts +++ b/packages/deployer/src/compiler.ts @@ -1,4 +1,4 @@ -import { ContractAbi } from '@0xproject/types'; +import { AbiType, ContractAbi, MethodAbi } from '@0xproject/types'; import { logUtils, promisify } from '@0xproject/utils'; import * as ethUtil from 'ethereumjs-util'; import * as fs from 'fs'; @@ -11,6 +11,8 @@ import solc = require('solc'); import { binPaths } from './solc/bin_paths'; import { + constructContractId, + constructUniqueSourceFileId, createDirIfDoesNotExistAsync, findImportIfExist, getContractArtifactIfExistsAsync, @@ -23,11 +25,14 @@ import { fsWrapper } from './utils/fs_wrapper'; import { CompilerOptions, ContractArtifact, + ContractDirectory, + ContractIds, ContractNetworkData, ContractNetworks, - ContractSourceData, + ContractSourceDataByFileId, ContractSources, ContractSpecificSourceData, + FunctionNameToSeenCount, } from './utils/types'; import { utils } from './utils/utils'; @@ -39,20 +44,22 @@ const SOLC_BIN_DIR = path.join(__dirname, '..', '..', 'solc_bin'); * to artifact files. */ export class Compiler { - private _contractsDir: string; + private _contractDirs: Set; private _networkId: number; private _optimizerEnabled: boolean; private _artifactsDir: string; // This get's set in the beggining of `compileAsync` function. It's not called from a constructor, but it's the only public method of that class and could as well be. private _contractSources!: ContractSources; private _specifiedContracts: Set = new Set(); - private _contractSourceData: ContractSourceData = {}; + private _contractSourceDataByFileId: ContractSourceDataByFileId = {}; + /** * Recursively retrieves Solidity source code from directory. * @param dirPath Directory to search. - * @return Mapping of contract fileName to contract source. + * @param contractBaseDir Base contracts directory of search tree. + * @return Mapping of sourceFilePath to the contract source. */ - private static async _getContractSourcesAsync(dirPath: string): Promise { + private static async _getContractSourcesAsync(dirPath: string, contractBaseDir: string): Promise { let dirContents: string[] = []; try { dirContents = await fsWrapper.readdirAsync(dirPath); @@ -68,14 +75,15 @@ export class Compiler { encoding: 'utf8', }; const source = await fsWrapper.readFileAsync(contentPath, opts); - sources[fileName] = source; - logUtils.log(`Reading ${fileName} source...`); + const sourceFilePath = contentPath.slice(contractBaseDir.length); + sources[sourceFilePath] = source; + logUtils.log(`Reading ${sourceFilePath} source...`); } catch (err) { logUtils.log(`Could not find file at ${contentPath}`); } } else { try { - const nestedSources = await Compiler._getContractSourcesAsync(contentPath); + const nestedSources = await Compiler._getContractSourcesAsync(contentPath, contractBaseDir); sources = { ...sources, ...nestedSources, @@ -93,7 +101,7 @@ export class Compiler { * @return An instance of the Compiler class. */ constructor(opts: CompilerOptions) { - this._contractsDir = opts.contractsDir; + this._contractDirs = opts.contractDirs; this._networkId = opts.networkId; this._optimizerEnabled = opts.optimizerEnabled; this._artifactsDir = opts.artifactsDir; @@ -105,25 +113,47 @@ export class Compiler { public async compileAsync(): Promise { await createDirIfDoesNotExistAsync(this._artifactsDir); await createDirIfDoesNotExistAsync(SOLC_BIN_DIR); - this._contractSources = await Compiler._getContractSourcesAsync(this._contractsDir); + this._contractSources = {}; + const contractIds: ContractIds = {}; + const contractDirs = Array.from(this._contractDirs.values()); + for (const contractDir of contractDirs) { + const sources = await Compiler._getContractSourcesAsync(contractDir.path, contractDir.path); + _.forIn(sources, (source, sourceFilePath) => { + const sourceFileId = constructUniqueSourceFileId(contractDir.namespace, sourceFilePath); + // Record the file's source and data + if (!_.isUndefined(this._contractSources[sourceFileId])) { + throw new Error(`Found duplicate source files with ID '${sourceFileId}'`); + } + this._contractSources[sourceFileId] = source; + // Create a mapping between the contract id and its source file id + const contractId = constructContractId(contractDir.namespace, sourceFilePath); + if (!_.isUndefined(contractIds[contractId])) { + throw new Error(`Found duplicate contract with ID '${contractId}'`); + } + contractIds[contractId] = sourceFileId; + }); + } _.forIn(this._contractSources, this._setContractSpecificSourceData.bind(this)); - const fileNames = this._specifiedContracts.has(ALL_CONTRACTS_IDENTIFIER) - ? _.keys(this._contractSources) + const specifiedContractIds = this._specifiedContracts.has(ALL_CONTRACTS_IDENTIFIER) + ? _.keys(contractIds) : Array.from(this._specifiedContracts.values()); - for (const fileName of fileNames) { - await this._compileContractAsync(fileName); - } + await Promise.all( + _.map(specifiedContractIds, async contractId => this._compileContractAsync(contractIds[contractId])), + ); } /** * Compiles contract and saves artifact to artifactsDir. - * @param fileName Name of contract with '.sol' extension. + * @param sourceFileId Unique ID of the source file. */ - private async _compileContractAsync(fileName: string): Promise { + private async _compileContractAsync(sourceFileId: string): Promise { if (_.isUndefined(this._contractSources)) { throw new Error('Contract sources not yet initialized'); } - const contractSpecificSourceData = this._contractSourceData[fileName]; - const currentArtifactIfExists = await getContractArtifactIfExistsAsync(this._artifactsDir, fileName); + if (_.isUndefined(this._contractSourceDataByFileId[sourceFileId])) { + throw new Error(`Contract source for ${sourceFileId} not yet initialized`); + } + const contractSpecificSourceData = this._contractSourceDataByFileId[sourceFileId]; + const currentArtifactIfExists = await getContractArtifactIfExistsAsync(this._artifactsDir, sourceFileId); const sourceHash = `0x${contractSpecificSourceData.sourceHash.toString('hex')}`; const sourceTreeHash = `0x${contractSpecificSourceData.sourceTreeHash.toString('hex')}`; @@ -162,16 +192,17 @@ export class Compiler { } const solcInstance = solc.setupMethods(requireFromString(solcjs, compilerBinFilename)); - logUtils.log(`Compiling ${fileName} with Solidity v${solcVersion}...`); - const source = this._contractSources[fileName]; + logUtils.log(`Compiling ${sourceFileId} with Solidity v${solcVersion}...`); + const source = this._contractSources[sourceFileId]; const input = { - [fileName]: source, + [sourceFileId]: source, }; const sourcesToCompile = { sources: input, }; + const compiled = solcInstance.compile(sourcesToCompile, Number(this._optimizerEnabled), importPath => - findImportIfExist(this._contractSources, importPath), + findImportIfExist(this._contractSources, sourceFileId, importPath), ); if (!_.isUndefined(compiled.errors)) { @@ -193,11 +224,11 @@ export class Compiler { }); } } - const contractName = path.basename(fileName, constants.SOLIDITY_FILE_EXTENSION); - const contractIdentifier = `${fileName}:${contractName}`; + const contractName = path.basename(sourceFileId, constants.SOLIDITY_FILE_EXTENSION); + const contractIdentifier = `${sourceFileId}:${contractName}`; if (_.isUndefined(compiled.contracts[contractIdentifier])) { throw new Error( - `Contract ${contractName} not found in ${fileName}. Please make sure your contract has the same name as it's file name`, + `Contract ${contractName} not found in ${sourceFileId}. Please make sure your contract has the same name as it's file name`, ); } const abi: ContractAbi = JSON.parse(compiled.contracts[contractIdentifier].interface); @@ -207,6 +238,7 @@ export class Compiler { const sourceMapRuntime = compiled.contracts[contractIdentifier].srcmapRuntime; const sources = _.keys(compiled.sources); const updated_at = Date.now(); + const contractNetworkData: ContractNetworkData = { solc_version: solcVersion, keccak256: sourceHash, @@ -243,28 +275,30 @@ export class Compiler { const artifactString = utils.stringifyWithFormatting(newArtifact); const currentArtifactPath = `${this._artifactsDir}/${contractName}.json`; await fsWrapper.writeFileAsync(currentArtifactPath, artifactString); - logUtils.log(`${fileName} artifact saved!`); + logUtils.log(`${sourceFileId} artifact saved!`); } /** * Gets contract dependendencies and keccak256 hash from source. * @param source Source code of contract. + * @param fileId FileId of the contract source file. * @return Object with contract dependencies and keccak256 hash of source. */ - private _setContractSpecificSourceData(source: string, fileName: string): void { - if (!_.isUndefined(this._contractSourceData[fileName])) { + private _setContractSpecificSourceData(source: string, fileId: string): void { + if (!_.isUndefined(this._contractSourceDataByFileId[fileId])) { return; } const sourceHash = ethUtil.sha3(source); const solcVersionRange = parseSolidityVersionRange(source); - const dependencies = parseDependencies(source); - const sourceTreeHash = this._getSourceTreeHash(fileName, sourceHash, dependencies); - this._contractSourceData[fileName] = { + const dependencies = parseDependencies(source, fileId); + const sourceTreeHash = this._getSourceTreeHash(fileId, sourceHash, dependencies); + this._contractSourceDataByFileId[fileId] = { dependencies, solcVersionRange, sourceHash, sourceTreeHash, }; } + /** * Gets the source tree hash for a file and its dependencies. * @param fileName Name of contract file. @@ -276,7 +310,7 @@ export class Compiler { const dependencySourceTreeHashes = _.map(dependencies, dependency => { const source = this._contractSources[dependency]; this._setContractSpecificSourceData(source, dependency); - const sourceData = this._contractSourceData[dependency]; + const sourceData = this._contractSourceDataByFileId[dependency]; return this._getSourceTreeHash(dependency, sourceData.sourceHash, sourceData.dependencies); }); const sourceTreeHashesBuffer = Buffer.concat([sourceHash, ...dependencySourceTreeHashes]); diff --git a/packages/deployer/src/utils/compiler.ts b/packages/deployer/src/utils/compiler.ts index d5137d394..600495693 100644 --- a/packages/deployer/src/utils/compiler.ts +++ b/packages/deployer/src/utils/compiler.ts @@ -1,3 +1,4 @@ +import { AbiType, ContractAbi, MethodAbi } from '@0xproject/types'; import { logUtils } from '@0xproject/utils'; import * as _ from 'lodash'; import * as path from 'path'; @@ -5,8 +6,48 @@ import * as solc from 'solc'; import { constants } from './constants'; import { fsWrapper } from './fs_wrapper'; -import { ContractArtifact, ContractSources } from './types'; +import { ContractArtifact, ContractSources, FunctionNameToSeenCount } from './types'; +/** + * Constructs a system-wide unique identifier for a source file. + * @param directoryNamespace Namespace of the source file's root contract directory. + * @param sourceFilePath Path to a source file, relative to contractBaseDir. + * @return sourceFileId A system-wide unique identifier for the source file. + */ +export function constructUniqueSourceFileId(directoryNamespace: string, sourceFilePath: string): string { + const namespacePrefix = !_.isEmpty(directoryNamespace) ? `/${directoryNamespace}` : ''; + const sourceFilePathNoLeadingSlash = sourceFilePath.replace(/^\/+/g, ''); + const sourceFileId = `${namespacePrefix}/${sourceFilePathNoLeadingSlash}`; + return sourceFileId; +} +/** + * Constructs a system-wide unique identifier for a dependency file. + * @param dependencyFilePath Path from a sourceFile to a dependency. + * @param contractBaseDir Base contracts directory of search tree. + * @return sourceFileId A system-wide unique identifier for the source file. + */ +export function constructDependencyFileId(dependencyFilePath: string, sourceFilePath: string): string { + if (_.startsWith(dependencyFilePath, '/')) { + // Path of the form /namespace/path/to/dependency.sol + return dependencyFilePath; + } else { + // Dependency is relative to the source file: ./dependency.sol, ../../some/path/dependency.sol, etc. + // Join the two paths to construct a valid source file id: /namespace/path/to/dependency.sol + return path.join(path.dirname(sourceFilePath), dependencyFilePath); + } +} +/** + * Constructs a system-wide unique identifier for a contract. + * @param directoryNamespace Namespace of the source file's root contract directory. + * @param sourceFilePath Path to a source file, relative to contractBaseDir. + * @return sourceFileId A system-wide unique identifier for contract. + */ +export function constructContractId(directoryNamespace: string, sourceFilePath: string): string { + const namespacePrefix = !_.isEmpty(directoryNamespace) ? `${directoryNamespace}:` : ''; + const sourceFileName = path.basename(sourceFilePath, constants.SOLIDITY_FILE_EXTENSION); + const contractId = `${namespacePrefix}${sourceFileName}`; + return contractId; +} /** * Gets contract data on network or returns if an artifact does not exist. * @param artifactsDir Path to the artifacts directory. @@ -82,9 +123,10 @@ export function getNormalizedErrMsg(errMsg: string): string { /** * Parses the contract source code and extracts the dendencies * @param source Contract source code + * @param sourceFilePath File path of the source code. * @return List of dependendencies */ -export function parseDependencies(source: string): string[] { +export function parseDependencies(source: string, sourceFileId: string): string[] { // TODO: Use a proper parser const IMPORT_REGEX = /(import\s)/; const DEPENDENCY_PATH_REGEX = /"([^"]+)"/; // Source: https://github.com/BlockChainCompany/soljitsu/blob/master/lib/shared.js @@ -95,8 +137,8 @@ export function parseDependencies(source: string): string[] { const dependencyMatch = line.match(DEPENDENCY_PATH_REGEX); if (!_.isNull(dependencyMatch)) { const dependencyPath = dependencyMatch[1]; - const basenName = path.basename(dependencyPath); - dependencies.push(basenName); + const dependencyId = constructDependencyFileId(dependencyPath, sourceFileId); + dependencies.push(dependencyId); } } }); @@ -107,14 +149,19 @@ export function parseDependencies(source: string): string[] { * Callback to resolve dependencies with `solc.compile`. * Throws error if contractSources not yet initialized. * @param contractSources Source codes of contracts. - * @param importPath Path to an imported dependency. + * @param sourceFileId ID of the source file. + * @param importPath Path of dependency source file. * @return Import contents object containing source code of dependency. */ -export function findImportIfExist(contractSources: ContractSources, importPath: string): solc.ImportContents { - const fileName = path.basename(importPath); - const source = contractSources[fileName]; +export function findImportIfExist( + contractSources: ContractSources, + sourceFileId: string, + importPath: string, +): solc.ImportContents { + const dependencyFileId = constructDependencyFileId(importPath, sourceFileId); + const source = contractSources[dependencyFileId]; if (_.isUndefined(source)) { - throw new Error(`Contract source not found for ${fileName}`); + throw new Error(`Contract source not found for ${dependencyFileId}`); } const importContents: solc.ImportContents = { contents: source, diff --git a/packages/deployer/src/utils/contract.ts b/packages/deployer/src/utils/contract.ts index 9b7baac11..e8dd5218a 100644 --- a/packages/deployer/src/utils/contract.ts +++ b/packages/deployer/src/utils/contract.ts @@ -1,11 +1,9 @@ import { schemas, SchemaValidator } from '@0xproject/json-schemas'; -import { ContractAbi, EventAbi, FunctionAbi, MethodAbi, TxData } from '@0xproject/types'; +import { AbiType, ContractAbi, EventAbi, FunctionAbi, MethodAbi, TxData } from '@0xproject/types'; import { promisify } from '@0xproject/utils'; import * as _ from 'lodash'; import * as Web3 from 'web3'; -import { AbiType } from './types'; - export class Contract implements Web3.ContractInstance { public address: string; public abi: ContractAbi; diff --git a/packages/deployer/src/utils/encoder.ts b/packages/deployer/src/utils/encoder.ts index 4f62662e1..806efbbca 100644 --- a/packages/deployer/src/utils/encoder.ts +++ b/packages/deployer/src/utils/encoder.ts @@ -1,9 +1,7 @@ -import { AbiDefinition, ContractAbi, DataItem } from '@0xproject/types'; +import { AbiDefinition, AbiType, ContractAbi, DataItem } from '@0xproject/types'; import * as _ from 'lodash'; import * as web3Abi from 'web3-eth-abi'; -import { AbiType } from './types'; - export const encoder = { encodeConstructorArgsFromAbi(args: any[], abi: ContractAbi): string { const constructorTypes: string[] = []; diff --git a/packages/deployer/src/utils/types.ts b/packages/deployer/src/utils/types.ts index 7d131f5ce..08cab37b2 100644 --- a/packages/deployer/src/utils/types.ts +++ b/packages/deployer/src/utils/types.ts @@ -18,6 +18,11 @@ export interface ContractNetworks { [key: number]: ContractNetworkData; } +export interface ContractDirectory { + path: string; + namespace: string; +} + export interface ContractNetworkData { solc_version: string; optimizer_enabled: boolean; @@ -40,7 +45,7 @@ export interface SolcErrors { export interface CliOptions extends yargs.Arguments { artifactsDir: string; - contractsDir: string; + contractDirs: string; jsonrpcUrl: string; networkId: number; shouldOptimize: boolean; @@ -51,7 +56,7 @@ export interface CliOptions extends yargs.Arguments { } export interface CompilerOptions { - contractsDir: string; + contractDirs: Set; networkId: number; optimizerEnabled: boolean; artifactsDir: string; @@ -78,7 +83,11 @@ export interface ContractSources { [key: string]: string; } -export interface ContractSourceData { +export interface ContractIds { + [key: string]: string; +} + +export interface ContractSourceDataByFileId { [key: string]: ContractSpecificSourceData; } @@ -98,4 +107,8 @@ export interface Token { swarmHash: string; } +export interface FunctionNameToSeenCount { + [key: string]: number; +} + export type DoneCallback = (err?: Error) => void; diff --git a/packages/deployer/test/compiler_test.ts b/packages/deployer/test/compiler_test.ts index b03ae7935..817a3b3f9 100644 --- a/packages/deployer/test/compiler_test.ts +++ b/packages/deployer/test/compiler_test.ts @@ -3,7 +3,13 @@ import 'mocha'; import { Compiler } from '../src/compiler'; import { fsWrapper } from '../src/utils/fs_wrapper'; -import { CompilerOptions, ContractArtifact, ContractNetworkData, DoneCallback } from '../src/utils/types'; +import { + CompilerOptions, + ContractArtifact, + ContractDirectory, + ContractNetworkData, + DoneCallback, +} from '../src/utils/types'; import { exchange_binary } from './fixtures/exchange_bin'; import { constants } from './util/constants'; @@ -13,11 +19,15 @@ const expect = chai.expect; describe('#Compiler', function() { this.timeout(constants.timeoutMs); const artifactsDir = `${__dirname}/fixtures/artifacts`; - const contractsDir = `${__dirname}/fixtures/contracts`; + const mainContractDir: ContractDirectory = { path: `${__dirname}/fixtures/contracts/main`, namespace: 'main' }; + const baseContractDir: ContractDirectory = { path: `${__dirname}/fixtures/contracts/base`, namespace: 'base' }; + const contractDirs: Set = new Set(); + contractDirs.add(mainContractDir); + contractDirs.add(baseContractDir); const exchangeArtifactPath = `${artifactsDir}/Exchange.json`; const compilerOpts: CompilerOptions = { artifactsDir, - contractsDir, + contractDirs, networkId: constants.networkId, optimizerEnabled: constants.optimizerEnabled, specifiedContracts: new Set(constants.specifiedContracts), diff --git a/packages/deployer/test/compiler_utils_test.ts b/packages/deployer/test/compiler_utils_test.ts index 246304858..5377d3308 100644 --- a/packages/deployer/test/compiler_utils_test.ts +++ b/packages/deployer/test/compiler_utils_test.ts @@ -47,28 +47,34 @@ describe('Compiler utils', () => { }); describe('#parseDependencies', () => { it('correctly parses Exchange dependencies', async () => { - const exchangeSource = await fsWrapper.readFileAsync(`${__dirname}/fixtures/contracts/Exchange.sol`, { + const exchangeSource = await fsWrapper.readFileAsync(`${__dirname}/fixtures/contracts/main/Exchange.sol`, { encoding: 'utf8', }); - expect(parseDependencies(exchangeSource)).to.be.deep.equal([ - 'TokenTransferProxy.sol', - 'Token.sol', - 'SafeMath.sol', + const sourceFileId = '/main/Exchange.sol'; + expect(parseDependencies(exchangeSource, sourceFileId)).to.be.deep.equal([ + '/main/TokenTransferProxy.sol', + '/base/Token.sol', + '/base/SafeMath.sol', ]); }); it('correctly parses TokenTransferProxy dependencies', async () => { const exchangeSource = await fsWrapper.readFileAsync( - `${__dirname}/fixtures/contracts/TokenTransferProxy.sol`, + `${__dirname}/fixtures/contracts/main/TokenTransferProxy.sol`, { encoding: 'utf8', }, ); - expect(parseDependencies(exchangeSource)).to.be.deep.equal(['Token.sol', 'Ownable.sol']); + const sourceFileId = '/main/TokenTransferProxy.sol'; + expect(parseDependencies(exchangeSource, sourceFileId)).to.be.deep.equal([ + '/base/Token.sol', + '/base/Ownable.sol', + ]); }); // TODO: For now that doesn't work. This will work after we switch to a grammar-based parser it.skip('correctly parses commented out dependencies', async () => { const contractWithCommentedOutDependencies = `// import "./TokenTransferProxy.sol";`; - expect(parseDependencies(contractWithCommentedOutDependencies)).to.be.deep.equal([]); + const sourceFileId = '/main/TokenTransferProxy.sol'; + expect(parseDependencies(contractWithCommentedOutDependencies, sourceFileId)).to.be.deep.equal([]); }); }); }); diff --git a/packages/deployer/test/deployer_test.ts b/packages/deployer/test/deployer_test.ts index 9c34d74aa..050cf7d02 100644 --- a/packages/deployer/test/deployer_test.ts +++ b/packages/deployer/test/deployer_test.ts @@ -4,7 +4,13 @@ import 'mocha'; import { Compiler } from '../src/compiler'; import { Deployer } from '../src/deployer'; import { fsWrapper } from '../src/utils/fs_wrapper'; -import { CompilerOptions, ContractArtifact, ContractNetworkData, DoneCallback } from '../src/utils/types'; +import { + CompilerOptions, + ContractArtifact, + ContractDirectory, + ContractNetworkData, + DoneCallback, +} from '../src/utils/types'; import { constructor_args, exchange_binary } from './fixtures/exchange_bin'; import { constants } from './util/constants'; @@ -13,11 +19,15 @@ const expect = chai.expect; describe('#Deployer', () => { const artifactsDir = `${__dirname}/fixtures/artifacts`; - const contractsDir = `${__dirname}/fixtures/contracts`; const exchangeArtifactPath = `${artifactsDir}/Exchange.json`; + const mainContractDir: ContractDirectory = { path: `${__dirname}/fixtures/contracts/main`, namespace: '' }; + const baseContractDir: ContractDirectory = { path: `${__dirname}/fixtures/contracts/base`, namespace: 'base' }; + const contractDirs: Set = new Set(); + contractDirs.add(mainContractDir); + contractDirs.add(baseContractDir); const compilerOpts: CompilerOptions = { artifactsDir, - contractsDir, + contractDirs, networkId: constants.networkId, optimizerEnabled: constants.optimizerEnabled, specifiedContracts: new Set(constants.specifiedContracts), diff --git a/packages/deployer/test/fixtures/contracts/Exchange.sol b/packages/deployer/test/fixtures/contracts/Exchange.sol deleted file mode 100644 index 1b6819700..000000000 --- a/packages/deployer/test/fixtures/contracts/Exchange.sol +++ /dev/null @@ -1,602 +0,0 @@ -/* - - Copyright 2017 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity 0.4.14; - -import "./TokenTransferProxy.sol"; -import "./base/Token.sol"; -import "./base/SafeMath.sol"; - -/// @title Exchange - Facilitates exchange of ERC20 tokens. -/// @author Amir Bandeali - , Will Warren - -contract Exchange is SafeMath { - - // Error Codes - enum Errors { - ORDER_EXPIRED, // Order has already expired - ORDER_FULLY_FILLED_OR_CANCELLED, // Order has already been fully filled or cancelled - ROUNDING_ERROR_TOO_LARGE, // Rounding error too large - INSUFFICIENT_BALANCE_OR_ALLOWANCE // Insufficient balance or allowance for token transfer - } - - string constant public VERSION = "1.0.0"; - uint16 constant public EXTERNAL_QUERY_GAS_LIMIT = 4999; // Changes to state require at least 5000 gas - - address public ZRX_TOKEN_CONTRACT; - address public TOKEN_TRANSFER_PROXY_CONTRACT; - - // Mappings of orderHash => amounts of takerTokenAmount filled or cancelled. - mapping (bytes32 => uint) public filled; - mapping (bytes32 => uint) public cancelled; - - event LogFill( - address indexed maker, - address taker, - address indexed feeRecipient, - address makerToken, - address takerToken, - uint filledMakerTokenAmount, - uint filledTakerTokenAmount, - uint paidMakerFee, - uint paidTakerFee, - bytes32 indexed tokens, // keccak256(makerToken, takerToken), allows subscribing to a token pair - bytes32 orderHash - ); - - event LogCancel( - address indexed maker, - address indexed feeRecipient, - address makerToken, - address takerToken, - uint cancelledMakerTokenAmount, - uint cancelledTakerTokenAmount, - bytes32 indexed tokens, - bytes32 orderHash - ); - - event LogError(uint8 indexed errorId, bytes32 indexed orderHash); - - struct Order { - address maker; - address taker; - address makerToken; - address takerToken; - address feeRecipient; - uint makerTokenAmount; - uint takerTokenAmount; - uint makerFee; - uint takerFee; - uint expirationTimestampInSec; - bytes32 orderHash; - } - - function Exchange(address _zrxToken, address _tokenTransferProxy) { - ZRX_TOKEN_CONTRACT = _zrxToken; - TOKEN_TRANSFER_PROXY_CONTRACT = _tokenTransferProxy; - } - - /* - * Core exchange functions - */ - - /// @dev Fills the input order. - /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. - /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. - /// @param fillTakerTokenAmount Desired amount of takerToken to fill. - /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfer will fail before attempting. - /// @param v ECDSA signature parameter v. - /// @param r ECDSA signature parameters r. - /// @param s ECDSA signature parameters s. - /// @return Total amount of takerToken filled in trade. - function fillOrder( - address[5] orderAddresses, - uint[6] orderValues, - uint fillTakerTokenAmount, - bool shouldThrowOnInsufficientBalanceOrAllowance, - uint8 v, - bytes32 r, - bytes32 s) - public - returns (uint filledTakerTokenAmount) - { - Order memory order = Order({ - maker: orderAddresses[0], - taker: orderAddresses[1], - makerToken: orderAddresses[2], - takerToken: orderAddresses[3], - feeRecipient: orderAddresses[4], - makerTokenAmount: orderValues[0], - takerTokenAmount: orderValues[1], - makerFee: orderValues[2], - takerFee: orderValues[3], - expirationTimestampInSec: orderValues[4], - orderHash: getOrderHash(orderAddresses, orderValues) - }); - - require(order.taker == address(0) || order.taker == msg.sender); - require(order.makerTokenAmount > 0 && order.takerTokenAmount > 0 && fillTakerTokenAmount > 0); - require(isValidSignature( - order.maker, - order.orderHash, - v, - r, - s - )); - - if (block.timestamp >= order.expirationTimestampInSec) { - LogError(uint8(Errors.ORDER_EXPIRED), order.orderHash); - return 0; - } - - uint remainingTakerTokenAmount = safeSub(order.takerTokenAmount, getUnavailableTakerTokenAmount(order.orderHash)); - filledTakerTokenAmount = min256(fillTakerTokenAmount, remainingTakerTokenAmount); - if (filledTakerTokenAmount == 0) { - LogError(uint8(Errors.ORDER_FULLY_FILLED_OR_CANCELLED), order.orderHash); - return 0; - } - - if (isRoundingError(filledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount)) { - LogError(uint8(Errors.ROUNDING_ERROR_TOO_LARGE), order.orderHash); - return 0; - } - - if (!shouldThrowOnInsufficientBalanceOrAllowance && !isTransferable(order, filledTakerTokenAmount)) { - LogError(uint8(Errors.INSUFFICIENT_BALANCE_OR_ALLOWANCE), order.orderHash); - return 0; - } - - uint filledMakerTokenAmount = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount); - uint paidMakerFee; - uint paidTakerFee; - filled[order.orderHash] = safeAdd(filled[order.orderHash], filledTakerTokenAmount); - require(transferViaTokenTransferProxy( - order.makerToken, - order.maker, - msg.sender, - filledMakerTokenAmount - )); - require(transferViaTokenTransferProxy( - order.takerToken, - msg.sender, - order.maker, - filledTakerTokenAmount - )); - if (order.feeRecipient != address(0)) { - if (order.makerFee > 0) { - paidMakerFee = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.makerFee); - require(transferViaTokenTransferProxy( - ZRX_TOKEN_CONTRACT, - order.maker, - order.feeRecipient, - paidMakerFee - )); - } - if (order.takerFee > 0) { - paidTakerFee = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.takerFee); - require(transferViaTokenTransferProxy( - ZRX_TOKEN_CONTRACT, - msg.sender, - order.feeRecipient, - paidTakerFee - )); - } - } - - LogFill( - order.maker, - msg.sender, - order.feeRecipient, - order.makerToken, - order.takerToken, - filledMakerTokenAmount, - filledTakerTokenAmount, - paidMakerFee, - paidTakerFee, - keccak256(order.makerToken, order.takerToken), - order.orderHash - ); - return filledTakerTokenAmount; - } - - /// @dev Cancels the input order. - /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. - /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. - /// @param cancelTakerTokenAmount Desired amount of takerToken to cancel in order. - /// @return Amount of takerToken cancelled. - function cancelOrder( - address[5] orderAddresses, - uint[6] orderValues, - uint cancelTakerTokenAmount) - public - returns (uint) - { - Order memory order = Order({ - maker: orderAddresses[0], - taker: orderAddresses[1], - makerToken: orderAddresses[2], - takerToken: orderAddresses[3], - feeRecipient: orderAddresses[4], - makerTokenAmount: orderValues[0], - takerTokenAmount: orderValues[1], - makerFee: orderValues[2], - takerFee: orderValues[3], - expirationTimestampInSec: orderValues[4], - orderHash: getOrderHash(orderAddresses, orderValues) - }); - - require(order.maker == msg.sender); - require(order.makerTokenAmount > 0 && order.takerTokenAmount > 0 && cancelTakerTokenAmount > 0); - - if (block.timestamp >= order.expirationTimestampInSec) { - LogError(uint8(Errors.ORDER_EXPIRED), order.orderHash); - return 0; - } - - uint remainingTakerTokenAmount = safeSub(order.takerTokenAmount, getUnavailableTakerTokenAmount(order.orderHash)); - uint cancelledTakerTokenAmount = min256(cancelTakerTokenAmount, remainingTakerTokenAmount); - if (cancelledTakerTokenAmount == 0) { - LogError(uint8(Errors.ORDER_FULLY_FILLED_OR_CANCELLED), order.orderHash); - return 0; - } - - cancelled[order.orderHash] = safeAdd(cancelled[order.orderHash], cancelledTakerTokenAmount); - - LogCancel( - order.maker, - order.feeRecipient, - order.makerToken, - order.takerToken, - getPartialAmount(cancelledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount), - cancelledTakerTokenAmount, - keccak256(order.makerToken, order.takerToken), - order.orderHash - ); - return cancelledTakerTokenAmount; - } - - /* - * Wrapper functions - */ - - /// @dev Fills an order with specified parameters and ECDSA signature, throws if specified amount not filled entirely. - /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. - /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. - /// @param fillTakerTokenAmount Desired amount of takerToken to fill. - /// @param v ECDSA signature parameter v. - /// @param r ECDSA signature parameters r. - /// @param s ECDSA signature parameters s. - function fillOrKillOrder( - address[5] orderAddresses, - uint[6] orderValues, - uint fillTakerTokenAmount, - uint8 v, - bytes32 r, - bytes32 s) - public - { - require(fillOrder( - orderAddresses, - orderValues, - fillTakerTokenAmount, - false, - v, - r, - s - ) == fillTakerTokenAmount); - } - - /// @dev Synchronously executes multiple fill orders in a single transaction. - /// @param orderAddresses Array of address arrays containing individual order addresses. - /// @param orderValues Array of uint arrays containing individual order values. - /// @param fillTakerTokenAmounts Array of desired amounts of takerToken to fill in orders. - /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfers will fail before attempting. - /// @param v Array ECDSA signature v parameters. - /// @param r Array of ECDSA signature r parameters. - /// @param s Array of ECDSA signature s parameters. - function batchFillOrders( - address[5][] orderAddresses, - uint[6][] orderValues, - uint[] fillTakerTokenAmounts, - bool shouldThrowOnInsufficientBalanceOrAllowance, - uint8[] v, - bytes32[] r, - bytes32[] s) - public - { - for (uint i = 0; i < orderAddresses.length; i++) { - fillOrder( - orderAddresses[i], - orderValues[i], - fillTakerTokenAmounts[i], - shouldThrowOnInsufficientBalanceOrAllowance, - v[i], - r[i], - s[i] - ); - } - } - - /// @dev Synchronously executes multiple fillOrKill orders in a single transaction. - /// @param orderAddresses Array of address arrays containing individual order addresses. - /// @param orderValues Array of uint arrays containing individual order values. - /// @param fillTakerTokenAmounts Array of desired amounts of takerToken to fill in orders. - /// @param v Array ECDSA signature v parameters. - /// @param r Array of ECDSA signature r parameters. - /// @param s Array of ECDSA signature s parameters. - function batchFillOrKillOrders( - address[5][] orderAddresses, - uint[6][] orderValues, - uint[] fillTakerTokenAmounts, - uint8[] v, - bytes32[] r, - bytes32[] s) - public - { - for (uint i = 0; i < orderAddresses.length; i++) { - fillOrKillOrder( - orderAddresses[i], - orderValues[i], - fillTakerTokenAmounts[i], - v[i], - r[i], - s[i] - ); - } - } - - /// @dev Synchronously executes multiple fill orders in a single transaction until total fillTakerTokenAmount filled. - /// @param orderAddresses Array of address arrays containing individual order addresses. - /// @param orderValues Array of uint arrays containing individual order values. - /// @param fillTakerTokenAmount Desired total amount of takerToken to fill in orders. - /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfers will fail before attempting. - /// @param v Array ECDSA signature v parameters. - /// @param r Array of ECDSA signature r parameters. - /// @param s Array of ECDSA signature s parameters. - /// @return Total amount of fillTakerTokenAmount filled in orders. - function fillOrdersUpTo( - address[5][] orderAddresses, - uint[6][] orderValues, - uint fillTakerTokenAmount, - bool shouldThrowOnInsufficientBalanceOrAllowance, - uint8[] v, - bytes32[] r, - bytes32[] s) - public - returns (uint) - { - uint filledTakerTokenAmount = 0; - for (uint i = 0; i < orderAddresses.length; i++) { - require(orderAddresses[i][3] == orderAddresses[0][3]); // takerToken must be the same for each order - filledTakerTokenAmount = safeAdd(filledTakerTokenAmount, fillOrder( - orderAddresses[i], - orderValues[i], - safeSub(fillTakerTokenAmount, filledTakerTokenAmount), - shouldThrowOnInsufficientBalanceOrAllowance, - v[i], - r[i], - s[i] - )); - if (filledTakerTokenAmount == fillTakerTokenAmount) break; - } - return filledTakerTokenAmount; - } - - /// @dev Synchronously cancels multiple orders in a single transaction. - /// @param orderAddresses Array of address arrays containing individual order addresses. - /// @param orderValues Array of uint arrays containing individual order values. - /// @param cancelTakerTokenAmounts Array of desired amounts of takerToken to cancel in orders. - function batchCancelOrders( - address[5][] orderAddresses, - uint[6][] orderValues, - uint[] cancelTakerTokenAmounts) - public - { - for (uint i = 0; i < orderAddresses.length; i++) { - cancelOrder( - orderAddresses[i], - orderValues[i], - cancelTakerTokenAmounts[i] - ); - } - } - - /* - * Constant public functions - */ - - /// @dev Calculates Keccak-256 hash of order with specified parameters. - /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. - /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. - /// @return Keccak-256 hash of order. - function getOrderHash(address[5] orderAddresses, uint[6] orderValues) - public - constant - returns (bytes32) - { - return keccak256( - address(this), - orderAddresses[0], // maker - orderAddresses[1], // taker - orderAddresses[2], // makerToken - orderAddresses[3], // takerToken - orderAddresses[4], // feeRecipient - orderValues[0], // makerTokenAmount - orderValues[1], // takerTokenAmount - orderValues[2], // makerFee - orderValues[3], // takerFee - orderValues[4], // expirationTimestampInSec - orderValues[5] // salt - ); - } - - /// @dev Verifies that an order signature is valid. - /// @param signer address of signer. - /// @param hash Signed Keccak-256 hash. - /// @param v ECDSA signature parameter v. - /// @param r ECDSA signature parameters r. - /// @param s ECDSA signature parameters s. - /// @return Validity of order signature. - function isValidSignature( - address signer, - bytes32 hash, - uint8 v, - bytes32 r, - bytes32 s) - public - constant - returns (bool) - { - return signer == ecrecover( - keccak256("\x19Ethereum Signed Message:\n32", hash), - v, - r, - s - ); - } - - /// @dev Checks if rounding error > 0.1%. - /// @param numerator Numerator. - /// @param denominator Denominator. - /// @param target Value to multiply with numerator/denominator. - /// @return Rounding error is present. - function isRoundingError(uint numerator, uint denominator, uint target) - public - constant - returns (bool) - { - uint remainder = mulmod(target, numerator, denominator); - if (remainder == 0) return false; // No rounding error. - - uint errPercentageTimes1000000 = safeDiv( - safeMul(remainder, 1000000), - safeMul(numerator, target) - ); - return errPercentageTimes1000000 > 1000; - } - - /// @dev Calculates partial value given a numerator and denominator. - /// @param numerator Numerator. - /// @param denominator Denominator. - /// @param target Value to calculate partial of. - /// @return Partial value of target. - function getPartialAmount(uint numerator, uint denominator, uint target) - public - constant - returns (uint) - { - return safeDiv(safeMul(numerator, target), denominator); - } - - /// @dev Calculates the sum of values already filled and cancelled for a given order. - /// @param orderHash The Keccak-256 hash of the given order. - /// @return Sum of values already filled and cancelled. - function getUnavailableTakerTokenAmount(bytes32 orderHash) - public - constant - returns (uint) - { - return safeAdd(filled[orderHash], cancelled[orderHash]); - } - - - /* - * Internal functions - */ - - /// @dev Transfers a token using TokenTransferProxy transferFrom function. - /// @param token Address of token to transferFrom. - /// @param from Address transfering token. - /// @param to Address receiving token. - /// @param value Amount of token to transfer. - /// @return Success of token transfer. - function transferViaTokenTransferProxy( - address token, - address from, - address to, - uint value) - internal - returns (bool) - { - return TokenTransferProxy(TOKEN_TRANSFER_PROXY_CONTRACT).transferFrom(token, from, to, value); - } - - /// @dev Checks if any order transfers will fail. - /// @param order Order struct of params that will be checked. - /// @param fillTakerTokenAmount Desired amount of takerToken to fill. - /// @return Predicted result of transfers. - function isTransferable(Order order, uint fillTakerTokenAmount) - internal - constant // The called token contracts may attempt to change state, but will not be able to due to gas limits on getBalance and getAllowance. - returns (bool) - { - address taker = msg.sender; - uint fillMakerTokenAmount = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount); - - if (order.feeRecipient != address(0)) { - bool isMakerTokenZRX = order.makerToken == ZRX_TOKEN_CONTRACT; - bool isTakerTokenZRX = order.takerToken == ZRX_TOKEN_CONTRACT; - uint paidMakerFee = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.makerFee); - uint paidTakerFee = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.takerFee); - uint requiredMakerZRX = isMakerTokenZRX ? safeAdd(fillMakerTokenAmount, paidMakerFee) : paidMakerFee; - uint requiredTakerZRX = isTakerTokenZRX ? safeAdd(fillTakerTokenAmount, paidTakerFee) : paidTakerFee; - - if ( getBalance(ZRX_TOKEN_CONTRACT, order.maker) < requiredMakerZRX - || getAllowance(ZRX_TOKEN_CONTRACT, order.maker) < requiredMakerZRX - || getBalance(ZRX_TOKEN_CONTRACT, taker) < requiredTakerZRX - || getAllowance(ZRX_TOKEN_CONTRACT, taker) < requiredTakerZRX - ) return false; - - if (!isMakerTokenZRX && ( getBalance(order.makerToken, order.maker) < fillMakerTokenAmount // Don't double check makerToken if ZRX - || getAllowance(order.makerToken, order.maker) < fillMakerTokenAmount) - ) return false; - if (!isTakerTokenZRX && ( getBalance(order.takerToken, taker) < fillTakerTokenAmount // Don't double check takerToken if ZRX - || getAllowance(order.takerToken, taker) < fillTakerTokenAmount) - ) return false; - } else if ( getBalance(order.makerToken, order.maker) < fillMakerTokenAmount - || getAllowance(order.makerToken, order.maker) < fillMakerTokenAmount - || getBalance(order.takerToken, taker) < fillTakerTokenAmount - || getAllowance(order.takerToken, taker) < fillTakerTokenAmount - ) return false; - - return true; - } - - /// @dev Get token balance of an address. - /// @param token Address of token. - /// @param owner Address of owner. - /// @return Token balance of owner. - function getBalance(address token, address owner) - internal - constant // The called token contract may attempt to change state, but will not be able to due to an added gas limit. - returns (uint) - { - return Token(token).balanceOf.gas(EXTERNAL_QUERY_GAS_LIMIT)(owner); // Limit gas to prevent reentrancy - } - - /// @dev Get allowance of token given to TokenTransferProxy by an address. - /// @param token Address of token. - /// @param owner Address of owner. - /// @return Allowance of token given to TokenTransferProxy by owner. - function getAllowance(address token, address owner) - internal - constant // The called token contract may attempt to change state, but will not be able to due to an added gas limit. - returns (uint) - { - return Token(token).allowance.gas(EXTERNAL_QUERY_GAS_LIMIT)(owner, TOKEN_TRANSFER_PROXY_CONTRACT); // Limit gas to prevent reentrancy - } -} diff --git a/packages/deployer/test/fixtures/contracts/TokenTransferProxy.sol b/packages/deployer/test/fixtures/contracts/TokenTransferProxy.sol deleted file mode 100644 index 90c8e7d66..000000000 --- a/packages/deployer/test/fixtures/contracts/TokenTransferProxy.sol +++ /dev/null @@ -1,115 +0,0 @@ -/* - - Copyright 2017 ZeroEx Intl. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -pragma solidity 0.4.14; - -import "./base/Token.sol"; -import "./base/Ownable.sol"; - -/// @title TokenTransferProxy - Transfers tokens on behalf of contracts that have been approved via decentralized governance. -/// @author Amir Bandeali - , Will Warren - -contract TokenTransferProxy is Ownable { - - /// @dev Only authorized addresses can invoke functions with this modifier. - modifier onlyAuthorized { - require(authorized[msg.sender]); - _; - } - - modifier targetAuthorized(address target) { - require(authorized[target]); - _; - } - - modifier targetNotAuthorized(address target) { - require(!authorized[target]); - _; - } - - mapping (address => bool) public authorized; - address[] public authorities; - - event LogAuthorizedAddressAdded(address indexed target, address indexed caller); - event LogAuthorizedAddressRemoved(address indexed target, address indexed caller); - - /* - * Public functions - */ - - /// @dev Authorizes an address. - /// @param target Address to authorize. - function addAuthorizedAddress(address target) - public - onlyOwner - targetNotAuthorized(target) - { - authorized[target] = true; - authorities.push(target); - LogAuthorizedAddressAdded(target, msg.sender); - } - - /// @dev Removes authorizion of an address. - /// @param target Address to remove authorization from. - function removeAuthorizedAddress(address target) - public - onlyOwner - targetAuthorized(target) - { - delete authorized[target]; - for (uint i = 0; i < authorities.length; i++) { - if (authorities[i] == target) { - authorities[i] = authorities[authorities.length - 1]; - authorities.length -= 1; - break; - } - } - LogAuthorizedAddressRemoved(target, msg.sender); - } - - /// @dev Calls into ERC20 Token contract, invoking transferFrom. - /// @param token Address of token to transfer. - /// @param from Address to transfer token from. - /// @param to Address to transfer token to. - /// @param value Amount of token to transfer. - /// @return Success of transfer. - function transferFrom( - address token, - address from, - address to, - uint value) - public - onlyAuthorized - returns (bool) - { - return Token(token).transferFrom(from, to, value); - } - - /* - * Public constant functions - */ - - /// @dev Gets all authorized addresses. - /// @return Array of authorized addresses. - function getAuthorizedAddresses() - public - constant - returns (address[]) - { - return authorities; - } -} diff --git a/packages/deployer/test/fixtures/contracts/main/Exchange.sol b/packages/deployer/test/fixtures/contracts/main/Exchange.sol new file mode 100644 index 000000000..ea9ca3afa --- /dev/null +++ b/packages/deployer/test/fixtures/contracts/main/Exchange.sol @@ -0,0 +1,602 @@ +/* + + Copyright 2018 ZeroEx Intl. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +pragma solidity 0.4.14; + +import "./TokenTransferProxy.sol"; +import "/base/Token.sol"; +import "/base/SafeMath.sol"; + +/// @title Exchange - Facilitates exchange of ERC20 tokens. +/// @author Amir Bandeali - , Will Warren - +contract Exchange is SafeMath { + + // Error Codes + enum Errors { + ORDER_EXPIRED, // Order has already expired + ORDER_FULLY_FILLED_OR_CANCELLED, // Order has already been fully filled or cancelled + ROUNDING_ERROR_TOO_LARGE, // Rounding error too large + INSUFFICIENT_BALANCE_OR_ALLOWANCE // Insufficient balance or allowance for token transfer + } + + string constant public VERSION = "1.0.0"; + uint16 constant public EXTERNAL_QUERY_GAS_LIMIT = 4999; // Changes to state require at least 5000 gas + + address public ZRX_TOKEN_CONTRACT; + address public TOKEN_TRANSFER_PROXY_CONTRACT; + + // Mappings of orderHash => amounts of takerTokenAmount filled or cancelled. + mapping (bytes32 => uint) public filled; + mapping (bytes32 => uint) public cancelled; + + event LogFill( + address indexed maker, + address taker, + address indexed feeRecipient, + address makerToken, + address takerToken, + uint filledMakerTokenAmount, + uint filledTakerTokenAmount, + uint paidMakerFee, + uint paidTakerFee, + bytes32 indexed tokens, // keccak256(makerToken, takerToken), allows subscribing to a token pair + bytes32 orderHash + ); + + event LogCancel( + address indexed maker, + address indexed feeRecipient, + address makerToken, + address takerToken, + uint cancelledMakerTokenAmount, + uint cancelledTakerTokenAmount, + bytes32 indexed tokens, + bytes32 orderHash + ); + + event LogError(uint8 indexed errorId, bytes32 indexed orderHash); + + struct Order { + address maker; + address taker; + address makerToken; + address takerToken; + address feeRecipient; + uint makerTokenAmount; + uint takerTokenAmount; + uint makerFee; + uint takerFee; + uint expirationTimestampInSec; + bytes32 orderHash; + } + + function Exchange(address _zrxToken, address _tokenTransferProxy) { + ZRX_TOKEN_CONTRACT = _zrxToken; + TOKEN_TRANSFER_PROXY_CONTRACT = _tokenTransferProxy; + } + + /* + * Core exchange functions + */ + + /// @dev Fills the input order. + /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. + /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. + /// @param fillTakerTokenAmount Desired amount of takerToken to fill. + /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfer will fail before attempting. + /// @param v ECDSA signature parameter v. + /// @param r ECDSA signature parameters r. + /// @param s ECDSA signature parameters s. + /// @return Total amount of takerToken filled in trade. + function fillOrder( + address[5] orderAddresses, + uint[6] orderValues, + uint fillTakerTokenAmount, + bool shouldThrowOnInsufficientBalanceOrAllowance, + uint8 v, + bytes32 r, + bytes32 s) + public + returns (uint filledTakerTokenAmount) + { + Order memory order = Order({ + maker: orderAddresses[0], + taker: orderAddresses[1], + makerToken: orderAddresses[2], + takerToken: orderAddresses[3], + feeRecipient: orderAddresses[4], + makerTokenAmount: orderValues[0], + takerTokenAmount: orderValues[1], + makerFee: orderValues[2], + takerFee: orderValues[3], + expirationTimestampInSec: orderValues[4], + orderHash: getOrderHash(orderAddresses, orderValues) + }); + + require(order.taker == address(0) || order.taker == msg.sender); + require(order.makerTokenAmount > 0 && order.takerTokenAmount > 0 && fillTakerTokenAmount > 0); + require(isValidSignature( + order.maker, + order.orderHash, + v, + r, + s + )); + + if (block.timestamp >= order.expirationTimestampInSec) { + LogError(uint8(Errors.ORDER_EXPIRED), order.orderHash); + return 0; + } + + uint remainingTakerTokenAmount = safeSub(order.takerTokenAmount, getUnavailableTakerTokenAmount(order.orderHash)); + filledTakerTokenAmount = min256(fillTakerTokenAmount, remainingTakerTokenAmount); + if (filledTakerTokenAmount == 0) { + LogError(uint8(Errors.ORDER_FULLY_FILLED_OR_CANCELLED), order.orderHash); + return 0; + } + + if (isRoundingError(filledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount)) { + LogError(uint8(Errors.ROUNDING_ERROR_TOO_LARGE), order.orderHash); + return 0; + } + + if (!shouldThrowOnInsufficientBalanceOrAllowance && !isTransferable(order, filledTakerTokenAmount)) { + LogError(uint8(Errors.INSUFFICIENT_BALANCE_OR_ALLOWANCE), order.orderHash); + return 0; + } + + uint filledMakerTokenAmount = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount); + uint paidMakerFee; + uint paidTakerFee; + filled[order.orderHash] = safeAdd(filled[order.orderHash], filledTakerTokenAmount); + require(transferViaTokenTransferProxy( + order.makerToken, + order.maker, + msg.sender, + filledMakerTokenAmount + )); + require(transferViaTokenTransferProxy( + order.takerToken, + msg.sender, + order.maker, + filledTakerTokenAmount + )); + if (order.feeRecipient != address(0)) { + if (order.makerFee > 0) { + paidMakerFee = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.makerFee); + require(transferViaTokenTransferProxy( + ZRX_TOKEN_CONTRACT, + order.maker, + order.feeRecipient, + paidMakerFee + )); + } + if (order.takerFee > 0) { + paidTakerFee = getPartialAmount(filledTakerTokenAmount, order.takerTokenAmount, order.takerFee); + require(transferViaTokenTransferProxy( + ZRX_TOKEN_CONTRACT, + msg.sender, + order.feeRecipient, + paidTakerFee + )); + } + } + + LogFill( + order.maker, + msg.sender, + order.feeRecipient, + order.makerToken, + order.takerToken, + filledMakerTokenAmount, + filledTakerTokenAmount, + paidMakerFee, + paidTakerFee, + keccak256(order.makerToken, order.takerToken), + order.orderHash + ); + return filledTakerTokenAmount; + } + + /// @dev Cancels the input order. + /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. + /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. + /// @param cancelTakerTokenAmount Desired amount of takerToken to cancel in order. + /// @return Amount of takerToken cancelled. + function cancelOrder( + address[5] orderAddresses, + uint[6] orderValues, + uint cancelTakerTokenAmount) + public + returns (uint) + { + Order memory order = Order({ + maker: orderAddresses[0], + taker: orderAddresses[1], + makerToken: orderAddresses[2], + takerToken: orderAddresses[3], + feeRecipient: orderAddresses[4], + makerTokenAmount: orderValues[0], + takerTokenAmount: orderValues[1], + makerFee: orderValues[2], + takerFee: orderValues[3], + expirationTimestampInSec: orderValues[4], + orderHash: getOrderHash(orderAddresses, orderValues) + }); + + require(order.maker == msg.sender); + require(order.makerTokenAmount > 0 && order.takerTokenAmount > 0 && cancelTakerTokenAmount > 0); + + if (block.timestamp >= order.expirationTimestampInSec) { + LogError(uint8(Errors.ORDER_EXPIRED), order.orderHash); + return 0; + } + + uint remainingTakerTokenAmount = safeSub(order.takerTokenAmount, getUnavailableTakerTokenAmount(order.orderHash)); + uint cancelledTakerTokenAmount = min256(cancelTakerTokenAmount, remainingTakerTokenAmount); + if (cancelledTakerTokenAmount == 0) { + LogError(uint8(Errors.ORDER_FULLY_FILLED_OR_CANCELLED), order.orderHash); + return 0; + } + + cancelled[order.orderHash] = safeAdd(cancelled[order.orderHash], cancelledTakerTokenAmount); + + LogCancel( + order.maker, + order.feeRecipient, + order.makerToken, + order.takerToken, + getPartialAmount(cancelledTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount), + cancelledTakerTokenAmount, + keccak256(order.makerToken, order.takerToken), + order.orderHash + ); + return cancelledTakerTokenAmount; + } + + /* + * Wrapper functions + */ + + /// @dev Fills an order with specified parameters and ECDSA signature, throws if specified amount not filled entirely. + /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. + /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. + /// @param fillTakerTokenAmount Desired amount of takerToken to fill. + /// @param v ECDSA signature parameter v. + /// @param r ECDSA signature parameters r. + /// @param s ECDSA signature parameters s. + function fillOrKillOrder( + address[5] orderAddresses, + uint[6] orderValues, + uint fillTakerTokenAmount, + uint8 v, + bytes32 r, + bytes32 s) + public + { + require(fillOrder( + orderAddresses, + orderValues, + fillTakerTokenAmount, + false, + v, + r, + s + ) == fillTakerTokenAmount); + } + + /// @dev Synchronously executes multiple fill orders in a single transaction. + /// @param orderAddresses Array of address arrays containing individual order addresses. + /// @param orderValues Array of uint arrays containing individual order values. + /// @param fillTakerTokenAmounts Array of desired amounts of takerToken to fill in orders. + /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfers will fail before attempting. + /// @param v Array ECDSA signature v parameters. + /// @param r Array of ECDSA signature r parameters. + /// @param s Array of ECDSA signature s parameters. + function batchFillOrders( + address[5][] orderAddresses, + uint[6][] orderValues, + uint[] fillTakerTokenAmounts, + bool shouldThrowOnInsufficientBalanceOrAllowance, + uint8[] v, + bytes32[] r, + bytes32[] s) + public + { + for (uint i = 0; i < orderAddresses.length; i++) { + fillOrder( + orderAddresses[i], + orderValues[i], + fillTakerTokenAmounts[i], + shouldThrowOnInsufficientBalanceOrAllowance, + v[i], + r[i], + s[i] + ); + } + } + + /// @dev Synchronously executes multiple fillOrKill orders in a single transaction. + /// @param orderAddresses Array of address arrays containing individual order addresses. + /// @param orderValues Array of uint arrays containing individual order values. + /// @param fillTakerTokenAmounts Array of desired amounts of takerToken to fill in orders. + /// @param v Array ECDSA signature v parameters. + /// @param r Array of ECDSA signature r parameters. + /// @param s Array of ECDSA signature s parameters. + function batchFillOrKillOrders( + address[5][] orderAddresses, + uint[6][] orderValues, + uint[] fillTakerTokenAmounts, + uint8[] v, + bytes32[] r, + bytes32[] s) + public + { + for (uint i = 0; i < orderAddresses.length; i++) { + fillOrKillOrder( + orderAddresses[i], + orderValues[i], + fillTakerTokenAmounts[i], + v[i], + r[i], + s[i] + ); + } + } + + /// @dev Synchronously executes multiple fill orders in a single transaction until total fillTakerTokenAmount filled. + /// @param orderAddresses Array of address arrays containing individual order addresses. + /// @param orderValues Array of uint arrays containing individual order values. + /// @param fillTakerTokenAmount Desired total amount of takerToken to fill in orders. + /// @param shouldThrowOnInsufficientBalanceOrAllowance Test if transfers will fail before attempting. + /// @param v Array ECDSA signature v parameters. + /// @param r Array of ECDSA signature r parameters. + /// @param s Array of ECDSA signature s parameters. + /// @return Total amount of fillTakerTokenAmount filled in orders. + function fillOrdersUpTo( + address[5][] orderAddresses, + uint[6][] orderValues, + uint fillTakerTokenAmount, + bool shouldThrowOnInsufficientBalanceOrAllowance, + uint8[] v, + bytes32[] r, + bytes32[] s) + public + returns (uint) + { + uint filledTakerTokenAmount = 0; + for (uint i = 0; i < orderAddresses.length; i++) { + require(orderAddresses[i][3] == orderAddresses[0][3]); // takerToken must be the same for each order + filledTakerTokenAmount = safeAdd(filledTakerTokenAmount, fillOrder( + orderAddresses[i], + orderValues[i], + safeSub(fillTakerTokenAmount, filledTakerTokenAmount), + shouldThrowOnInsufficientBalanceOrAllowance, + v[i], + r[i], + s[i] + )); + if (filledTakerTokenAmount == fillTakerTokenAmount) break; + } + return filledTakerTokenAmount; + } + + /// @dev Synchronously cancels multiple orders in a single transaction. + /// @param orderAddresses Array of address arrays containing individual order addresses. + /// @param orderValues Array of uint arrays containing individual order values. + /// @param cancelTakerTokenAmounts Array of desired amounts of takerToken to cancel in orders. + function batchCancelOrders( + address[5][] orderAddresses, + uint[6][] orderValues, + uint[] cancelTakerTokenAmounts) + public + { + for (uint i = 0; i < orderAddresses.length; i++) { + cancelOrder( + orderAddresses[i], + orderValues[i], + cancelTakerTokenAmounts[i] + ); + } + } + + /* + * Constant public functions + */ + + /// @dev Calculates Keccak-256 hash of order with specified parameters. + /// @param orderAddresses Array of order's maker, taker, makerToken, takerToken, and feeRecipient. + /// @param orderValues Array of order's makerTokenAmount, takerTokenAmount, makerFee, takerFee, expirationTimestampInSec, and salt. + /// @return Keccak-256 hash of order. + function getOrderHash(address[5] orderAddresses, uint[6] orderValues) + public + constant + returns (bytes32) + { + return keccak256( + address(this), + orderAddresses[0], // maker + orderAddresses[1], // taker + orderAddresses[2], // makerToken + orderAddresses[3], // takerToken + orderAddresses[4], // feeRecipient + orderValues[0], // makerTokenAmount + orderValues[1], // takerTokenAmount + orderValues[2], // makerFee + orderValues[3], // takerFee + orderValues[4], // expirationTimestampInSec + orderValues[5] // salt + ); + } + + /// @dev Verifies that an order signature is valid. + /// @param signer address of signer. + /// @param hash Signed Keccak-256 hash. + /// @param v ECDSA signature parameter v. + /// @param r ECDSA signature parameters r. + /// @param s ECDSA signature parameters s. + /// @return Validity of order signature. + function isValidSignature( + address signer, + bytes32 hash, + uint8 v, + bytes32 r, + bytes32 s) + public + constant + returns (bool) + { + return signer == ecrecover( + keccak256("\x19Ethereum Signed Message:\n32", hash), + v, + r, + s + ); + } + + /// @dev Checks if rounding error > 0.1%. + /// @param numerator Numerator. + /// @param denominator Denominator. + /// @param target Value to multiply with numerator/denominator. + /// @return Rounding error is present. + function isRoundingError(uint numerator, uint denominator, uint target) + public + constant + returns (bool) + { + uint remainder = mulmod(target, numerator, denominator); + if (remainder == 0) return false; // No rounding error. + + uint errPercentageTimes1000000 = safeDiv( + safeMul(remainder, 1000000), + safeMul(numerator, target) + ); + return errPercentageTimes1000000 > 1000; + } + + /// @dev Calculates partial value given a numerator and denominator. + /// @param numerator Numerator. + /// @param denominator Denominator. + /// @param target Value to calculate partial of. + /// @return Partial value of target. + function getPartialAmount(uint numerator, uint denominator, uint target) + public + constant + returns (uint) + { + return safeDiv(safeMul(numerator, target), denominator); + } + + /// @dev Calculates the sum of values already filled and cancelled for a given order. + /// @param orderHash The Keccak-256 hash of the given order. + /// @return Sum of values already filled and cancelled. + function getUnavailableTakerTokenAmount(bytes32 orderHash) + public + constant + returns (uint) + { + return safeAdd(filled[orderHash], cancelled[orderHash]); + } + + + /* + * Internal functions + */ + + /// @dev Transfers a token using TokenTransferProxy transferFrom function. + /// @param token Address of token to transferFrom. + /// @param from Address transfering token. + /// @param to Address receiving token. + /// @param value Amount of token to transfer. + /// @return Success of token transfer. + function transferViaTokenTransferProxy( + address token, + address from, + address to, + uint value) + internal + returns (bool) + { + return TokenTransferProxy(TOKEN_TRANSFER_PROXY_CONTRACT).transferFrom(token, from, to, value); + } + + /// @dev Checks if any order transfers will fail. + /// @param order Order struct of params that will be checked. + /// @param fillTakerTokenAmount Desired amount of takerToken to fill. + /// @return Predicted result of transfers. + function isTransferable(Order order, uint fillTakerTokenAmount) + internal + constant // The called token contracts may attempt to change state, but will not be able to due to gas limits on getBalance and getAllowance. + returns (bool) + { + address taker = msg.sender; + uint fillMakerTokenAmount = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.makerTokenAmount); + + if (order.feeRecipient != address(0)) { + bool isMakerTokenZRX = order.makerToken == ZRX_TOKEN_CONTRACT; + bool isTakerTokenZRX = order.takerToken == ZRX_TOKEN_CONTRACT; + uint paidMakerFee = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.makerFee); + uint paidTakerFee = getPartialAmount(fillTakerTokenAmount, order.takerTokenAmount, order.takerFee); + uint requiredMakerZRX = isMakerTokenZRX ? safeAdd(fillMakerTokenAmount, paidMakerFee) : paidMakerFee; + uint requiredTakerZRX = isTakerTokenZRX ? safeAdd(fillTakerTokenAmount, paidTakerFee) : paidTakerFee; + + if ( getBalance(ZRX_TOKEN_CONTRACT, order.maker) < requiredMakerZRX + || getAllowance(ZRX_TOKEN_CONTRACT, order.maker) < requiredMakerZRX + || getBalance(ZRX_TOKEN_CONTRACT, taker) < requiredTakerZRX + || getAllowance(ZRX_TOKEN_CONTRACT, taker) < requiredTakerZRX + ) return false; + + if (!isMakerTokenZRX && ( getBalance(order.makerToken, order.maker) < fillMakerTokenAmount // Don't double check makerToken if ZRX + || getAllowance(order.makerToken, order.maker) < fillMakerTokenAmount) + ) return false; + if (!isTakerTokenZRX && ( getBalance(order.takerToken, taker) < fillTakerTokenAmount // Don't double check takerToken if ZRX + || getAllowance(order.takerToken, taker) < fillTakerTokenAmount) + ) return false; + } else if ( getBalance(order.makerToken, order.maker) < fillMakerTokenAmount + || getAllowance(order.makerToken, order.maker) < fillMakerTokenAmount + || getBalance(order.takerToken, taker) < fillTakerTokenAmount + || getAllowance(order.takerToken, taker) < fillTakerTokenAmount + ) return false; + + return true; + } + + /// @dev Get token balance of an address. + /// @param token Address of token. + /// @param owner Address of owner. + /// @return Token balance of owner. + function getBalance(address token, address owner) + internal + constant // The called token contract may attempt to change state, but will not be able to due to an added gas limit. + returns (uint) + { + return Token(token).balanceOf.gas(EXTERNAL_QUERY_GAS_LIMIT)(owner); // Limit gas to prevent reentrancy + } + + /// @dev Get allowance of token given to TokenTransferProxy by an address. + /// @param token Address of token. + /// @param owner Address of owner. + /// @return Allowance of token given to TokenTransferProxy by owner. + function getAllowance(address token, address owner) + internal + constant // The called token contract may attempt to change state, but will not be able to due to an added gas limit. + returns (uint) + { + return Token(token).allowance.gas(EXTERNAL_QUERY_GAS_LIMIT)(owner, TOKEN_TRANSFER_PROXY_CONTRACT); // Limit gas to prevent reentrancy + } +} diff --git a/packages/deployer/test/fixtures/contracts/main/TokenTransferProxy.sol b/packages/deployer/test/fixtures/contracts/main/TokenTransferProxy.sol new file mode 100644 index 000000000..99d16cb57 --- /dev/null +++ b/packages/deployer/test/fixtures/contracts/main/TokenTransferProxy.sol @@ -0,0 +1,115 @@ +/* + + Copyright 2018 ZeroEx Intl. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +pragma solidity 0.4.14; + +import "/base/Token.sol"; +import "/base/Ownable.sol"; + +/// @title TokenTransferProxy - Transfers tokens on behalf of contracts that have been approved via decentralized governance. +/// @author Amir Bandeali - , Will Warren - +contract TokenTransferProxy is Ownable { + + /// @dev Only authorized addresses can invoke functions with this modifier. + modifier onlyAuthorized { + require(authorized[msg.sender]); + _; + } + + modifier targetAuthorized(address target) { + require(authorized[target]); + _; + } + + modifier targetNotAuthorized(address target) { + require(!authorized[target]); + _; + } + + mapping (address => bool) public authorized; + address[] public authorities; + + event LogAuthorizedAddressAdded(address indexed target, address indexed caller); + event LogAuthorizedAddressRemoved(address indexed target, address indexed caller); + + /* + * Public functions + */ + + /// @dev Authorizes an address. + /// @param target Address to authorize. + function addAuthorizedAddress(address target) + public + onlyOwner + targetNotAuthorized(target) + { + authorized[target] = true; + authorities.push(target); + LogAuthorizedAddressAdded(target, msg.sender); + } + + /// @dev Removes authorizion of an address. + /// @param target Address to remove authorization from. + function removeAuthorizedAddress(address target) + public + onlyOwner + targetAuthorized(target) + { + delete authorized[target]; + for (uint i = 0; i < authorities.length; i++) { + if (authorities[i] == target) { + authorities[i] = authorities[authorities.length - 1]; + authorities.length -= 1; + break; + } + } + LogAuthorizedAddressRemoved(target, msg.sender); + } + + /// @dev Calls into ERC20 Token contract, invoking transferFrom. + /// @param token Address of token to transfer. + /// @param from Address to transfer token from. + /// @param to Address to transfer token to. + /// @param value Amount of token to transfer. + /// @return Success of transfer. + function transferFrom( + address token, + address from, + address to, + uint value) + public + onlyAuthorized + returns (bool) + { + return Token(token).transferFrom(from, to, value); + } + + /* + * Public constant functions + */ + + /// @dev Gets all authorized addresses. + /// @return Array of authorized addresses. + function getAuthorizedAddresses() + public + constant + returns (address[]) + { + return authorities; + } +} diff --git a/packages/metacoin/artifacts/Metacoin.json b/packages/metacoin/artifacts/Metacoin.json index 46c3ee71c..69ec22cac 100644 --- a/packages/metacoin/artifacts/Metacoin.json +++ b/packages/metacoin/artifacts/Metacoin.json @@ -3,10 +3,49 @@ "networks": { "50": { "solc_version": "0.4.21", - "keccak256": "0x2c3aa2e9dbef58abf57cecc148464d0852a83d7f30bbd2066f2a13b8bd3b1dd0", - "source_tree_hash": "0x2c3aa2e9dbef58abf57cecc148464d0852a83d7f30bbd2066f2a13b8bd3b1dd0", + "keccak256": "0x85fb29ea6c21adcf07f754b2ad06482dd6fcd62d31935e36041b4d064c6a038e", + "source_tree_hash": "0x85fb29ea6c21adcf07f754b2ad06482dd6fcd62d31935e36041b4d064c6a038e", "optimizer_enabled": false, "abi": [ + { + "constant": false, + "inputs": [ + { + "components": [ + { + "components": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferData", + "type": "tuple" + }, + { + "name": "callback", + "type": "uint32" + } + ], + "name": "nestedTransferData", + "type": "tuple" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "int256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ @@ -55,6 +94,39 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "to", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferData", + "type": "tuple" + }, + { + "name": "callback", + "type": "uint32" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "int256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "payable": false, @@ -84,15 +156,14 @@ "type": "event" } ], - "bytecode": - "0x6060604052341561000f57600080fd5b6127106000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610406806100636000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327e235e3146100515780632bd14bb914610087575b600080fd5b341561005c57600080fd5b610071600461006c9036906102b9565b6100bd565b60405161007e9190610344565b60405180910390f35b341561009257600080fd5b6100a760046100a29036906102e2565b6100d5565b6040516100b49190610329565b60405180910390f35b60006020528060005260406000206000915090505481565b600081602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561012a5760009050610240565b81602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160200151600080846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84602001516040516102339190610344565b60405180910390a3600190505b919050565b600061025182356103a2565b905092915050565b60006040828403121561026b57600080fd5b610275604061035f565b9050600061028584828501610245565b6000830152506020610299848285016102a5565b60208301525092915050565b60006102b182356103c2565b905092915050565b6000602082840312156102cb57600080fd5b60006102d984828501610245565b91505092915050565b6000604082840312156102f457600080fd5b600061030284828501610259565b91505092915050565b6103148161038c565b82525050565b61032381610398565b82525050565b600060208201905061033e600083018461030b565b92915050565b6000602082019050610359600083018461031a565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561038257600080fd5b8060405250919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008190509190505600a265627a7a72305820d15828219194e8ddaa624e10f9c8823c05268d79753b4c60ef401fb4fe5f09dc6c6578706572696d656e74616cf50037", - "runtime_bytecode": - "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327e235e3146100515780632bd14bb914610087575b600080fd5b341561005c57600080fd5b610071600461006c9036906102b9565b6100bd565b60405161007e9190610344565b60405180910390f35b341561009257600080fd5b6100a760046100a29036906102e2565b6100d5565b6040516100b49190610329565b60405180910390f35b60006020528060005260406000206000915090505481565b600081602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561012a5760009050610240565b81602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160200151600080846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84602001516040516102339190610344565b60405180910390a3600190505b919050565b600061025182356103a2565b905092915050565b60006040828403121561026b57600080fd5b610275604061035f565b9050600061028584828501610245565b6000830152506020610299848285016102a5565b60208301525092915050565b60006102b182356103c2565b905092915050565b6000602082840312156102cb57600080fd5b60006102d984828501610245565b91505092915050565b6000604082840312156102f457600080fd5b600061030284828501610259565b91505092915050565b6103148161038c565b82525050565b61032381610398565b82525050565b600060208201905061033e600083018461030b565b92915050565b6000602082019050610359600083018461031a565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561038257600080fd5b8060405250919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008190509190505600a265627a7a72305820d15828219194e8ddaa624e10f9c8823c05268d79753b4c60ef401fb4fe5f09dc6c6578706572696d656e74616cf50037", - "updated_at": 1522318279735, - "source_map": "60:662:0:-;;;290:72;;;;;;;;350:5;327:8;:20;336:10;327:20;;;;;;;;;;;;;;;:28;;;;60:662;;;;;;", - "source_map_runtime": - "60:662:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;84:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;368:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;84:41;;;;;;;;;;;;;;;;;:::o;368:352::-;429:12;480;:19;;;457:8;:20;466:10;457:20;;;;;;;;;;;;;;;;:42;453:60;;;508:5;501:12;;;;453:60;547:12;:19;;;523:8;:20;532:10;523:20;;;;;;;;;;;;;;;;:43;;;;;;;;;;;605:12;:19;;;576:8;:25;585:12;:15;;;576:25;;;;;;;;;;;;;;;;:48;;;;;;;;;;;655:12;:15;;;634:58;;643:10;634:58;;;672:12;:19;;;634:58;;;;;;;;;;;;;;;709:4;702:11;;368:352;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;165:469;;282:4;270:9;265:3;261:19;257:30;254:2;;;300:1;297;290:12;254:2;318:20;333:4;318:20;;;309:29;;386:1;417:49;462:3;453:6;442:9;438:22;417:49;;;411:3;404:5;400:15;393:74;348:130;530:2;563:49;608:3;599:6;588:9;584:22;563:49;;;556:4;549:5;545:16;538:75;488:136;248:386;;;;;641:118;;708:46;746:6;733:20;708:46;;;699:55;;693:66;;;;;766:241;;870:2;858:9;849:7;845:23;841:32;838:2;;;886:1;883;876:12;838:2;921:1;938:53;983:7;974:6;963:9;959:22;938:53;;;928:63;;900:97;832:175;;;;;1014:297;;1146:2;1134:9;1125:7;1121:23;1117:32;1114:2;;;1162:1;1159;1152:12;1114:2;1197:1;1214:81;1287:7;1278:6;1267:9;1263:22;1214:81;;;1204:91;;1176:125;1108:203;;;;;1318:101;1385:28;1407:5;1385:28;;;1380:3;1373:41;1367:52;;;1426:110;1499:31;1524:5;1499:31;;;1494:3;1487:44;1481:55;;;1543:181;;1645:2;1634:9;1630:18;1622:26;;1659:55;1711:1;1700:9;1696:17;1687:6;1659:55;;;1616:108;;;;;1731:193;;1839:2;1828:9;1824:18;1816:26;;1853:61;1911:1;1900:9;1896:17;1887:6;1853:61;;;1810:114;;;;;1931:256;;1993:2;1987:9;1977:19;;2031:4;2023:6;2019:17;2130:6;2118:10;2115:22;2094:18;2082:10;2079:34;2076:62;2073:2;;;2151:1;2148;2141:12;2073:2;2171:10;2167:2;2160:22;1971:216;;;;;2194:92;;2274:5;2267:13;2260:21;2249:32;;2243:43;;;;2293:79;;2362:5;2351:16;;2345:27;;;;2379:128;;2459:42;2452:5;2448:54;2437:65;;2431:76;;;;2514:79;;2583:5;2572:16;;2566:27;;;", - "sources": ["Metacoin.sol"] + "bytecode": "0x6060604052341561000f57600080fd5b6127106000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610613806100636000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063135cfdb11461006757806327e235e31461009d5780632bd14bb9146100d35780632f8086ba14610109575b600080fd5b341561007257600080fd5b6100876004610082903690610446565b61013f565b604051610094919061051c565b60405180910390f35b34156100a857600080fd5b6100bd60046100b890369061041d565b61015a565b6040516100ca9190610537565b60405180910390f35b34156100de57600080fd5b6100f360046100ee90369061046f565b610172565b6040516101009190610501565b60405180910390f35b341561011457600080fd5b6101296004610124903690610498565b6102e2565b604051610136919061051c565b60405180910390f35b6000610153826000015183602001516102e2565b9050919050565b60006020528060005260406000206000915090505481565b600081602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156101c757600090506102dd565b81602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160200151600080846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84602001516040516102d09190610537565b60405180910390a3600190505b919050565b60006102ed83610172565b508163ffffffff16905092915050565b6000610309823561059f565b905092915050565b60006060828403121561032357600080fd5b61032d6040610552565b9050600061033d8482850161035d565b600083015250604061035184828501610409565b60208301525092915050565b60006040828403121561036f57600080fd5b6103796040610552565b90506000610389848285016102fd565b600083015250602061039d848285016103f5565b60208301525092915050565b6000604082840312156103bb57600080fd5b6103c56040610552565b905060006103d5848285016102fd565b60008301525060206103e9848285016103f5565b60208301525092915050565b600061040182356105bf565b905092915050565b600061041582356105c9565b905092915050565b60006020828403121561042f57600080fd5b600061043d848285016102fd565b91505092915050565b60006060828403121561045857600080fd5b600061046684828501610311565b91505092915050565b60006040828403121561048157600080fd5b600061048f848285016103a9565b91505092915050565b600080606083850312156104ab57600080fd5b60006104b9858286016103a9565b92505060406104ca85828601610409565b9150509250929050565b6104dd8161057f565b82525050565b6104ec8161058b565b82525050565b6104fb81610595565b82525050565b600060208201905061051660008301846104d4565b92915050565b600060208201905061053160008301846104e3565b92915050565b600060208201905061054c60008301846104f2565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561057557600080fd5b8060405250919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff821690509190505600a265627a7a72305820716a74dd7e2a73c237481496756750895b57977fc4876b1c48aef9b71759bf836c6578706572696d656e74616cf50037", + "runtime_bytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063135cfdb11461006757806327e235e31461009d5780632bd14bb9146100d35780632f8086ba14610109575b600080fd5b341561007257600080fd5b6100876004610082903690610446565b61013f565b604051610094919061051c565b60405180910390f35b34156100a857600080fd5b6100bd60046100b890369061041d565b61015a565b6040516100ca9190610537565b60405180910390f35b34156100de57600080fd5b6100f360046100ee90369061046f565b610172565b6040516101009190610501565b60405180910390f35b341561011457600080fd5b6101296004610124903690610498565b6102e2565b604051610136919061051c565b60405180910390f35b6000610153826000015183602001516102e2565b9050919050565b60006020528060005260406000206000915090505481565b600081602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156101c757600090506102dd565b81602001516000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160200151600080846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816000015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84602001516040516102d09190610537565b60405180910390a3600190505b919050565b60006102ed83610172565b508163ffffffff16905092915050565b6000610309823561059f565b905092915050565b60006060828403121561032357600080fd5b61032d6040610552565b9050600061033d8482850161035d565b600083015250604061035184828501610409565b60208301525092915050565b60006040828403121561036f57600080fd5b6103796040610552565b90506000610389848285016102fd565b600083015250602061039d848285016103f5565b60208301525092915050565b6000604082840312156103bb57600080fd5b6103c56040610552565b905060006103d5848285016102fd565b60008301525060206103e9848285016103f5565b60208301525092915050565b600061040182356105bf565b905092915050565b600061041582356105c9565b905092915050565b60006020828403121561042f57600080fd5b600061043d848285016102fd565b91505092915050565b60006060828403121561045857600080fd5b600061046684828501610311565b91505092915050565b60006040828403121561048157600080fd5b600061048f848285016103a9565b91505092915050565b600080606083850312156104ab57600080fd5b60006104b9858286016103a9565b92505060406104ca85828601610409565b9150509250929050565b6104dd8161057f565b82525050565b6104ec8161058b565b82525050565b6104fb81610595565b82525050565b600060208201905061051660008301846104d4565b92915050565b600060208201905061053160008301846104e3565b92915050565b600060208201905061054c60008301846104f2565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561057557600080fd5b8060405250919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff821690509190505600a265627a7a72305820716a74dd7e2a73c237481496756750895b57977fc4876b1c48aef9b71759bf836c6578706572696d656e74616cf50037", + "updated_at": 1522966321930, + "source_map": "60:1093:0:-;;;389:72;;;;;;;;449:5;426:8;:20;435:10;426:20;;;;;;;;;;;;;;;:28;;;;60:1093;;;;;;", + "source_map_runtime": "60:1093:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;84:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;467:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:172;1051:3;1073:70;1082:18;:31;;;1115:18;:27;;;1073:8;:70::i;:::-;1066:77;;978:172;;;:::o;84:41::-;;;;;;;;;;;;;;;;;:::o;467:352::-;528:12;579;:19;;;556:8;:20;565:10;556:20;;;;;;;;;;;;;;;;:42;552:60;;;607:5;600:12;;;;552:60;646:12;:19;;;622:8;:20;631:10;622:20;;;;;;;;;;;;;;;;:43;;;;;;;;;;;704:12;:19;;;675:8;:25;684:12;:15;;;675:25;;;;;;;;;;;;;;;;:48;;;;;;;;;;;754:12;:15;;;733:58;;742:10;733:58;;;771:12;:19;;;733:58;;;;;;;;;;;;;;;808:4;801:11;;467:352;;;;:::o;825:147::-;903:3;918:22;927:12;918:8;:22::i;:::-;;957:8;950:15;;;;825:147;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;171:510;;294:4;282:9;277:3;273:19;269:30;266:2;;;312:1;309;302:12;266:2;330:20;345:4;330:20;;;321:29;;408:1;439:73;508:3;499:6;488:9;484:22;439:73;;;433:3;426:5;422:15;415:98;360:164;578:2;611:48;655:3;646:6;635:9;631:22;611:48;;;604:4;597:5;593:16;586:74;534:137;260:421;;;;;723:465;;836:4;824:9;819:3;815:19;811:30;808:2;;;854:1;851;844:12;808:2;872:20;887:4;872:20;;;863:29;;940:1;971:49;1016:3;1007:6;996:9;992:22;971:49;;;965:3;958:5;954:15;947:74;902:130;1084:2;1117:49;1162:3;1153:6;1142:9;1138:22;1117:49;;;1110:4;1103:5;1099:16;1092:75;1042:136;802:386;;;;;1230:469;;1347:4;1335:9;1330:3;1326:19;1322:30;1319:2;;;1365:1;1362;1355:12;1319:2;1383:20;1398:4;1383:20;;;1374:29;;1451:1;1482:49;1527:3;1518:6;1507:9;1503:22;1482:49;;;1476:3;1469:5;1465:15;1458:74;1413:130;1595:2;1628:49;1673:3;1664:6;1653:9;1649:22;1628:49;;;1621:4;1614:5;1610:16;1603:75;1553:136;1313:386;;;;;1706:118;;1773:46;1811:6;1798:20;1773:46;;;1764:55;;1758:66;;;;;1831:116;;1897:45;1934:6;1921:20;1897:45;;;1888:54;;1882:65;;;;;1954:241;;2058:2;2046:9;2037:7;2033:23;2029:32;2026:2;;;2074:1;2071;2064:12;2026:2;2109:1;2126:53;2171:7;2162:6;2151:9;2147:22;2126:53;;;2116:63;;2088:97;2020:175;;;;;2202:309;;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2391:1;2408:87;2487:7;2478:6;2467:9;2463:22;2408:87;;;2398:97;;2370:131;2302:209;;;;;2518:297;;2650:2;2638:9;2629:7;2625:23;2621:32;2618:2;;;2666:1;2663;2656:12;2618:2;2701:1;2718:81;2791:7;2782:6;2771:9;2767:22;2718:81;;;2708:91;;2680:125;2612:203;;;;;2822:420;;;2970:2;2958:9;2949:7;2945:23;2941:32;2938:2;;;2986:1;2983;2976:12;2938:2;3021:1;3038:81;3111:7;3102:6;3091:9;3087:22;3038:81;;;3028:91;;3000:125;3156:2;3174:52;3218:7;3209:6;3198:9;3194:22;3174:52;;;3164:62;;3135:97;2932:310;;;;;;3249:101;3316:28;3338:5;3316:28;;;3311:3;3304:41;3298:52;;;3357:107;3428:30;3452:5;3428:30;;;3423:3;3416:43;3410:54;;;3471:110;3544:31;3569:5;3544:31;;;3539:3;3532:44;3526:55;;;3588:181;;3690:2;3679:9;3675:18;3667:26;;3704:55;3756:1;3745:9;3741:17;3732:6;3704:55;;;3661:108;;;;;3776:189;;3882:2;3871:9;3867:18;3859:26;;3896:59;3952:1;3941:9;3937:17;3928:6;3896:59;;;3853:112;;;;;3972:193;;4080:2;4069:9;4065:18;4057:26;;4094:61;4152:1;4141:9;4137:17;4128:6;4094:61;;;4051:114;;;;;4172:256;;4234:2;4228:9;4218:19;;4272:4;4264:6;4260:17;4371:6;4359:10;4356:22;4335:18;4323:10;4320:34;4317:62;4314:2;;;4392:1;4389;4382:12;4314:2;4412:10;4408:2;4401:22;4212:216;;;;;4435:92;;4515:5;4508:13;4501:21;4490:32;;4484:43;;;;4534:78;;4602:5;4591:16;;4585:27;;;;4619:79;;4688:5;4677:16;;4671:27;;;;4705:128;;4785:42;4778:5;4774:54;4763:65;;4757:76;;;;4840:79;;4909:5;4898:16;;4892:27;;;;4926:95;;5005:10;4998:5;4994:22;4983:33;;4977:44;;;", + "sources": [ + "/Metacoin.sol" + ] } } -} +} \ No newline at end of file diff --git a/packages/metacoin/contracts/Metacoin.sol b/packages/metacoin/contracts/Metacoin.sol index 6b6814b21..ac212b32e 100644 --- a/packages/metacoin/contracts/Metacoin.sol +++ b/packages/metacoin/contracts/Metacoin.sol @@ -11,6 +11,11 @@ contract Metacoin { uint256 amount; } + struct NestedTransferData { + TransferData transferData; + uint32 callback; + } + function Metacoin() public { balances[msg.sender] = 10000; } @@ -22,4 +27,14 @@ contract Metacoin { Transfer(msg.sender, transferData.to, transferData.amount); return true; } + + function transfer(TransferData transferData, uint32 callback) public returns (int) { + transfer(transferData); + return callback; + } + + function transfer(NestedTransferData nestedTransferData) public returns (int) { + return transfer(nestedTransferData.transferData, nestedTransferData.callback); + } + } diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 1177513a7..867f23192 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -18,7 +18,7 @@ "coverage:report:html": "istanbul report html && open coverage/index.html", "coverage:report:lcov": "istanbul report lcov", "test:circleci": "yarn test:coverage", - "compile": "node ../deployer/lib/src/cli.js compile --contracts Metacoin --contracts-dir contracts --artifacts-dir artifacts" + "compile": "node ../deployer/lib/src/cli.js compile --contracts Metacoin --contract-dirs contracts --artifacts-dir artifacts" }, "author": "", "license": "Apache-2.0", diff --git a/packages/metacoin/test/metacoin_test.ts b/packages/metacoin/test/metacoin_test.ts index 73537d342..4a2307444 100644 --- a/packages/metacoin/test/metacoin_test.ts +++ b/packages/metacoin/test/metacoin_test.ts @@ -36,12 +36,12 @@ describe('Metacoin', () => { }); }); describe('#transfer', () => { - it(`should successfully transfer tokens`, async () => { + it(`should successfully transfer tokens (via transfer_1)`, async () => { const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const amount = INITIAL_BALANCE.div(2); const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(oldBalance).to.be.bignumber.equal(0); - const txHash = await metacoin.transfer.sendTransactionAsync( + const txHash = await metacoin.transfer_1.sendTransactionAsync( { to: ZERO_ADDRESS, amount, @@ -58,5 +58,57 @@ describe('Metacoin', () => { const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(newBalance).to.be.bignumber.equal(amount); }); + + it(`should successfully transfer tokens (via transfer_2)`, async () => { + const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; + const amount = INITIAL_BALANCE.div(2); + const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); + expect(oldBalance).to.be.bignumber.equal(0); + const callback = 59; + const txHash = await metacoin.transfer_2.sendTransactionAsync( + { + to: ZERO_ADDRESS, + amount, + }, + callback, + { from: devConstants.TESTRPC_FIRST_ADDRESS }, + ); + const txReceipt = await web3Wrapper.awaitTransactionMinedAsync(txHash); + const transferLogs = txReceipt.logs[0] as LogWithDecodedArgs; + expect(transferLogs.args).to.be.deep.equal({ + _to: ZERO_ADDRESS, + _from: devConstants.TESTRPC_FIRST_ADDRESS, + _value: amount, + }); + const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); + expect(newBalance).to.be.bignumber.equal(amount); + }); + + it(`should successfully transfer tokens (via transfer_3)`, async () => { + const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; + const amount = INITIAL_BALANCE.div(2); + const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); + expect(oldBalance).to.be.bignumber.equal(0); + const callback = 59; + const txHash = await metacoin.transfer_3.sendTransactionAsync( + { + transferData: { + to: ZERO_ADDRESS, + amount, + }, + callback, + }, + { from: devConstants.TESTRPC_FIRST_ADDRESS }, + ); + const txReceipt = await web3Wrapper.awaitTransactionMinedAsync(txHash); + const transferLogs = txReceipt.logs[0] as LogWithDecodedArgs; + expect(transferLogs.args).to.be.deep.equal({ + _to: ZERO_ADDRESS, + _from: devConstants.TESTRPC_FIRST_ADDRESS, + _value: amount, + }); + const newBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); + expect(newBalance).to.be.bignumber.equal(amount); + }); }); }); diff --git a/packages/utils/src/abi_utils.ts b/packages/utils/src/abi_utils.ts new file mode 100644 index 000000000..843b8589b --- /dev/null +++ b/packages/utils/src/abi_utils.ts @@ -0,0 +1,74 @@ +import { AbiDefinition, AbiType, ConstructorAbi, ContractAbi, DataItem, MethodAbi } from '@0xproject/types'; +import * as _ from 'lodash'; + +export const abiUtils = { + parseFunctionParam(param: DataItem): string { + if (param.type === 'tuple') { + // Parse out tuple types into {type_1, type_2, ..., type_N} + const tupleComponents = param.components; + const paramString = _.map(tupleComponents, component => this.parseFunctionParam(component)); + const tupleParamString = `{${paramString}}`; + return tupleParamString; + } + return param.type; + }, + getFunctionSignature(abi: MethodAbi): string { + const functionName = abi.name; + const parameterTypeList = abi.inputs.map((param: DataItem) => this.parseFunctionParam(param)); + const functionSignature = `${functionName}(${parameterTypeList})`; + return functionSignature; + }, + renameOverloadedMethods(inputContractAbi: ContractAbi): ContractAbi { + const contractAbi = _.cloneDeep(inputContractAbi); + const methodAbis = contractAbi.filter((abi: AbiDefinition) => abi.type === AbiType.Function) as MethodAbi[]; + const methodAbisByOriginalIndex = _.transform( + methodAbis, + (result: Array<{ index: number; methodAbi: MethodAbi }>, methodAbi, i: number) => { + result.push({ index: i, methodAbi }); + }, + [], + ); + // Sort method Abis into alphabetical order, by function signature + const methodAbisByOriginalIndexOrdered = _.sortBy(methodAbisByOriginalIndex, [ + (entry: { index: number; methodAbi: MethodAbi }) => { + const functionSignature = this.getFunctionSignature(entry.methodAbi); + return functionSignature; + }, + ]); + // Group method Abis by name (overloaded methods will be grouped together, in alphabetical order) + const methodAbisByName = _.transform( + methodAbisByOriginalIndexOrdered, + (result: { [key: string]: Array<{ index: number; methodAbi: MethodAbi }> }, entry) => { + (result[entry.methodAbi.name] || (result[entry.methodAbi.name] = [])).push(entry); + }, + {}, + ); + // Rename overloaded methods to overloadedMethoName_1, overloadedMethoName_2, ... + const methodAbisRenamed = _.transform( + methodAbisByName, + (result: MethodAbi[], methodAbisWithSameName: Array<{ index: number; methodAbi: MethodAbi }>) => { + _.forEach(methodAbisWithSameName, (entry, i: number) => { + if (methodAbisWithSameName.length > 1) { + const overloadedMethodId = i + 1; + const sanitizedMethodName = `${entry.methodAbi.name}_${overloadedMethodId}`; + const indexOfExistingAbiWithSanitizedMethodNameIfExists = _.findIndex( + methodAbis, + methodAbi => methodAbi.name === sanitizedMethodName, + ); + if (indexOfExistingAbiWithSanitizedMethodNameIfExists >= 0) { + const methodName = entry.methodAbi.name; + throw new Error( + `Failed to rename overloaded method '${methodName}' to '${sanitizedMethodName}'. A method with this name already exists.`, + ); + } + entry.methodAbi.name = sanitizedMethodName; + } + // Add method to list of ABIs in its original position + result.splice(entry.index, 0, entry.methodAbi); + }); + }, + [...Array(methodAbis.length)], + ); + return contractAbi; + }, +}; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index debcce746..0da4b265d 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -5,3 +5,4 @@ export { intervalUtils } from './interval_utils'; export { BigNumber } from './configured_bignumber'; export { AbiDecoder } from './abi_decoder'; export { logUtils } from './log_utils'; +export { abiUtils } from './abi_utils'; -- cgit v1.2.3 From eecf09f51564df4f63139f26e65efa1102a9958d Mon Sep 17 00:00:00 2001 From: Greg Hysen Date: Mon, 9 Apr 2018 11:55:23 -0700 Subject: Added a detailed description of `renameOverloadedMethods` (special thanks to @fabioberger). Updated Javascript styles in the Abi-Gen and Utils packages, around support for function overloading. --- packages/abi-gen/src/index.ts | 4 +- packages/base-contract/src/index.ts | 13 ++--- packages/deployer/src/cli.ts | 2 +- packages/deployer/src/compiler.ts | 17 ++++--- packages/deployer/src/utils/types.ts | 2 +- packages/metacoin/test/metacoin_test.ts | 12 ++--- packages/utils/src/abi_utils.ts | 85 ++++++++++++++++----------------- 7 files changed, 67 insertions(+), 68 deletions(-) (limited to 'packages') diff --git a/packages/abi-gen/src/index.ts b/packages/abi-gen/src/index.ts index 9ceebe02b..ecef33b16 100644 --- a/packages/abi-gen/src/index.ts +++ b/packages/abi-gen/src/index.ts @@ -125,7 +125,7 @@ for (const abiFileName of abiFileNames) { } const methodAbis = ABI.filter((abi: AbiDefinition) => abi.type === ABI_TYPE_METHOD) as MethodAbi[]; - const methodAbisSanitized = abiUtils.renameOverloadedMethods(methodAbis) as MethodAbi[]; + const sanitizedMethodAbis = abiUtils.renameOverloadedMethods(methodAbis) as MethodAbi[]; const methodsData = _.map(methodAbis, (methodAbi, methodAbiIndex: number) => { _.forEach(methodAbi.inputs, (input, inputIndex: number) => { if (_.isEmpty(input.name)) { @@ -138,7 +138,7 @@ for (const abiFileName of abiFileNames) { ...methodAbi, singleReturnValue: methodAbi.outputs.length === 1, hasReturnValue: methodAbi.outputs.length !== 0, - tsName: methodAbisSanitized[methodAbiIndex].name, + tsName: sanitizedMethodAbis[methodAbiIndex].name, functionSignature: abiUtils.getFunctionSignature(methodAbi), }; return methodData; diff --git a/packages/base-contract/src/index.ts b/packages/base-contract/src/index.ts index f6cea53fa..bfa99fac1 100644 --- a/packages/base-contract/src/index.ts +++ b/packages/base-contract/src/index.ts @@ -89,13 +89,10 @@ export class BaseContract { const methodAbis = this.abi.filter( (abiDefinition: AbiDefinition) => abiDefinition.type === AbiType.Function, ) as MethodAbi[]; - this._ethersInterfacesByFunctionSignature = _.transform( - methodAbis, - (result: EthersInterfaceByFunctionSignature, methodAbi) => { - const functionSignature = abiUtils.getFunctionSignature(methodAbi); - result[functionSignature] = new ethersContracts.Interface([methodAbi]); - }, - {}, - ); + this._ethersInterfacesByFunctionSignature = {}; + _.each(methodAbis, methodAbi => { + const functionSignature = abiUtils.getFunctionSignature(methodAbi); + this._ethersInterfacesByFunctionSignature[functionSignature] = new ethersContracts.Interface([methodAbi]); + }); } } diff --git a/packages/deployer/src/cli.ts b/packages/deployer/src/cli.ts index 3d69925a8..62afe0d4c 100644 --- a/packages/deployer/src/cli.ts +++ b/packages/deployer/src/cli.ts @@ -45,7 +45,7 @@ async function onDeployCommandAsync(argv: CliOptions): Promise { const web3Wrapper = new Web3Wrapper(web3Provider); const networkId = await web3Wrapper.getNetworkIdAsync(); const compilerOpts: CompilerOptions = { - contractDirs: getContractDirectoriesFromList(argv.contractsDir), + contractDirs: getContractDirectoriesFromList(argv.contractDirs), networkId, optimizerEnabled: argv.shouldOptimize, artifactsDir: argv.artifactsDir, diff --git a/packages/deployer/src/compiler.ts b/packages/deployer/src/compiler.ts index beaaab141..e3ecc6c72 100644 --- a/packages/deployer/src/compiler.ts +++ b/packages/deployer/src/compiler.ts @@ -26,7 +26,7 @@ import { CompilerOptions, ContractArtifact, ContractDirectory, - ContractIds, + ContractIdToSourceFileId, ContractNetworkData, ContractNetworks, ContractSourceDataByFileId, @@ -75,6 +75,9 @@ export class Compiler { encoding: 'utf8', }; const source = await fsWrapper.readFileAsync(contentPath, opts); + if (!_.startsWith(contentPath, contractBaseDir)) { + throw new Error(`Expected content path '${contentPath}' to begin with '${contractBaseDir}'`); + } const sourceFilePath = contentPath.slice(contractBaseDir.length); sources[sourceFilePath] = source; logUtils.log(`Reading ${sourceFilePath} source...`); @@ -114,7 +117,7 @@ export class Compiler { await createDirIfDoesNotExistAsync(this._artifactsDir); await createDirIfDoesNotExistAsync(SOLC_BIN_DIR); this._contractSources = {}; - const contractIds: ContractIds = {}; + const contractIdToSourceFileId: ContractIdToSourceFileId = {}; const contractDirs = Array.from(this._contractDirs.values()); for (const contractDir of contractDirs) { const sources = await Compiler._getContractSourcesAsync(contractDir.path, contractDir.path); @@ -127,18 +130,20 @@ export class Compiler { this._contractSources[sourceFileId] = source; // Create a mapping between the contract id and its source file id const contractId = constructContractId(contractDir.namespace, sourceFilePath); - if (!_.isUndefined(contractIds[contractId])) { + if (!_.isUndefined(contractIdToSourceFileId[contractId])) { throw new Error(`Found duplicate contract with ID '${contractId}'`); } - contractIds[contractId] = sourceFileId; + contractIdToSourceFileId[contractId] = sourceFileId; }); } _.forIn(this._contractSources, this._setContractSpecificSourceData.bind(this)); const specifiedContractIds = this._specifiedContracts.has(ALL_CONTRACTS_IDENTIFIER) - ? _.keys(contractIds) + ? _.keys(contractIdToSourceFileId) : Array.from(this._specifiedContracts.values()); await Promise.all( - _.map(specifiedContractIds, async contractId => this._compileContractAsync(contractIds[contractId])), + _.map(specifiedContractIds, async contractId => + this._compileContractAsync(contractIdToSourceFileId[contractId]), + ), ); } /** diff --git a/packages/deployer/src/utils/types.ts b/packages/deployer/src/utils/types.ts index 08cab37b2..1a866b873 100644 --- a/packages/deployer/src/utils/types.ts +++ b/packages/deployer/src/utils/types.ts @@ -83,7 +83,7 @@ export interface ContractSources { [key: string]: string; } -export interface ContractIds { +export interface ContractIdToSourceFileId { [key: string]: string; } diff --git a/packages/metacoin/test/metacoin_test.ts b/packages/metacoin/test/metacoin_test.ts index 4a2307444..51830d1ef 100644 --- a/packages/metacoin/test/metacoin_test.ts +++ b/packages/metacoin/test/metacoin_test.ts @@ -36,12 +36,12 @@ describe('Metacoin', () => { }); }); describe('#transfer', () => { - it(`should successfully transfer tokens (via transfer_1)`, async () => { + it(`should successfully transfer tokens (via transfer1)`, async () => { const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const amount = INITIAL_BALANCE.div(2); const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(oldBalance).to.be.bignumber.equal(0); - const txHash = await metacoin.transfer_1.sendTransactionAsync( + const txHash = await metacoin.transfer1.sendTransactionAsync( { to: ZERO_ADDRESS, amount, @@ -59,13 +59,13 @@ describe('Metacoin', () => { expect(newBalance).to.be.bignumber.equal(amount); }); - it(`should successfully transfer tokens (via transfer_2)`, async () => { + it(`should successfully transfer tokens (via transfer2)`, async () => { const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const amount = INITIAL_BALANCE.div(2); const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(oldBalance).to.be.bignumber.equal(0); const callback = 59; - const txHash = await metacoin.transfer_2.sendTransactionAsync( + const txHash = await metacoin.transfer2.sendTransactionAsync( { to: ZERO_ADDRESS, amount, @@ -84,13 +84,13 @@ describe('Metacoin', () => { expect(newBalance).to.be.bignumber.equal(amount); }); - it(`should successfully transfer tokens (via transfer_3)`, async () => { + it(`should successfully transfer tokens (via transfer3)`, async () => { const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const amount = INITIAL_BALANCE.div(2); const oldBalance = await metacoin.balances.callAsync(ZERO_ADDRESS); expect(oldBalance).to.be.bignumber.equal(0); const callback = 59; - const txHash = await metacoin.transfer_3.sendTransactionAsync( + const txHash = await metacoin.transfer3.sendTransactionAsync( { transferData: { to: ZERO_ADDRESS, diff --git a/packages/utils/src/abi_utils.ts b/packages/utils/src/abi_utils.ts index 843b8589b..c4533d42e 100644 --- a/packages/utils/src/abi_utils.ts +++ b/packages/utils/src/abi_utils.ts @@ -12,63 +12,60 @@ export const abiUtils = { } return param.type; }, - getFunctionSignature(abi: MethodAbi): string { - const functionName = abi.name; - const parameterTypeList = abi.inputs.map((param: DataItem) => this.parseFunctionParam(param)); + getFunctionSignature(methodAbi: MethodAbi): string { + const functionName = methodAbi.name; + const parameterTypeList = _.map(methodAbi.inputs, (param: DataItem) => this.parseFunctionParam(param)); const functionSignature = `${functionName}(${parameterTypeList})`; return functionSignature; }, + /** + * Solidity supports function overloading whereas TypeScript does not. + * See: https://solidity.readthedocs.io/en/v0.4.21/contracts.html?highlight=overload#function-overloading + * In order to support overloaded functions, we suffix overloaded function names with an index. + * This index should be deterministic, regardless of function ordering within the smart contract. To do so, + * we assign indexes based on the alphabetical order of function signatures. + * + * E.g + * ['f(uint)', 'f(uint,byte32)'] + * Should always be renamed to: + * ['f1(uint)', 'f2(uint,byte32)'] + * Regardless of the order in which these these overloaded functions are declared within the contract ABI. + */ renameOverloadedMethods(inputContractAbi: ContractAbi): ContractAbi { const contractAbi = _.cloneDeep(inputContractAbi); const methodAbis = contractAbi.filter((abi: AbiDefinition) => abi.type === AbiType.Function) as MethodAbi[]; - const methodAbisByOriginalIndex = _.transform( - methodAbis, - (result: Array<{ index: number; methodAbi: MethodAbi }>, methodAbi, i: number) => { - result.push({ index: i, methodAbi }); - }, - [], - ); // Sort method Abis into alphabetical order, by function signature - const methodAbisByOriginalIndexOrdered = _.sortBy(methodAbisByOriginalIndex, [ - (entry: { index: number; methodAbi: MethodAbi }) => { - const functionSignature = this.getFunctionSignature(entry.methodAbi); + const methodAbisOrdered = _.sortBy(methodAbis, [ + (methodAbi: MethodAbi) => { + const functionSignature = this.getFunctionSignature(methodAbi); return functionSignature; }, ]); // Group method Abis by name (overloaded methods will be grouped together, in alphabetical order) - const methodAbisByName = _.transform( - methodAbisByOriginalIndexOrdered, - (result: { [key: string]: Array<{ index: number; methodAbi: MethodAbi }> }, entry) => { - (result[entry.methodAbi.name] || (result[entry.methodAbi.name] = [])).push(entry); - }, - {}, - ); - // Rename overloaded methods to overloadedMethoName_1, overloadedMethoName_2, ... - const methodAbisRenamed = _.transform( - methodAbisByName, - (result: MethodAbi[], methodAbisWithSameName: Array<{ index: number; methodAbi: MethodAbi }>) => { - _.forEach(methodAbisWithSameName, (entry, i: number) => { - if (methodAbisWithSameName.length > 1) { - const overloadedMethodId = i + 1; - const sanitizedMethodName = `${entry.methodAbi.name}_${overloadedMethodId}`; - const indexOfExistingAbiWithSanitizedMethodNameIfExists = _.findIndex( - methodAbis, - methodAbi => methodAbi.name === sanitizedMethodName, + const methodAbisByName: { [key: string]: MethodAbi[] } = {}; + _.each(methodAbisOrdered, methodAbi => { + (methodAbisByName[methodAbi.name] || (methodAbisByName[methodAbi.name] = [])).push(methodAbi); + }); + // Rename overloaded methods to overloadedMethodName1, overloadedMethodName2, ... + _.each(methodAbisByName, methodAbisWithSameName => { + _.each(methodAbisWithSameName, (methodAbi, i: number) => { + if (methodAbisWithSameName.length > 1) { + const overloadedMethodId = i + 1; + const sanitizedMethodName = `${methodAbi.name}${overloadedMethodId}`; + const indexOfExistingAbiWithSanitizedMethodNameIfExists = _.findIndex( + methodAbis, + currentMethodAbi => currentMethodAbi.name === sanitizedMethodName, + ); + if (indexOfExistingAbiWithSanitizedMethodNameIfExists >= 0) { + const methodName = methodAbi.name; + throw new Error( + `Failed to rename overloaded method '${methodName}' to '${sanitizedMethodName}'. A method with this name already exists.`, ); - if (indexOfExistingAbiWithSanitizedMethodNameIfExists >= 0) { - const methodName = entry.methodAbi.name; - throw new Error( - `Failed to rename overloaded method '${methodName}' to '${sanitizedMethodName}'. A method with this name already exists.`, - ); - } - entry.methodAbi.name = sanitizedMethodName; } - // Add method to list of ABIs in its original position - result.splice(entry.index, 0, entry.methodAbi); - }); - }, - [...Array(methodAbis.length)], - ); + methodAbi.name = sanitizedMethodName; + } + }); + }); return contractAbi; }, }; -- cgit v1.2.3 From a9b5faa7874cf94caa8908bada098a3968fe6de8 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 10 Apr 2018 12:04:51 +0900 Subject: Fix web3Wrapper build command --- packages/web3-wrapper/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index 910d4725e..5b5f42434 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -6,7 +6,7 @@ "types": "lib/src/index.d.ts", "scripts": { "build:watch": "tsc -w", - "build": "tsc && copyfiles -u 2 './lib/monorepo_scripts/**/*' ./scripts", + "build": "tsc && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", "clean": "shx rm -rf lib scripts", "lint": "tslint --project . 'src/**/*.ts'", "test": "run-s clean build run_mocha", -- cgit v1.2.3 From efdbc1ff6cc3b50a6ccd36ebb185d7f09056c2a8 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 10 Apr 2018 14:49:13 +0900 Subject: Add step to publishing that upload staging doc jsons, deploys staging website, opens every docs page and asks the dev to confirm that each one renders properly before publishing --- packages/monorepo-scripts/package.json | 3 ++ packages/monorepo-scripts/src/constants.ts | 1 + packages/monorepo-scripts/src/globals.d.ts | 6 ++++ packages/monorepo-scripts/src/publish.ts | 58 ++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+) (limited to 'packages') diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index b113b4b39..5c0e5a411 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -29,6 +29,7 @@ "@0xproject/tslint-config": "0.4.13", "@types/glob": "^5.0.33", "@types/node": "^8.0.53", + "@types/opn": "^5.1.0", "@types/rimraf": "^2.0.2", "depcheck": "^0.6.9", "lerna-get-packages": "^1.0.0", @@ -45,7 +46,9 @@ "glob": "^7.1.2", "lodash": "^4.17.4", "moment": "2.21.0", + "opn": "^5.3.0", "promisify-child-process": "^1.0.5", + "prompt": "^1.0.0", "publish-release": "0xproject/publish-release", "rimraf": "^2.6.2", "semver-diff": "^2.1.0", diff --git a/packages/monorepo-scripts/src/constants.ts b/packages/monorepo-scripts/src/constants.ts index 74387a159..081a49332 100644 --- a/packages/monorepo-scripts/src/constants.ts +++ b/packages/monorepo-scripts/src/constants.ts @@ -2,4 +2,5 @@ import * as path from 'path'; export const constants = { monorepoRootPath: path.join(__dirname, '../../..'), + stagingWebsite: 'http://staging-0xproject.s3-website-us-east-1.amazonaws.com', }; diff --git a/packages/monorepo-scripts/src/globals.d.ts b/packages/monorepo-scripts/src/globals.d.ts index c5898d0f5..1693a6dbb 100644 --- a/packages/monorepo-scripts/src/globals.d.ts +++ b/packages/monorepo-scripts/src/globals.d.ts @@ -3,6 +3,11 @@ declare module 'publish-release'; declare module 'es6-promisify'; declare module 'semver-diff'; +declare module 'prompt' { + const start: () => void; + const get: (promptMessages: string[], callback: (err: Error, result: string) => void) => void; +} + // semver-sort declarations declare module 'semver-sort' { const desc: (versions: string[]) => string[]; @@ -15,6 +20,7 @@ declare interface LernaPackage { version: string; name: string; main?: string; + scripts?: { [command: string]: string }; config?: { additionalTsTypings?: string[]; }; diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index f0fb00acd..ebc30def4 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -1,11 +1,14 @@ #!/usr/bin/env node +import * as promisify from 'es6-promisify'; import * as fs from 'fs'; import lernaGetPackages = require('lerna-get-packages'); import * as _ from 'lodash'; import * as moment from 'moment'; +import opn = require('opn'); import * as path from 'path'; import { exec as execAsync, spawn } from 'promisify-child-process'; +import * as prompt from 'prompt'; import semverDiff = require('semver-diff'); import semverSort = require('semver-sort'); @@ -13,6 +16,8 @@ import { constants } from './constants'; import { Changelog, Changes, PackageToVersionChange, SemVerIndex, UpdatedPackage } from './types'; import { utils } from './utils'; +const DOC_GEN_COMMAND = 'docs:json'; +const NPM_NAMESPACE = '@0xproject/'; const IS_DRY_RUN = process.env.IS_DRY_RUN === 'true'; const TODAYS_TIMESTAMP = moment().unix(); const LERNA_EXECUTABLE = './node_modules/lerna/bin/lerna.js'; @@ -21,11 +26,23 @@ const semverNameToIndex: { [semver: string]: number } = { minor: SemVerIndex.Minor, major: SemVerIndex.Major, }; +const packageNameToWebsitePath: { [name: string]: string } = { + '0x.js': '0xjs', + 'web3-wrapper': 'web3_wrapper', + contracts: 'contracts', + connect: 'connect', + 'json-schemas': 'json-schemas', + deployer: 'deployer', + 'sol-cov': 'sol-cov', + subproviders: 'subproviders', +}; (async () => { // Fetch public, updated Lerna packages const updatedPublicLernaPackages = await getUpdatedPublicLernaPackagesAsync(); + await confirmDocPagesRenderAsync(updatedPublicLernaPackages); + // Update CHANGELOGs const updatedPublicLernaPackageNames = _.map(updatedPublicLernaPackages, pkg => pkg.package.name); utils.log(`Will update CHANGELOGs and publish: \n${updatedPublicLernaPackageNames.join('\n')}\n`); @@ -48,6 +65,47 @@ const semverNameToIndex: { [semver: string]: number } = { process.exit(1); }); +async function confirmDocPagesRenderAsync(packages: LernaPackage[]) { + // push docs to staging + utils.log("Upload all docJson's to S3 staging..."); + await execAsync(`yarn lerna:stage_docs`, { cwd: constants.monorepoRootPath }); + + // deploy website to staging + utils.log('Deploy website to staging...'); + const pathToWebsite = `${constants.monorepoRootPath}/packages/website`; + await execAsync(`yarn deploy_staging`, { cwd: pathToWebsite }); + + const packagesWithDocs = _.filter(packages, pkg => { + const scriptsIfExists = pkg.package.scripts; + if (_.isUndefined(scriptsIfExists)) { + throw new Error('Found a public package without any scripts in package.json'); + } + return !_.isUndefined(scriptsIfExists[DOC_GEN_COMMAND]); + }); + _.each(packagesWithDocs, pkg => { + const name = pkg.package.name; + const nameWithoutPrefix = _.startsWith(name, NPM_NAMESPACE) ? name.split('@0xproject/')[1] : name; + const docSegmentIfExists = packageNameToWebsitePath[nameWithoutPrefix]; + if (_.isUndefined(docSegmentIfExists)) { + throw new Error( + `Found package '${name}' with doc commands but no corresponding docSegment in monorepo_scripts +package.ts. Please add an entry for it and try again.`, + ); + } + const link = `${constants.stagingWebsite}/docs/${docSegmentIfExists}`; + opn(link); + }); + + prompt.start(); + const message = 'Do all the doc pages render properly? (yn)'; + const result = await promisify(prompt.get)([message]); + const didConfirm = result[message] === 'y'; + if (!didConfirm) { + utils.log('Publish process aborted.'); + process.exit(0); + } +} + async function pushChangelogsToGithubAsync() { await execAsync(`git add . --all`, { cwd: constants.monorepoRootPath }); await execAsync(`git commit -m "Updated CHANGELOGS"`, { cwd: constants.monorepoRootPath }); -- cgit v1.2.3 From df773d07f3ad13b1ed5d238de479ab798ff034dd Mon Sep 17 00:00:00 2001 From: Luke Gedeon Date: Tue, 10 Apr 2018 21:29:16 -0400 Subject: Fix relative link 0xproject.com/docs/json-schemas --> https://0xproject.com/docs/json-schemas --- packages/json-schemas/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/json-schemas/README.md b/packages/json-schemas/README.md index e8cece63b..ffa8e947a 100644 --- a/packages/json-schemas/README.md +++ b/packages/json-schemas/README.md @@ -2,7 +2,7 @@ Contains 0x-related json schemas -### Read the [Documentation](0xproject.com/docs/json-schemas). +### Read the [Documentation](https://0xproject.com/docs/json-schemas). ## Installation -- cgit v1.2.3 From 7d8badc86e1db9878ae3f22b1887479f04c61445 Mon Sep 17 00:00:00 2001 From: Brandon Millman Date: Tue, 10 Apr 2018 21:24:17 -0700 Subject: Fix documentation links in some READMEs --- packages/0x.js/README.md | 2 +- packages/deployer/README.md | 2 +- packages/sol-cov/README.md | 2 +- packages/subproviders/README.md | 2 +- packages/web3-wrapper/README.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/README.md b/packages/0x.js/README.md index 46848cbdd..cfa353504 100644 --- a/packages/0x.js/README.md +++ b/packages/0x.js/README.md @@ -2,7 +2,7 @@ A TypeScript/Javascript library for interacting with the 0x protocol. -### Read the [Documentation](0xproject.com/docs/0xjs). +### Read the [Documentation](https://0xproject.com/docs/0xjs). ## Installation diff --git a/packages/deployer/README.md b/packages/deployer/README.md index d8b049bdf..ef0ddd59d 100644 --- a/packages/deployer/README.md +++ b/packages/deployer/README.md @@ -2,7 +2,7 @@ This repository contains a CLI tool that facilitates compiling and deployment of smart contracts. -### Read the [Documentation](0xproject.com/docs/deployer). +### Read the [Documentation](https://0xproject.com/docs/deployer). ## Installation diff --git a/packages/sol-cov/README.md b/packages/sol-cov/README.md index 8cc7dca6c..3a0377521 100644 --- a/packages/sol-cov/README.md +++ b/packages/sol-cov/README.md @@ -2,7 +2,7 @@ A Solidity code coverage tool. -### Read the [Documentation](0xproject.com/docs/sol-cov). +### Read the [Documentation](https://0xproject.com/docs/sol-cov). ## Installation diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md index 2936be545..8c8807895 100644 --- a/packages/subproviders/README.md +++ b/packages/subproviders/README.md @@ -4,7 +4,7 @@ A few useful web3 subproviders including a LedgerSubprovider useful for adding L We have written up a [Wiki](https://0xproject.com/wiki#Web3-Provider-Examples) article detailing some use cases of this subprovider package. -### Read the [Documentation](0xproject.com/docs/subproviders). +### Read the [Documentation](https://0xproject.com/docs/subproviders). ## Installation diff --git a/packages/web3-wrapper/README.md b/packages/web3-wrapper/README.md index 1ff85420a..a38f49e6e 100644 --- a/packages/web3-wrapper/README.md +++ b/packages/web3-wrapper/README.md @@ -2,7 +2,7 @@ Wrapped version of web3 with a nicer interface that is used across 0x projects and packages. -### Read the [Documentation](0xproject.com/docs/web3_wrapper). +### Read the [Documentation](https://0xproject.com/docs/web3_wrapper). ## Installation -- cgit v1.2.3 From de6f757ec821c6e735e0f5e8c2e5621b57c02f55 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 16:48:56 +0900 Subject: Introduce type JSONRpcErrorCallback --- packages/types/src/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 442fbb2d6..2e7e629b5 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,7 +1,9 @@ import { BigNumber } from 'bignumber.js'; +export type JSONRPCErrorCallback = (err: Error | null, result?: JSONRPCResponsePayload) => void; + export interface Provider { - sendAsync(payload: JSONRPCRequestPayload, callback: (err: Error, result: JSONRPCResponsePayload) => void): void; + sendAsync(payload: JSONRPCRequestPayload, callback: JSONRPCErrorCallback): void; } export type ContractAbi = AbiDefinition[]; -- cgit v1.2.3 From 7d9c6eafbfd8434c92737a0e9edf8e610984ac90 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 16:53:13 +0900 Subject: Add support for nested methods within type declarations. Make sure they render without a callPath. --- packages/react-docs/src/components/interface.tsx | 3 +-- packages/react-docs/src/components/type.tsx | 1 - packages/react-docs/src/utils/typedoc_utils.ts | 10 +++++++++- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'packages') diff --git a/packages/react-docs/src/components/interface.tsx b/packages/react-docs/src/components/interface.tsx index 541e164e3..bdfdf47c4 100644 --- a/packages/react-docs/src/components/interface.tsx +++ b/packages/react-docs/src/components/interface.tsx @@ -19,7 +19,7 @@ export function Interface(props: InterfaceProps) { return ( {property.name}:{' '} - {property.type.typeDocType !== TypeDocTypes.Reflection ? ( + {property.type && property.type.typeDocType !== TypeDocTypes.Reflection ? ( ) : ( { - const childTypeIfExists = !_.isUndefined(child.type) + let childTypeIfExists = !_.isUndefined(child.type) ? typeDocUtils._convertType(child.type, sections, sectionName, docId) : undefined; + if (child.kindString === KindString.Method) { + childTypeIfExists = { + name: child.name, + typeDocType: TypeDocTypes.Reflection, + method: this._convertMethod(child, isConstructor, sections, sectionName, docId), + }; + } const c: CustomTypeChild = { name: child.name, type: childTypeIfExists, -- cgit v1.2.3 From ad894fbdbb1698f9db44cd3f9e12e8395a2bc74f Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 16:53:30 +0900 Subject: Add missing types to 0x.js docs --- packages/website/ts/containers/zero_ex_js_documentation.ts | 3 +++ 1 file changed, 3 insertions(+) (limited to 'packages') diff --git a/packages/website/ts/containers/zero_ex_js_documentation.ts b/packages/website/ts/containers/zero_ex_js_documentation.ts index da8922e79..12c63ca03 100644 --- a/packages/website/ts/containers/zero_ex_js_documentation.ts +++ b/packages/website/ts/containers/zero_ex_js_documentation.ts @@ -168,6 +168,9 @@ const docsInfoConfig: DocsInfoConfig = { 'OrderStateWatcherConfig', 'FilterObject', 'OrderRelevantState', + 'JSONRPCRequestPayload', + 'JSONRPCResponsePayload', + 'JSONRPCErrorCallback', ], typeNameToPrefix: { Provider: 'Web3', -- cgit v1.2.3 From 3c0fa0b7e6cc861d6357360c974d2b5720f7c4b7 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 17:05:35 +0900 Subject: Fix 0x.js docs now that many types are no longer references through the Web3 typings --- .../website/ts/containers/zero_ex_js_documentation.ts | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'packages') diff --git a/packages/website/ts/containers/zero_ex_js_documentation.ts b/packages/website/ts/containers/zero_ex_js_documentation.ts index 12c63ca03..40853cb9e 100644 --- a/packages/website/ts/containers/zero_ex_js_documentation.ts +++ b/packages/website/ts/containers/zero_ex_js_documentation.ts @@ -171,21 +171,12 @@ const docsInfoConfig: DocsInfoConfig = { 'JSONRPCRequestPayload', 'JSONRPCResponsePayload', 'JSONRPCErrorCallback', + 'LogEntryEvent', + 'LogEntry', ], - typeNameToPrefix: { - Provider: 'Web3', - DecodedLogEntryEvent: 'Web3', - LogEntryEvent: 'Web3', - CallData: 'Web3', - LogEntry: 'Web3', - }, + typeNameToPrefix: {}, typeNameToExternalLink: { - Web3: constants.URL_WEB3_DOCS, - Provider: constants.URL_WEB3_PROVIDER_DOCS, BigNumber: constants.URL_BIGNUMBERJS_GITHUB, - DecodedLogEntryEvent: constants.URL_WEB3_DECODED_LOG_ENTRY_EVENT, - LogEntryEvent: constants.URL_WEB3_LOG_ENTRY_EVENT, - LogEntry: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L366', }, typeNameToDocSection: { ExchangeWrapper: 'exchange', -- cgit v1.2.3 From 1e13e927d022ff9b5eb4297430e13c2a79fa4508 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 17:36:01 +0900 Subject: Add missing space in property declaration --- packages/react-docs/src/components/documentation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/react-docs/src/components/documentation.tsx b/packages/react-docs/src/components/documentation.tsx index 14fe175cf..800892dc8 100644 --- a/packages/react-docs/src/components/documentation.tsx +++ b/packages/react-docs/src/components/documentation.tsx @@ -337,7 +337,7 @@ export class Documentation extends React.Component - {property.name}: + {property.name}:{' '} {property.source && ( -- cgit v1.2.3 From 34446cf5697a58a130c16f480bf021e707708982 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 17:36:41 +0900 Subject: Fix sol-cov, web3-wrapper, subproviders documentation pages given recent changes to the libraries --- packages/sol-cov/package.json | 3 ++- .../website/ts/containers/sol_cov_documentation.ts | 8 +++--- .../ts/containers/subproviders_documentation.ts | 12 +++------ .../ts/containers/web3_wrapper_documentation.ts | 29 +++++++++++++++++++--- 4 files changed, 34 insertions(+), 18 deletions(-) (limited to 'packages') diff --git a/packages/sol-cov/package.json b/packages/sol-cov/package.json index 6444fb876..82d0df30c 100644 --- a/packages/sol-cov/package.json +++ b/packages/sol-cov/package.json @@ -24,7 +24,8 @@ "assets": [], "docPublishConfigs": { "extraFileIncludes": [ - "../subproviders/src/types.ts" + "../subproviders/src/types.ts", + "../types/src/index.ts" ], "s3BucketPath": "s3://doc-jsons/sol-cov/", "s3StagingBucketPath": "s3://staging-doc-jsons/sol-cov/" diff --git a/packages/website/ts/containers/sol_cov_documentation.ts b/packages/website/ts/containers/sol_cov_documentation.ts index 2b901ec6f..58755c1e0 100644 --- a/packages/website/ts/containers/sol_cov_documentation.ts +++ b/packages/website/ts/containers/sol_cov_documentation.ts @@ -44,7 +44,7 @@ const docsInfoConfig: DocsInfoConfig = { }, sectionNameToModulePath: { [docSections.coverageSubprovider]: ['"sol-cov/src/coverage_subprovider"'], - [docSections.types]: ['"subproviders/src/types"'], + [docSections.types]: ['"subproviders/src/types"', '"types/src/index"'], }, menuSubsectionToVersionWhenIntroduced: {}, sections: docSections, @@ -52,11 +52,9 @@ const docsInfoConfig: DocsInfoConfig = { typeConfigs: { // Note: This needs to be kept in sync with the types exported in index.ts. Unfortunately there is // currently no way to extract the re-exported types from index.ts via TypeDoc :( - publicTypes: ['NextCallback', 'OnNextCompleted', 'ErrorCallback'], + publicTypes: ['NextCallback', 'OnNextCompleted', 'ErrorCallback', 'JSONRPCRequestPayload'], typeNameToExternalLink: {}, - typeNameToPrefix: { - JSONRPCRequestPayload: 'Web3', - }, + typeNameToPrefix: {}, typeNameToDocSection: {}, }, }; diff --git a/packages/website/ts/containers/subproviders_documentation.ts b/packages/website/ts/containers/subproviders_documentation.ts index 7aa05f9a5..4a956acea 100644 --- a/packages/website/ts/containers/subproviders_documentation.ts +++ b/packages/website/ts/containers/subproviders_documentation.ts @@ -91,25 +91,21 @@ const docsInfoConfig: DocsInfoConfig = { 'ErrorCallback', 'ECSignature', 'JSONRPCRequestPayloadWithMethod', + 'JSONRPCRequestPayload', 'JSONRPCResponsePayload', 'AccountFetchingConfigs', 'LedgerEthereumClientFactoryAsync', 'PartialTxParams', 'LedgerEthereumClient', 'LedgerSubproviderConfigs', + 'OnNextCompleted', + 'Provider', ], typeNameToExternalLink: { Web3: 'https://github.com/ethereum/wiki/wiki/JavaScript-API', BigNumber: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L127', - JSONRPCRequestPayload: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L137', - JSONRPCResponsePayload: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L144', - Provider: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L150', - }, - typeNameToPrefix: { - JSONRPCRequestPayload: 'Web3', - JSONRPCResponsePayload: 'Web3', - Provider: 'Web3', }, + typeNameToPrefix: {}, }, }; const docsInfo = new DocsInfo(docsInfoConfig); diff --git a/packages/website/ts/containers/web3_wrapper_documentation.ts b/packages/website/ts/containers/web3_wrapper_documentation.ts index b0adad536..9c0ca9b9a 100644 --- a/packages/website/ts/containers/web3_wrapper_documentation.ts +++ b/packages/website/ts/containers/web3_wrapper_documentation.ts @@ -59,15 +59,36 @@ const docsInfoConfig: DocsInfoConfig = { 'BlockWithoutTransactionData', 'CallData', 'LogEntryEvent', + 'Provider', + 'AbiDefinition', + 'LogTopic', + 'JSONRPCRequestPayload', + 'JSONRPCResponsePayload', + 'BlockParamLiteral', + 'FunctionAbi', + 'EventAbi', + 'JSONRPCErrorCallback', + 'MethodAbi', + 'ConstructorAbi', + 'FallbackAbi', + 'EventParameter', + 'DataItem', + 'StateMutability', + 'Function', + 'Fallback', + 'Constructor', + 'Event', + 'ConstructorStateMutability', + 'TransactionReceiptWithDecodedLogs', + 'DecodedLogArgs', + 'LogWithDecodedArgs', + 'ContractEventArg', ], typeNameToExternalLink: { Web3: 'https://github.com/ethereum/wiki/wiki/JavaScript-API', - Provider: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L150', BigNumber: 'http://mikemcl.github.io/bignumber.js', }, - typeNameToPrefix: { - Provider: 'Web3', - }, + typeNameToPrefix: {}, typeNameToDocSection: { Web3Wrapper: docSections.web3Wrapper, }, -- cgit v1.2.3 From bce97c2543d8f1f4fef3e65086d25ed37977b361 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 17:39:30 +0900 Subject: Add support for displaying default param values --- packages/react-docs/src/components/signature.tsx | 2 ++ packages/react-docs/src/types.ts | 1 + packages/react-docs/src/utils/typedoc_utils.ts | 1 + 3 files changed, 4 insertions(+) (limited to 'packages') diff --git a/packages/react-docs/src/components/signature.tsx b/packages/react-docs/src/components/signature.tsx index 83fb1e246..1d3c90261 100644 --- a/packages/react-docs/src/components/signature.tsx +++ b/packages/react-docs/src/components/signature.tsx @@ -91,6 +91,7 @@ function renderParameters( ) { const params = _.map(parameters, (p: Parameter) => { const isOptional = p.isOptional; + const hasDefaultValue = !_.isUndefined(p.defaultValue); const type = ( {p.name} {isOptional && '?'}: {type} + {hasDefaultValue && ` = ${p.defaultValue}`} ); }); diff --git a/packages/react-docs/src/types.ts b/packages/react-docs/src/types.ts index 2a300c164..3b4a57ad5 100644 --- a/packages/react-docs/src/types.ts +++ b/packages/react-docs/src/types.ts @@ -140,6 +140,7 @@ export interface Parameter { comment: string; isOptional: boolean; type: Type; + defaultValue?: string; } export interface TypeParameter { diff --git a/packages/react-docs/src/utils/typedoc_utils.ts b/packages/react-docs/src/utils/typedoc_utils.ts index e9035def0..9c89b135a 100644 --- a/packages/react-docs/src/utils/typedoc_utils.ts +++ b/packages/react-docs/src/utils/typedoc_utils.ts @@ -395,6 +395,7 @@ export const typeDocUtils = { name: entity.name, comment, isOptional, + defaultValue: entity.defaultValue, type, }; return parameter; -- cgit v1.2.3 From 6d1a587c5c5666a54c29302db90dd4d9fc79059e Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 18:04:02 +0900 Subject: Show staging docs on development and staging --- packages/website/ts/pages/documentation/doc_page.tsx | 8 +++++--- packages/website/ts/utils/utils.ts | 8 +++++++- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'packages') diff --git a/packages/website/ts/pages/documentation/doc_page.tsx b/packages/website/ts/pages/documentation/doc_page.tsx index 8ec1a023d..aca20447b 100644 --- a/packages/website/ts/pages/documentation/doc_page.tsx +++ b/packages/website/ts/pages/documentation/doc_page.tsx @@ -8,14 +8,14 @@ import semverSort = require('semver-sort'); import { SidebarHeader } from 'ts/components/sidebar_header'; import { TopBar } from 'ts/components/top_bar/top_bar'; import { Dispatcher } from 'ts/redux/dispatcher'; -import { DocPackages, Environments } from 'ts/types'; +import { DocPackages } from 'ts/types'; import { configs } from 'ts/utils/configs'; import { constants } from 'ts/utils/constants'; import { docUtils } from 'ts/utils/doc_utils'; import { Translate } from 'ts/utils/translate'; import { utils } from 'ts/utils/utils'; -const isDevelopment = configs.ENVIRONMENT === Environments.DEVELOPMENT; +const isDevelopmentOrStaging = utils.isDevelopment() || utils.isStaging(); const DEFAULT_ICON = 'docs.png'; const ZERO_EX_JS_VERSION_MISSING_TOPLEVEL_PATH = '0.32.4'; @@ -106,7 +106,9 @@ export class DocPage extends React.Component { } private async _fetchJSONDocsFireAndForgetAsync(preferredVersionIfExists?: string): Promise { const folderName = docIdToSubpackageName[this.props.docsInfo.id]; - const docBucketRoot = isDevelopment ? constants.S3_STAGING_DOC_BUCKET_ROOT : constants.S3_DOC_BUCKET_ROOT; + const docBucketRoot = isDevelopmentOrStaging + ? constants.S3_STAGING_DOC_BUCKET_ROOT + : constants.S3_DOC_BUCKET_ROOT; const versionToFilePath = await docUtils.getVersionToFilePathAsync(docBucketRoot, folderName); const versions = _.keys(versionToFilePath); this.props.dispatcher.updateAvailableDocVersions(versions); diff --git a/packages/website/ts/utils/utils.ts b/packages/website/ts/utils/utils.ts index afe159beb..53d60b3ce 100644 --- a/packages/website/ts/utils/utils.ts +++ b/packages/website/ts/utils/utils.ts @@ -5,7 +5,7 @@ import { BigNumber } from '@0xproject/utils'; import deepEqual = require('deep-equal'); import * as _ from 'lodash'; import * as moment from 'moment'; -import { Order, Providers, ScreenWidths, Side, SideToAssetToken, Token, TokenByAddress } from 'ts/types'; +import { Environments, Order, Providers, ScreenWidths, Side, SideToAssetToken, Token, TokenByAddress } from 'ts/types'; import { configs } from 'ts/utils/configs'; import { constants } from 'ts/utils/constants'; import * as u2f from 'ts/vendor/u2f_api'; @@ -292,4 +292,10 @@ export const utils = { } return parsedProviderName; }, + isDevelopment() { + return configs.ENVIRONMENT === Environments.DEVELOPMENT; + }, + isStaging() { + return _.includes(window.location.href, configs.DOMAIN_STAGING); + }, }; -- cgit v1.2.3 From f0afc0ae45c82d6e1227307e9cc7eca711ccaa05 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 18:14:22 +0900 Subject: Update 0x.js and web3-wrapper doc urls so that last segment is identical to package name. Keep legacy endpoints. --- packages/0x.js/CHANGELOG.json | 2 +- packages/0x.js/README.md | 2 +- packages/dev-utils/CHANGELOG.json | 2 +- packages/dev-utils/CHANGELOG.md | 2 +- packages/web3-wrapper/README.md | 2 +- packages/website/ts/components/top_bar/top_bar.tsx | 12 +++++++++--- packages/website/ts/index.tsx | 13 ++++++++++++- packages/website/ts/types.ts | 9 +++++++-- 8 files changed, 33 insertions(+), 11 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index 6d5dc0dd2..96bef0ebe 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -13,7 +13,7 @@ "changes": [ { "note": - "Removed `ZeroExError.TransactionMiningTimeout` and moved it to '@0xproject/web3_wrapper' `Web3WrapperErrors.TransactionMiningTimeout`", + "Removed `ZeroExError.TransactionMiningTimeout` and moved it to '@0xproject/web3-wrapper' `Web3WrapperErrors.TransactionMiningTimeout`", "pr": 485 } ], diff --git a/packages/0x.js/README.md b/packages/0x.js/README.md index 46848cbdd..f507516c4 100644 --- a/packages/0x.js/README.md +++ b/packages/0x.js/README.md @@ -2,7 +2,7 @@ A TypeScript/Javascript library for interacting with the 0x protocol. -### Read the [Documentation](0xproject.com/docs/0xjs). +### Read the [Documentation](0xproject.com/docs/0x.js). ## Installation diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index 64ef4b000..a9e8e5a4a 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -24,7 +24,7 @@ "note": "Reduce npm package size by adding an `.npmignore` file." }, { - "note": "Move `@0xproject/web3_wrapper` to dependencies from devDependencies." + "note": "Move `@0xproject/web3-wrapper` to dependencies from devDependencies." } ], "timestamp": 1521298800 diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 2e3953750..1f8062693 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -16,7 +16,7 @@ CHANGELOG ## v0.3.1 - _March 17, 2018_ * Reduce npm package size by adding an `.npmignore` file. - * Move `@0xproject/web3_wrapper` to dependencies from devDependencies. + * Move `@0xproject/web3-wrapper` to dependencies from devDependencies. ## v0.3.0 - _March 17, 2018_ diff --git a/packages/web3-wrapper/README.md b/packages/web3-wrapper/README.md index 1ff85420a..480684c7b 100644 --- a/packages/web3-wrapper/README.md +++ b/packages/web3-wrapper/README.md @@ -2,7 +2,7 @@ Wrapped version of web3 with a nicer interface that is used across 0x projects and packages. -### Read the [Documentation](0xproject.com/docs/web3_wrapper). +### Read the [Documentation](0xproject.com/docs/web3-wrapper). ## Installation diff --git a/packages/website/ts/components/top_bar/top_bar.tsx b/packages/website/ts/components/top_bar/top_bar.tsx index 4b2e82119..13351dcdc 100644 --- a/packages/website/ts/components/top_bar/top_bar.tsx +++ b/packages/website/ts/components/top_bar/top_bar.tsx @@ -15,7 +15,7 @@ import { TopBarMenuItem } from 'ts/components/top_bar/top_bar_menu_item'; import { DropDown } from 'ts/components/ui/drop_down'; import { Identicon } from 'ts/components/ui/identicon'; import { Dispatcher } from 'ts/redux/dispatcher'; -import { Deco, Key, ProviderType, WebsitePaths } from 'ts/types'; +import { Deco, Key, ProviderType, WebsiteLegacyPaths, WebsitePaths } from 'ts/types'; import { constants } from 'ts/utils/constants'; import { Translate } from 'ts/utils/translate'; @@ -462,7 +462,10 @@ export class TopBar extends React.Component { return _.includes(this.props.location.pathname, WebsitePaths.FAQ); } private _isViewing0xjsDocs() { - return _.includes(this.props.location.pathname, WebsitePaths.ZeroExJs); + return ( + _.includes(this.props.location.pathname, WebsitePaths.ZeroExJs) || + _.includes(this.props.location.pathname, WebsiteLegacyPaths.ZeroExJs) + ); } private _isViewingConnectDocs() { return _.includes(this.props.location.pathname, WebsitePaths.Connect); @@ -471,7 +474,10 @@ export class TopBar extends React.Component { return _.includes(this.props.location.pathname, WebsitePaths.SmartContracts); } private _isViewingWeb3WrapperDocs() { - return _.includes(this.props.location.pathname, WebsitePaths.Web3Wrapper); + return ( + _.includes(this.props.location.pathname, WebsitePaths.Web3Wrapper) || + _.includes(this.props.location.pathname, WebsiteLegacyPaths.Web3Wrapper) + ); } private _isViewingDeployerDocs() { return _.includes(this.props.location.pathname, WebsitePaths.Deployer); diff --git a/packages/website/ts/index.tsx b/packages/website/ts/index.tsx index d542bd804..5bc36da32 100644 --- a/packages/website/ts/index.tsx +++ b/packages/website/ts/index.tsx @@ -15,7 +15,7 @@ import { createLazyComponent } from 'ts/lazy_component'; import { trackedTokenStorage } from 'ts/local_storage/tracked_token_storage'; import { tradeHistoryStorage } from 'ts/local_storage/trade_history_storage'; import { reducer, State } from 'ts/redux/reducer'; -import { WebsitePaths } from 'ts/types'; +import { WebsiteLegacyPaths, WebsitePaths } from 'ts/types'; import { analytics } from 'ts/utils/analytics'; import { muiTheme } from 'ts/utils/mui_theme'; import { utils } from 'ts/utils/utils'; @@ -98,6 +98,17 @@ render( path={`${WebsitePaths.SmartContracts}/:version?`} component={LazySmartContractsDocumentation} /> + + {/* Legacy endpoints */} + + + diff --git a/packages/website/ts/types.ts b/packages/website/ts/types.ts index dba59f704..c03e5676f 100644 --- a/packages/website/ts/types.ts +++ b/packages/website/ts/types.ts @@ -341,17 +341,22 @@ export enum Docs { SmartContracts, } +export enum WebsiteLegacyPaths { + ZeroExJs = '/docs/0xjs', + Web3Wrapper = '/docs/web3_wrapper', +} + export enum WebsitePaths { Portal = '/portal', Wiki = '/wiki', - ZeroExJs = '/docs/0xjs', + ZeroExJs = '/docs/0x.js', Home = '/', FAQ = '/faq', About = '/about', Whitepaper = '/pdfs/0x_white_paper.pdf', SmartContracts = '/docs/contracts', Connect = '/docs/connect', - Web3Wrapper = '/docs/web3_wrapper', + Web3Wrapper = '/docs/web3-wrapper', Deployer = '/docs/deployer', JSONSchemas = '/docs/json-schemas', SolCov = '/docs/sol-cov', -- cgit v1.2.3 From 40f4dd91e95386c0d292c49dce335b2943039468 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 18:33:01 +0900 Subject: Update CHANGELOG --- packages/react-docs/CHANGELOG.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'packages') diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 0a85bb32d..2c06e5c1c 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,4 +1,17 @@ [ + { + "version": "0.0.7", + "changes": [ + { + "note": "Added support for rendering default param values", + "pr": 519 + }, + { + "note": "Added support for rendering nested function types within interface types", + "pr": 519 + } + ] + }, { "timestamp": 1522673609, "version": "0.0.6", -- cgit v1.2.3 From 41bd0e30d6d0a18530e31133efe57d35e3360ebd Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 18:43:58 +0900 Subject: Add comment about Provider type --- packages/types/src/index.ts | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'packages') diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 2e7e629b5..044aae3c8 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -2,6 +2,10 @@ import { BigNumber } from 'bignumber.js'; export type JSONRPCErrorCallback = (err: Error | null, result?: JSONRPCResponsePayload) => void; +/** + * Do not create your own provider. Use an existing provider from a Web3 or ProviderEngine library + * Read more about Providers in the 0x wiki. + */ export interface Provider { sendAsync(payload: JSONRPCRequestPayload, callback: JSONRPCErrorCallback): void; } -- cgit v1.2.3 From 2fe209d5ff2f2e81b3c1d83ac870c0cac9acdef8 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 18:55:42 +0900 Subject: Fix lint error --- packages/monorepo-scripts/src/publish.ts | 1 + 1 file changed, 1 insertion(+) (limited to 'packages') diff --git a/packages/monorepo-scripts/src/publish.ts b/packages/monorepo-scripts/src/publish.ts index ebc30def4..21c8b72c9 100644 --- a/packages/monorepo-scripts/src/publish.ts +++ b/packages/monorepo-scripts/src/publish.ts @@ -93,6 +93,7 @@ package.ts. Please add an entry for it and try again.`, ); } const link = `${constants.stagingWebsite}/docs/${docSegmentIfExists}`; + // tslint:disable-next-line:no-floating-promises opn(link); }); -- cgit v1.2.3 From b146acc69e46d2565474bcb4d47bfa760fd26fad Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 21:59:30 +0900 Subject: Simplify the tests --- packages/0x.js/test/0x.js_test.ts | 5 ++--- packages/0x.js/test/ether_token_wrapper_test.ts | 3 +-- packages/0x.js/test/exchange_wrapper_test.ts | 3 +-- packages/0x.js/test/token_wrapper_test.ts | 3 +-- packages/contracts/test/utils/web3_wrapper.ts | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/test/0x.js_test.ts b/packages/0x.js/test/0x.js_test.ts index 5720f42ce..de5a6be58 100644 --- a/packages/0x.js/test/0x.js_test.ts +++ b/packages/0x.js/test/0x.js_test.ts @@ -42,10 +42,9 @@ describe('ZeroEx library', () => { expect((zeroEx.exchange as any)._exchangeContractIfExists).to.not.be.undefined(); expect((zeroEx.tokenRegistry as any)._tokenRegistryContractIfExists).to.not.be.undefined(); - const newProvider = provider; // Add property to newProvider so that we can differentiate it from old provider - (newProvider as any).zeroExTestId = 1; - zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); + (provider as any).zeroExTestId = 1; + zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID); // Check that contractInstances with old provider are removed after provider update expect((zeroEx.exchange as any)._exchangeContractIfExists).to.be.undefined(); diff --git a/packages/0x.js/test/ether_token_wrapper_test.ts b/packages/0x.js/test/ether_token_wrapper_test.ts index e1ae34edb..99c42fe0b 100644 --- a/packages/0x.js/test/ether_token_wrapper_test.ts +++ b/packages/0x.js/test/ether_token_wrapper_test.ts @@ -260,8 +260,7 @@ describe('EtherTokenWrapper', () => { callbackNeverToBeCalled, ); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = provider; - zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); + zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID); await zeroEx.etherToken.depositAsync(etherTokenAddress, transferAmount, addressWithETH); zeroEx.etherToken.subscribe( etherTokenAddress, diff --git a/packages/0x.js/test/exchange_wrapper_test.ts b/packages/0x.js/test/exchange_wrapper_test.ts index addfa6f91..cd74af5a1 100644 --- a/packages/0x.js/test/exchange_wrapper_test.ts +++ b/packages/0x.js/test/exchange_wrapper_test.ts @@ -976,8 +976,7 @@ describe('ExchangeWrapper', () => { ); zeroEx.exchange.subscribe(ExchangeEvents.LogFill, indexFilterValues, callbackNeverToBeCalled); - const newProvider = provider; - zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); + zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID); const callback = reportNodeCallbackErrors(done)( (logEvent: DecodedLogEvent) => { diff --git a/packages/0x.js/test/token_wrapper_test.ts b/packages/0x.js/test/token_wrapper_test.ts index 63f17acf7..5a8e6d16f 100644 --- a/packages/0x.js/test/token_wrapper_test.ts +++ b/packages/0x.js/test/token_wrapper_test.ts @@ -425,8 +425,7 @@ describe('TokenWrapper', () => { ); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackNeverToBeCalled); const callbackToBeCalled = reportNodeCallbackErrors(done)(); - const newProvider = provider; - zeroEx.setProvider(newProvider, constants.TESTRPC_NETWORK_ID); + zeroEx.setProvider(provider, constants.TESTRPC_NETWORK_ID); zeroEx.token.subscribe(tokenAddress, TokenEvents.Transfer, indexFilterValues, callbackToBeCalled); await zeroEx.token.transferAsync(tokenAddress, coinbase, addressWithoutFunds, transferAmount); })().catch(done); diff --git a/packages/contracts/test/utils/web3_wrapper.ts b/packages/contracts/test/utils/web3_wrapper.ts index bc4e1cfd8..dd6f198c4 100644 --- a/packages/contracts/test/utils/web3_wrapper.ts +++ b/packages/contracts/test/utils/web3_wrapper.ts @@ -4,5 +4,5 @@ import { Web3Wrapper } from '@0xproject/web3-wrapper'; const providerConfigs = { shouldUseInProcessGanache: true }; export const web3 = web3Factory.create(providerConfigs); -export const provider: Provider = web3.currentProvider; +export const provider = web3.currentProvider; export const web3Wrapper = new Web3Wrapper(provider); -- cgit v1.2.3 From f892b7dbf657f71f4fec177e838883de8327624b Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 22:00:54 +0900 Subject: Move NULL_BYTES to @0xproject/utils --- packages/0x.js/test/utils/constants.ts | 1 - packages/contracts/test/token_registry.ts | 6 +++--- packages/contracts/util/constants.ts | 1 - packages/migrations/src/migration.ts | 12 +++++------- packages/migrations/src/utils/constants.ts | 3 --- packages/migrations/src/utils/token_info.ts | 24 ++++++++++++------------ packages/utils/CHANGELOG.json | 9 +++++++++ packages/utils/src/constants.ts | 1 + packages/utils/src/index.ts | 2 ++ 9 files changed, 32 insertions(+), 27 deletions(-) delete mode 100644 packages/migrations/src/utils/constants.ts create mode 100644 packages/utils/src/constants.ts (limited to 'packages') diff --git a/packages/0x.js/test/utils/constants.ts b/packages/0x.js/test/utils/constants.ts index 3b74fa863..cf030259c 100644 --- a/packages/0x.js/test/utils/constants.ts +++ b/packages/0x.js/test/utils/constants.ts @@ -6,5 +6,4 @@ export const constants = { KOVAN_RPC_URL: 'https://kovan.infura.io/', ROPSTEN_RPC_URL: 'https://ropsten.infura.io/', ZRX_DECIMALS: 18, - NULL_BYTES: '0x', }; diff --git a/packages/contracts/test/token_registry.ts b/packages/contracts/test/token_registry.ts index 12fc52dbc..4c404176b 100644 --- a/packages/contracts/test/token_registry.ts +++ b/packages/contracts/test/token_registry.ts @@ -1,6 +1,6 @@ import { ZeroEx } from '0x.js'; import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; -import { BigNumber } from '@0xproject/utils'; +import { BigNumber, NULL_BYTES } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as chai from 'chai'; import ethUtil = require('ethereumjs-util'); @@ -66,8 +66,8 @@ describe('TokenRegistry', () => { name: '', symbol: '', decimals: 0, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }; describe('addToken', () => { diff --git a/packages/contracts/util/constants.ts b/packages/contracts/util/constants.ts index 9bb090a2a..d1152e683 100644 --- a/packages/contracts/util/constants.ts +++ b/packages/contracts/util/constants.ts @@ -4,7 +4,6 @@ const DUMMY_TOKEN_DECIMALS = 18; const DUMMY_TOKEN_TOTAL_SUPPLY = 0; export const constants = { - NULL_BYTES: '0x', INVALID_OPCODE: 'invalid opcode', REVERT: 'revert', TESTRPC_NETWORK_ID: 50, diff --git a/packages/migrations/src/migration.ts b/packages/migrations/src/migration.ts index be899cc65..4827328fc 100644 --- a/packages/migrations/src/migration.ts +++ b/packages/migrations/src/migration.ts @@ -1,10 +1,8 @@ import { Deployer } from '@0xproject/deployer'; -import { BigNumber } from '@0xproject/utils'; +import { BigNumber, NULL_BYTES } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as _ from 'lodash'; -import { constants } from './utils/constants'; - import { ContractName } from './types'; import { tokenInfo } from './utils/token_info'; @@ -51,8 +49,8 @@ export const runMigrationsAsync = async (deployer: Deployer) => { '0x Protocol Token', 'ZRX', 18, - constants.NULL_BYTES, - constants.NULL_BYTES, + NULL_BYTES, + NULL_BYTES, { from: owner, gas: addTokenGasEstimate, @@ -63,8 +61,8 @@ export const runMigrationsAsync = async (deployer: Deployer) => { 'Ether Token', 'WETH', 18, - constants.NULL_BYTES, - constants.NULL_BYTES, + NULL_BYTES, + NULL_BYTES, { from: owner, gas: addTokenGasEstimate, diff --git a/packages/migrations/src/utils/constants.ts b/packages/migrations/src/utils/constants.ts deleted file mode 100644 index 8871a470d..000000000 --- a/packages/migrations/src/utils/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const constants = { - NULL_BYTES: '0x', -}; diff --git a/packages/migrations/src/utils/token_info.ts b/packages/migrations/src/utils/token_info.ts index f2ca3e8b3..968665c7d 100644 --- a/packages/migrations/src/utils/token_info.ts +++ b/packages/migrations/src/utils/token_info.ts @@ -1,41 +1,41 @@ -import { Token } from '../types'; +import { NULL_BYTES } from '@0xproject/utils'; -import { constants } from './constants'; +import { Token } from '../types'; export const tokenInfo: Token[] = [ { name: 'Augur Reputation Token', symbol: 'REP', decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }, { name: 'Digix DAO Token', symbol: 'DGD', decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }, { name: 'Golem Network Token', symbol: 'GNT', decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }, { name: 'MakerDAO', symbol: 'MKR', decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }, { name: 'Melon Token', symbol: 'MLN', decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }, ]; diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index 0c71963c3..3ba1f7d01 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "version": "0.5.1", + "changes": [ + { + "note": "Export NULL_BYTES constant", + "pr": 500 + } + ] + }, { "version": "0.5.0", "changes": [ diff --git a/packages/utils/src/constants.ts b/packages/utils/src/constants.ts new file mode 100644 index 000000000..2894d4747 --- /dev/null +++ b/packages/utils/src/constants.ts @@ -0,0 +1 @@ +export const NULL_BYTES = '0x'; diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index 0da4b265d..75c096ee6 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -6,3 +6,5 @@ export { BigNumber } from './configured_bignumber'; export { AbiDecoder } from './abi_decoder'; export { logUtils } from './log_utils'; export { abiUtils } from './abi_utils'; + +export { NULL_BYTES } from './constants'; -- cgit v1.2.3 From b053781453de65d220c10b4cdd25f735dbc416de Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 22:01:00 +0900 Subject: Simply export --- packages/migrations/src/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'packages') diff --git a/packages/migrations/src/index.ts b/packages/migrations/src/index.ts index 2a40f36bc..c342247a3 100644 --- a/packages/migrations/src/index.ts +++ b/packages/migrations/src/index.ts @@ -1,3 +1 @@ -import { runMigrationsAsync } from './migration'; - -export { runMigrationsAsync }; +export { runMigrationsAsync } from './migration'; -- cgit v1.2.3 From e472f7899fab3e44c6af4dc8bd2d434fbb8ef929 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 22:04:26 +0900 Subject: Fix lint issue --- packages/0x.js/test/token_wrapper_test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/test/token_wrapper_test.ts b/packages/0x.js/test/token_wrapper_test.ts index 5a8e6d16f..04fd943aa 100644 --- a/packages/0x.js/test/token_wrapper_test.ts +++ b/packages/0x.js/test/token_wrapper_test.ts @@ -516,10 +516,10 @@ describe('TokenWrapper', () => { }); // tslint:disable:max-file-line-count -function addEmptyWalletSubprovider(provider: Provider): Provider { +function addEmptyWalletSubprovider(p: Provider): Provider { const providerEngine = new Web3ProviderEngine(); providerEngine.addProvider(new EmptyWalletSubprovider()); - const currentSubproviders = (provider as any)._providers; + const currentSubproviders = (p as any)._providers; for (const subprovider of currentSubproviders) { providerEngine.addProvider(subprovider); } -- cgit v1.2.3 From 9db1ce7ceb390444238883300ebabd99b67abcdc Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 22:37:23 +0900 Subject: Fix 0x.js tests --- packages/0x.js/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 961a97d84..d59e170b0 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -21,7 +21,7 @@ "test": "run-s clean test:commonjs", "test:coverage": "nyc npm run test --all && yarn coverage:report:lcov", "coverage:report:lcov": "nyc report --reporter=text-lcov > coverage/lcov.info", - "update_artifacts": "for i in ${npm_package_config_compact_artifacts}; do copyfiles -u 4 ../migrations/src/artifacts/$i.json test/artifacts; done;", + "update_artifacts": "for i in ${npm_package_config_contracts}; do copyfiles -u 4 ../migrations/src/artifacts/$i.json test/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp scripts", "build:umd:prod": "NODE_ENV=production webpack", "build:commonjs": "tsc && yarn update_artifacts && copyfiles -u 2 './src/compact_artifacts/**/*.json' ./lib/src/compact_artifacts && copyfiles -u 3 './lib/src/monorepo_scripts/**/*' ./scripts", @@ -34,6 +34,7 @@ }, "config": { "compact_artifacts": "Exchange DummyToken ZRXToken Token EtherToken TokenTransferProxy TokenRegistry", + "contracts": "Exchange DummyToken ZRXToken Token WETH9 TokenTransferProxy MultiSigWallet MultiSigWalletWithTimeLock MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress MaliciousToken TokenRegistry Arbitrage EtherDelta AccountLevels", "postpublish": { "assets": [ "packages/0x.js/_bundles/index.js", -- cgit v1.2.3 From 3c84ce205000e9268163c4a15bc0753f566ccd56 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 11 Apr 2018 22:37:39 +0900 Subject: Improve deployer error message --- packages/deployer/src/deployer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages') diff --git a/packages/deployer/src/deployer.ts b/packages/deployer/src/deployer.ts index e4208e7a1..ad05417b1 100644 --- a/packages/deployer/src/deployer.ts +++ b/packages/deployer/src/deployer.ts @@ -170,7 +170,7 @@ export class Deployer { const contractArtifact: ContractArtifact = require(artifactPath); return contractArtifact; } catch (err) { - throw new Error(`Artifact not found for contract: ${contractName}`); + throw new Error(`Artifact not found for contract: ${contractName} at ${artifactPath}`); } } /** -- cgit v1.2.3 From 631e7e9c58c5bacd080ceb971d2708c81e932502 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 11 Apr 2018 18:00:39 +0200 Subject: Updated CHANGELOGS --- packages/0x.js/CHANGELOG.json | 3 ++- packages/0x.js/CHANGELOG.md | 4 ++++ packages/abi-gen/CHANGELOG.json | 9 +++++++++ packages/abi-gen/CHANGELOG.md | 4 ++++ packages/assert/CHANGELOG.json | 9 +++++++++ packages/assert/CHANGELOG.md | 4 ++++ packages/base-contract/CHANGELOG.json | 3 ++- packages/base-contract/CHANGELOG.md | 4 ++++ packages/connect/CHANGELOG.json | 9 +++++++++ packages/connect/CHANGELOG.md | 4 ++++ packages/deployer/CHANGELOG.json | 3 ++- packages/deployer/CHANGELOG.md | 4 ++++ packages/dev-utils/CHANGELOG.json | 9 +++++++++ packages/dev-utils/CHANGELOG.md | 4 ++++ packages/json-schemas/CHANGELOG.json | 9 +++++++++ packages/json-schemas/CHANGELOG.md | 4 ++++ packages/monorepo-scripts/CHANGELOG.json | 9 +++++++++ packages/monorepo-scripts/CHANGELOG.md | 4 ++++ packages/react-docs/CHANGELOG.json | 9 +++++++++ packages/react-docs/CHANGELOG.md | 4 ++++ packages/react-shared/CHANGELOG.json | 9 +++++++++ packages/react-shared/CHANGELOG.md | 4 ++++ packages/sol-cov/CHANGELOG.json | 9 +++++++++ packages/sol-cov/CHANGELOG.md | 4 ++++ packages/sra-report/CHANGELOG.json | 9 +++++++++ packages/sra-report/CHANGELOG.md | 4 ++++ packages/subproviders/CHANGELOG.json | 3 ++- packages/subproviders/CHANGELOG.md | 4 ++++ packages/tslint-config/CHANGELOG.json | 9 +++++++++ packages/tslint-config/CHANGELOG.md | 4 ++++ packages/types/CHANGELOG.json | 3 ++- packages/types/CHANGELOG.md | 4 ++++ packages/typescript-typings/CHANGELOG.json | 3 ++- packages/typescript-typings/CHANGELOG.md | 4 ++++ packages/utils/CHANGELOG.json | 9 +++++++++ packages/utils/CHANGELOG.md | 4 ++++ packages/web3-wrapper/CHANGELOG.json | 3 ++- packages/web3-wrapper/CHANGELOG.md | 5 +++++ 38 files changed, 199 insertions(+), 7 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/CHANGELOG.json b/packages/0x.js/CHANGELOG.json index 6d5dc0dd2..6bcfcb73e 100644 --- a/packages/0x.js/CHANGELOG.json +++ b/packages/0x.js/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Moved Web3.Provider to `@0xproject/types:Provider`", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "version": "0.35.0", diff --git a/packages/0x.js/CHANGELOG.md b/packages/0x.js/CHANGELOG.md index c18915417..693b4f4b2 100644 --- a/packages/0x.js/CHANGELOG.md +++ b/packages/0x.js/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.36.0 - _April 11, 2018_ + + * Moved Web3.Provider to `@0xproject/types:Provider` (#501) + ## v0.35.0 - _April 2, 2018_ * Removed `ZeroExError.TransactionMiningTimeout` and moved it to '@0xproject/web3_wrapper' `Web3WrapperErrors.TransactionMiningTimeout` (#485) diff --git a/packages/abi-gen/CHANGELOG.json b/packages/abi-gen/CHANGELOG.json index e720cc04b..84f3e318c 100644 --- a/packages/abi-gen/CHANGELOG.json +++ b/packages/abi-gen/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.2.10", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.2.9", diff --git a/packages/abi-gen/CHANGELOG.md b/packages/abi-gen/CHANGELOG.md index 4b8158ebf..5b3b68af3 100644 --- a/packages/abi-gen/CHANGELOG.md +++ b/packages/abi-gen/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.2.10 - _April 11, 2018_ + + * Dependencies updated + ## v0.2.9 - _April 2, 2018_ * Dependencies updated diff --git a/packages/assert/CHANGELOG.json b/packages/assert/CHANGELOG.json index 717b803af..9889d0efa 100644 --- a/packages/assert/CHANGELOG.json +++ b/packages/assert/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.2.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.2.5", diff --git a/packages/assert/CHANGELOG.md b/packages/assert/CHANGELOG.md index aeb6949ce..f482ba92b 100644 --- a/packages/assert/CHANGELOG.md +++ b/packages/assert/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.2.6 - _April 11, 2018_ + + * Dependencies updated + ## v0.2.5 - _April 2, 2018_ * Dependencies updated diff --git a/packages/base-contract/CHANGELOG.json b/packages/base-contract/CHANGELOG.json index da957ec83..ede16cdc4 100644 --- a/packages/base-contract/CHANGELOG.json +++ b/packages/base-contract/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Contract wrappers now accept Provider and defaults instead of Web3Wrapper", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "version": "0.1.0", diff --git a/packages/base-contract/CHANGELOG.md b/packages/base-contract/CHANGELOG.md index aebb0a5d9..851df7b62 100644 --- a/packages/base-contract/CHANGELOG.md +++ b/packages/base-contract/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.2.0 - _April 11, 2018_ + + * Contract wrappers now accept Provider and defaults instead of Web3Wrapper (#501) + ## v0.1.0 - _April 2, 2018_ * Add tests for traversing ABI tree (#485) diff --git a/packages/connect/CHANGELOG.json b/packages/connect/CHANGELOG.json index 239dd23a4..a2b5c94d3 100644 --- a/packages/connect/CHANGELOG.json +++ b/packages/connect/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.6.9", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.6.8", diff --git a/packages/connect/CHANGELOG.md b/packages/connect/CHANGELOG.md index 2e50b9e2a..99b5746b5 100644 --- a/packages/connect/CHANGELOG.md +++ b/packages/connect/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.6.9 - _April 11, 2018_ + + * Dependencies updated + ## v0.6.8 - _April 2, 2018_ * Dependencies updated diff --git a/packages/deployer/CHANGELOG.json b/packages/deployer/CHANGELOG.json index f9691466b..b130405dc 100644 --- a/packages/deployer/CHANGELOG.json +++ b/packages/deployer/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Changed the config key `web3Provider` to `provider` to be consistent with other tools", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "version": "0.3.5", diff --git a/packages/deployer/CHANGELOG.md b/packages/deployer/CHANGELOG.md index b11aa988c..4b49092ae 100644 --- a/packages/deployer/CHANGELOG.md +++ b/packages/deployer/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.4.0 - _April 11, 2018_ + + * Changed the config key `web3Provider` to `provider` to be consistent with other tools (#501) + ## v0.3.5 - _April 2, 2018_ * Don't try to write contract artifact if an error occured (#485) diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index 64ef4b000..59169621e 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.3.5", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.3.4", diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 2e3953750..499ac335f 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.3.5 - _April 11, 2018_ + + * Dependencies updated + ## v0.3.4 - _April 2, 2018_ * Dependencies updated diff --git a/packages/json-schemas/CHANGELOG.json b/packages/json-schemas/CHANGELOG.json index d6360f5d4..5e5d1ca54 100644 --- a/packages/json-schemas/CHANGELOG.json +++ b/packages/json-schemas/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.7.20", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.7.19", diff --git a/packages/json-schemas/CHANGELOG.md b/packages/json-schemas/CHANGELOG.md index 66943db57..10adc6c46 100644 --- a/packages/json-schemas/CHANGELOG.md +++ b/packages/json-schemas/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.7.20 - _April 11, 2018_ + + * Dependencies updated + ## v0.7.19 - _April 2, 2018_ * Dependencies updated diff --git a/packages/monorepo-scripts/CHANGELOG.json b/packages/monorepo-scripts/CHANGELOG.json index 05e1ce2a2..431ae879b 100644 --- a/packages/monorepo-scripts/CHANGELOG.json +++ b/packages/monorepo-scripts/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.1.17", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522658513, "version": "0.1.16", diff --git a/packages/monorepo-scripts/CHANGELOG.md b/packages/monorepo-scripts/CHANGELOG.md index 8734cb835..1942f03f3 100644 --- a/packages/monorepo-scripts/CHANGELOG.md +++ b/packages/monorepo-scripts/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.1.17 - _April 11, 2018_ + + * Dependencies updated + ## v0.1.16 - _April 2, 2018_ * Dependencies updated diff --git a/packages/react-docs/CHANGELOG.json b/packages/react-docs/CHANGELOG.json index 0a85bb32d..d8655277a 100644 --- a/packages/react-docs/CHANGELOG.json +++ b/packages/react-docs/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.0.6", diff --git a/packages/react-docs/CHANGELOG.md b/packages/react-docs/CHANGELOG.md index 3bb01feff..bb531f8b3 100644 --- a/packages/react-docs/CHANGELOG.md +++ b/packages/react-docs/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.0.7 - _April 11, 2018_ + + * Dependencies updated + ## v0.0.6 - _April 2, 2018_ * Dependencies updated diff --git a/packages/react-shared/CHANGELOG.json b/packages/react-shared/CHANGELOG.json index 858750253..737f46fd9 100644 --- a/packages/react-shared/CHANGELOG.json +++ b/packages/react-shared/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.1.2", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.1.1", diff --git a/packages/react-shared/CHANGELOG.md b/packages/react-shared/CHANGELOG.md index 6a2e7ec83..46119ad48 100644 --- a/packages/react-shared/CHANGELOG.md +++ b/packages/react-shared/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.1.2 - _April 11, 2018_ + + * Dependencies updated + ## v0.1.1 - _April 2, 2018_ * Dependencies updated diff --git a/packages/sol-cov/CHANGELOG.json b/packages/sol-cov/CHANGELOG.json index e24a264db..ca4c67f7e 100644 --- a/packages/sol-cov/CHANGELOG.json +++ b/packages/sol-cov/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.0.7", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.0.6", diff --git a/packages/sol-cov/CHANGELOG.md b/packages/sol-cov/CHANGELOG.md index e2e5d92ec..c55d751a8 100644 --- a/packages/sol-cov/CHANGELOG.md +++ b/packages/sol-cov/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.0.7 - _April 11, 2018_ + + * Dependencies updated + ## v0.0.6 - _April 2, 2018_ * Dependencies updated diff --git a/packages/sra-report/CHANGELOG.json b/packages/sra-report/CHANGELOG.json index 35c849e4e..d8200b0cd 100644 --- a/packages/sra-report/CHANGELOG.json +++ b/packages/sra-report/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.0.8", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.0.7", diff --git a/packages/sra-report/CHANGELOG.md b/packages/sra-report/CHANGELOG.md index eb45322b8..6dc4b3d2f 100644 --- a/packages/sra-report/CHANGELOG.md +++ b/packages/sra-report/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.0.8 - _April 11, 2018_ + + * Dependencies updated + ## v0.0.7 - _April 2, 2018_ * Dependencies updated diff --git a/packages/subproviders/CHANGELOG.json b/packages/subproviders/CHANGELOG.json index f0702cd5d..4431238be 100644 --- a/packages/subproviders/CHANGELOG.json +++ b/packages/subproviders/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Add private key subprovider and refactor shared functionality into a base wallet subprovider", "pr": 506 } - ] + ], + "timestamp": 1523462196 }, { "timestamp": 1522673609, diff --git a/packages/subproviders/CHANGELOG.md b/packages/subproviders/CHANGELOG.md index 79711e7b7..85cd420dc 100644 --- a/packages/subproviders/CHANGELOG.md +++ b/packages/subproviders/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.8.5 - _April 11, 2018_ + + * Add private key subprovider and refactor shared functionality into a base wallet subprovider (#506) + ## v0.8.4 - _April 2, 2018_ * Dependencies updated diff --git a/packages/tslint-config/CHANGELOG.json b/packages/tslint-config/CHANGELOG.json index 363fead6f..99e80a05b 100644 --- a/packages/tslint-config/CHANGELOG.json +++ b/packages/tslint-config/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.4.15", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "timestamp": 1522673609, "version": "0.4.14", diff --git a/packages/tslint-config/CHANGELOG.md b/packages/tslint-config/CHANGELOG.md index 5b17ad9dc..d19f20d0f 100644 --- a/packages/tslint-config/CHANGELOG.md +++ b/packages/tslint-config/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.4.15 - _April 11, 2018_ + + * Dependencies updated + ## v0.4.14 - _April 2, 2018_ * Dependencies updated diff --git a/packages/types/CHANGELOG.json b/packages/types/CHANGELOG.json index 2e4c5f091..e0ff1e14d 100644 --- a/packages/types/CHANGELOG.json +++ b/packages/types/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Add Provider type", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "version": "0.5.0", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index 96a4df8b8..24ce3c30a 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.6.0 - _April 11, 2018_ + + * Add Provider type (#501) + ## v0.5.0 - _April 2, 2018_ * Make `DataItem.components` optional (#485) diff --git a/packages/typescript-typings/CHANGELOG.json b/packages/typescript-typings/CHANGELOG.json index 294d9ee9f..39af8ace0 100644 --- a/packages/typescript-typings/CHANGELOG.json +++ b/packages/typescript-typings/CHANGELOG.json @@ -6,7 +6,8 @@ "note": "Add types for more packages", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "timestamp": 1522673609, diff --git a/packages/typescript-typings/CHANGELOG.md b/packages/typescript-typings/CHANGELOG.md index ec7d90a86..d5a356918 100644 --- a/packages/typescript-typings/CHANGELOG.md +++ b/packages/typescript-typings/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.1.0 - _April 11, 2018_ + + * Add types for more packages (#501) + ## v0.0.3 - _April 2, 2018_ * Dependencies updated diff --git a/packages/utils/CHANGELOG.json b/packages/utils/CHANGELOG.json index 0c71963c3..0dbb32b15 100644 --- a/packages/utils/CHANGELOG.json +++ b/packages/utils/CHANGELOG.json @@ -1,4 +1,13 @@ [ + { + "timestamp": 1523462196, + "version": "0.5.1", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, { "version": "0.5.0", "changes": [ diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index 018f19a15..2123d1097 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.5.1 - _April 11, 2018_ + + * Dependencies updated + ## v0.5.0 - _April 2, 2018_ * Make `AbiDecoder.addABI` public (#485) diff --git a/packages/web3-wrapper/CHANGELOG.json b/packages/web3-wrapper/CHANGELOG.json index 14e45dacb..473684087 100644 --- a/packages/web3-wrapper/CHANGELOG.json +++ b/packages/web3-wrapper/CHANGELOG.json @@ -10,7 +10,8 @@ "note": "Add static methods `toUnitAmount` and `toBaseUnitAmount`", "pr": 501 } - ] + ], + "timestamp": 1523462196 }, { "version": "0.5.0", diff --git a/packages/web3-wrapper/CHANGELOG.md b/packages/web3-wrapper/CHANGELOG.md index 3d498022a..8b0d4139b 100644 --- a/packages/web3-wrapper/CHANGELOG.md +++ b/packages/web3-wrapper/CHANGELOG.md @@ -5,6 +5,11 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.6.0 - _April 11, 2018_ + + * Make `isAddress` and `toWei` static (#501) + * Add static methods `toUnitAmount` and `toBaseUnitAmount` (#501) + ## v0.5.0 - _April 2, 2018_ * Add `web3Wrapper.awaitTransactionMinedAsync` (#485) -- cgit v1.2.3 From e8d4f6d5322930cf8618abcb9fea7c773a87ecd7 Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Wed, 11 Apr 2018 18:00:46 +0200 Subject: Publish - 0x.js@0.36.0 - @0xproject/abi-gen@0.2.10 - @0xproject/assert@0.2.6 - @0xproject/base-contract@0.2.0 - @0xproject/connect@0.6.9 - contracts@2.1.22 - @0xproject/deployer@0.4.0 - @0xproject/dev-utils@0.3.5 - @0xproject/json-schemas@0.7.20 - @0xproject/metacoin@0.0.3 - @0xproject/monorepo-scripts@0.1.17 - @0xproject/react-docs-example@0.0.7 - @0xproject/react-docs@0.0.7 - @0xproject/react-shared@0.1.2 - @0xproject/sol-cov@0.0.7 - @0xproject/sra-report@0.0.8 - @0xproject/subproviders@0.8.5 - @0xproject/testnet-faucets@1.0.23 - @0xproject/tslint-config@0.4.15 - @0xproject/types@0.6.0 - @0xproject/typescript-typings@0.1.0 - @0xproject/utils@0.5.1 - @0xproject/web3-wrapper@0.6.0 - @0xproject/website@0.0.25 --- packages/0x.js/package.json | 22 +++++++++++----------- packages/abi-gen/package.json | 12 ++++++------ packages/assert/package.json | 12 ++++++------ packages/base-contract/package.json | 14 +++++++------- packages/connect/package.json | 16 ++++++++-------- packages/contracts/package.json | 18 +++++++++--------- packages/deployer/package.json | 16 ++++++++-------- packages/dev-utils/package.json | 16 ++++++++-------- packages/json-schemas/package.json | 10 +++++----- packages/metacoin/package.json | 22 +++++++++++----------- packages/monorepo-scripts/package.json | 2 +- packages/react-docs-example/package.json | 6 +++--- packages/react-docs/package.json | 12 ++++++------ packages/react-shared/package.json | 8 ++++---- packages/sol-cov/package.json | 12 ++++++------ packages/sra-report/package.json | 18 +++++++++--------- packages/subproviders/package.json | 16 ++++++++-------- packages/testnet-faucets/package.json | 12 ++++++------ packages/tslint-config/package.json | 4 ++-- packages/types/package.json | 6 +++--- packages/typescript-typings/package.json | 6 +++--- packages/utils/package.json | 10 +++++----- packages/web3-wrapper/package.json | 24 ++++++++++++------------ packages/website/package.json | 16 ++++++++-------- 24 files changed, 155 insertions(+), 155 deletions(-) (limited to 'packages') diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 882b40733..5f78aae6b 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -1,6 +1,6 @@ { "name": "0x.js", - "version": "0.35.0", + "version": "0.36.0", "description": "A javascript library for interacting with the 0x protocol", "keywords": [ "0x.js", @@ -60,9 +60,9 @@ "node": ">=6.0.0" }, "devDependencies": { - "@0xproject/dev-utils": "^0.3.4", - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/dev-utils": "^0.3.5", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/bintrees": "^1.0.2", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", @@ -93,13 +93,13 @@ "webpack": "^3.1.0" }, "dependencies": { - "@0xproject/assert": "^0.2.5", - "@0xproject/base-contract": "^0.1.0", - "@0xproject/json-schemas": "^0.7.19", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "@0xproject/assert": "^0.2.6", + "@0xproject/base-contract": "^0.2.0", + "@0xproject/json-schemas": "^0.7.20", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "bintrees": "^1.0.2", "bn.js": "^4.11.8", "ethereumjs-abi": "^0.6.4", diff --git a/packages/abi-gen/package.json b/packages/abi-gen/package.json index f6252e5ef..6aabb054a 100644 --- a/packages/abi-gen/package.json +++ b/packages/abi-gen/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/abi-gen", - "version": "0.2.9", + "version": "0.2.10", "description": "Generate contract wrappers from ABI and handlebars templates", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -24,9 +24,9 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/abi-gen/README.md", "dependencies": { - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "chalk": "^2.3.0", "glob": "^7.1.2", "handlebars": "^4.0.11", @@ -36,8 +36,8 @@ "yargs": "^10.0.3" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/glob": "^5.0.33", "@types/handlebars": "^4.0.36", "@types/mkdirp": "^0.5.1", diff --git a/packages/assert/package.json b/packages/assert/package.json index 4e495d05f..32cb8cb4d 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/assert", - "version": "0.2.5", + "version": "0.2.6", "description": "Provides a standard way of performing type and schema validation across 0x projects", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -27,8 +27,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/assert/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/valid-url": "^1.0.2", @@ -43,9 +43,9 @@ "typescript": "2.7.1" }, "dependencies": { - "@0xproject/json-schemas": "^0.7.19", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "@0xproject/json-schemas": "^0.7.20", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "lodash": "^4.17.4", "valid-url": "^1.0.9" }, diff --git a/packages/base-contract/package.json b/packages/base-contract/package.json index 449986119..5e14b7de5 100644 --- a/packages/base-contract/package.json +++ b/packages/base-contract/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/base-contract", - "version": "0.1.0", + "version": "0.2.0", "description": "0x Base TS contract", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -26,8 +26,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/base-contract/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "chai": "^4.0.1", "copyfiles": "^1.2.0", @@ -38,10 +38,10 @@ "typescript": "2.7.1" }, "dependencies": { - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "ethers-contracts": "^2.2.1", "lodash": "^4.17.4" }, diff --git a/packages/connect/package.json b/packages/connect/package.json index f0a01cff7..32800c353 100644 --- a/packages/connect/package.json +++ b/packages/connect/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/connect", - "version": "0.6.8", + "version": "0.6.9", "description": "A javascript library for interacting with the standard relayer api", "keywords": [ "connect", @@ -50,19 +50,19 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/connect/README.md", "dependencies": { - "@0xproject/assert": "^0.2.5", - "@0xproject/json-schemas": "^0.7.19", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "@0xproject/assert": "^0.2.6", + "@0xproject/json-schemas": "^0.7.20", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "isomorphic-fetch": "^2.2.1", "lodash": "^4.17.4", "query-string": "^5.0.1", "websocket": "^1.0.25" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/fetch-mock": "^5.12.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 6b7776422..752a947df 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "contracts", - "version": "2.1.21", + "version": "2.1.22", "description": "Smart contract components of 0x protocol", "main": "index.js", "directories": { @@ -41,8 +41,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/contracts/README.md", "devDependencies": { - "@0xproject/dev-utils": "^0.3.4", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/dev-utils": "^0.3.5", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "@types/node": "^8.0.53", "@types/yargs": "^10.0.0", @@ -61,12 +61,12 @@ "yargs": "^10.0.3" }, "dependencies": { - "0x.js": "^0.35.0", - "@0xproject/deployer": "^0.3.5", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "0x.js": "^0.36.0", + "@0xproject/deployer": "^0.4.0", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "bn.js": "^4.11.8", "ethereumjs-abi": "^0.6.4", "ethereumjs-util": "^5.1.1", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index 34d27081b..5ec988ba1 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/deployer", - "version": "0.3.5", + "version": "0.4.0", "description": "Smart contract deployer of 0x protocol", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -48,8 +48,8 @@ "homepage": "https://github.com/0xProject/0x-monorepo/packages/deployer/README.md", "devDependencies": { "@0xproject/dev-utils": "^0.2.1", - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/require-from-string": "^1.2.0", "@types/semver": "^5.5.0", "@types/yargs": "^11.0.0", @@ -68,11 +68,11 @@ "web3-typescript-typings": "^0.10.2" }, "dependencies": { - "@0xproject/json-schemas": "^0.7.19", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "@0xproject/json-schemas": "^0.7.20", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "ethereumjs-util": "^5.1.1", "isomorphic-fetch": "^2.2.1", "lodash": "^4.17.4", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index dd7712065..5161e66e6 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/dev-utils", - "version": "0.3.4", + "version": "0.3.5", "description": "0x dev TS utils", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -26,8 +26,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/dev-utils/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "chai": "^4.0.1", @@ -40,11 +40,11 @@ "typescript": "2.7.1" }, "dependencies": { - "@0xproject/sol-cov": "^0.0.6", - "@0xproject/subproviders": "^0.8.4", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/web3-wrapper": "^0.5.0", + "@0xproject/sol-cov": "^0.0.7", + "@0xproject/subproviders": "^0.8.5", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/web3-wrapper": "^0.6.0", "lodash": "^4.17.4", "web3": "^0.20.0", "web3-provider-engine": "^13.0.1" diff --git a/packages/json-schemas/package.json b/packages/json-schemas/package.json index b7eb99aef..2faf29f55 100644 --- a/packages/json-schemas/package.json +++ b/packages/json-schemas/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/json-schemas", - "version": "0.7.19", + "version": "0.7.20", "description": "0x-related json schemas", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -42,14 +42,14 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/json-schemas/README.md", "dependencies": { - "@0xproject/typescript-typings": "^0.0.3", + "@0xproject/typescript-typings": "^0.1.0", "jsonschema": "^1.2.0", "lodash.values": "^4.3.0" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", - "@0xproject/utils": "^0.5.0", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", + "@0xproject/utils": "^0.5.1", "@types/lodash.foreach": "^4.5.3", "@types/lodash.values": "^4.3.3", "@types/mocha": "^2.2.42", diff --git a/packages/metacoin/package.json b/packages/metacoin/package.json index 867f23192..4ec0a4f66 100644 --- a/packages/metacoin/package.json +++ b/packages/metacoin/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/metacoin", - "version": "0.0.2", + "version": "0.0.3", "private": true, "description": "Example solidity project using 0x dev tools", "scripts": { @@ -23,21 +23,21 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "@0xproject/abi-gen": "^0.2.9", - "@0xproject/base-contract": "^0.1.0", - "@0xproject/deployer": "^0.3.5", - "@0xproject/sol-cov": "^0.0.6", - "@0xproject/subproviders": "^0.8.4", - "@0xproject/tslint-config": "^0.4.14", - "@0xproject/types": "^0.5.0", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "@0xproject/abi-gen": "^0.2.10", + "@0xproject/base-contract": "^0.2.0", + "@0xproject/deployer": "^0.4.0", + "@0xproject/sol-cov": "^0.0.7", + "@0xproject/subproviders": "^0.8.5", + "@0xproject/tslint-config": "^0.4.15", + "@0xproject/types": "^0.6.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "ethers-contracts": "^2.2.1", "lodash": "^4.17.4", "web3-provider-engine": "^13.0.1" }, "devDependencies": { - "@0xproject/dev-utils": "^0.3.4", + "@0xproject/dev-utils": "^0.3.5", "chai": "^4.0.1", "chai-as-promised": "^7.1.0", "chai-bignumber": "^2.0.1", diff --git a/packages/monorepo-scripts/package.json b/packages/monorepo-scripts/package.json index 5c0e5a411..ac21cabc4 100644 --- a/packages/monorepo-scripts/package.json +++ b/packages/monorepo-scripts/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/monorepo-scripts", - "version": "0.1.16", + "version": "0.1.17", "description": "Helper scripts for the monorepo", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/react-docs-example/package.json b/packages/react-docs-example/package.json index cad1d7556..95c23c226 100644 --- a/packages/react-docs-example/package.json +++ b/packages/react-docs-example/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0xproject/react-docs-example", - "version": "0.0.6", + "version": "0.0.7", "description": "An example app using react-docs", "scripts": { "lint": "tslint --project . 'ts/**/*.ts' 'ts/**/*.tsx'", @@ -23,7 +23,7 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "@types/material-ui": "0.18.0", "@types/node": "^8.0.53", @@ -46,7 +46,7 @@ "webpack-dev-server": "^2.11.1" }, "dependencies": { - "@0xproject/react-docs": "^0.0.6", + "@0xproject/react-docs": "^0.0.7", "basscss": "^8.0.3", "lodash": "^4.17.4", "material-ui": "^0.17.1", diff --git a/packages/react-docs/package.json b/packages/react-docs/package.json index 12f438f53..f2af1cb64 100644 --- a/packages/react-docs/package.json +++ b/packages/react-docs/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/react-docs", - "version": "0.0.6", + "version": "0.0.7", "description": "React documentation component for rendering TypeDoc & Doxity generated JSON", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -22,17 +22,17 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0xproject/dev-utils": "^0.3.4", - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/dev-utils": "^0.3.5", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "copyfiles": "^1.2.0", "shx": "^0.2.2", "tslint": "^5.9.1", "typescript": "2.7.1" }, "dependencies": { - "@0xproject/react-shared": "^0.1.1", - "@0xproject/utils": "^0.5.0", + "@0xproject/react-shared": "^0.1.2", + "@0xproject/utils": "^0.5.1", "@types/lodash": "4.14.104", "@types/material-ui": "0.18.0", "@types/node": "^8.0.53", diff --git a/packages/react-shared/package.json b/packages/react-shared/package.json index 690da74fe..389052583 100644 --- a/packages/react-shared/package.json +++ b/packages/react-shared/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/react-shared", - "version": "0.1.1", + "version": "0.1.2", "description": "0x shared react components", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -22,9 +22,9 @@ "url": "https://github.com/0xProject/0x-monorepo.git" }, "devDependencies": { - "@0xproject/dev-utils": "^0.3.4", - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/dev-utils": "^0.3.5", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "copyfiles": "^1.2.0", "shx": "^0.2.2", "tslint": "^5.9.1", diff --git a/packages/sol-cov/package.json b/packages/sol-cov/package.json index 6444fb876..0e17669b5 100644 --- a/packages/sol-cov/package.json +++ b/packages/sol-cov/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/sol-cov", - "version": "0.0.6", + "version": "0.0.7", "description": "Generate coverage reports for Solidity code", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -41,9 +41,9 @@ }, "homepage": "https://github.com/0xProject/0x.js/packages/sol-cov/README.md", "dependencies": { - "@0xproject/subproviders": "^0.8.4", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", + "@0xproject/subproviders": "^0.8.5", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", "ethereumjs-util": "^5.1.1", "glob": "^7.1.2", "istanbul": "^0.4.5", @@ -52,8 +52,8 @@ "solidity-parser-antlr": "^0.2.8" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/istanbul": "^0.4.29", "@types/mocha": "^2.2.42", "@types/node": "^8.0.53", diff --git a/packages/sra-report/package.json b/packages/sra-report/package.json index 3c24ec312..c889f1cb5 100644 --- a/packages/sra-report/package.json +++ b/packages/sra-report/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/sra-report", - "version": "0.0.7", + "version": "0.0.8", "description": "Generate reports for standard relayer API compliance", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -28,20 +28,20 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/sra-report/README.md", "dependencies": { - "0x.js": "^0.35.0", - "@0xproject/assert": "^0.2.5", - "@0xproject/connect": "^0.6.8", - "@0xproject/json-schemas": "^0.7.19", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "0x.js": "^0.36.0", + "@0xproject/assert": "^0.2.6", + "@0xproject/connect": "^0.6.9", + "@0xproject/json-schemas": "^0.7.20", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "chalk": "^2.3.0", "lodash": "^4.17.4", "newman": "^3.9.3", "yargs": "^10.0.3" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.48", "@types/nock": "^9.1.2", diff --git a/packages/subproviders/package.json b/packages/subproviders/package.json index cadbac0e8..36133e417 100644 --- a/packages/subproviders/package.json +++ b/packages/subproviders/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/subproviders", - "version": "0.8.4", + "version": "0.8.5", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", "license": "Apache-2.0", @@ -36,10 +36,10 @@ } }, "dependencies": { - "@0xproject/assert": "^0.2.5", - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "@0xproject/assert": "^0.2.6", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "@ledgerhq/hw-app-eth": "^4.3.0", "@ledgerhq/hw-transport-u2f": "^4.3.0", "bn.js": "^4.11.8", @@ -53,9 +53,9 @@ "web3-provider-engine": "^13.0.1" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", - "@0xproject/utils": "^0.5.0", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", + "@0xproject/utils": "^0.5.1", "@types/lodash": "4.14.104", "@types/mocha": "^2.2.42", "@types/node": "^8.0.53", diff --git a/packages/testnet-faucets/package.json b/packages/testnet-faucets/package.json index b0db99174..3d51e3e2b 100644 --- a/packages/testnet-faucets/package.json +++ b/packages/testnet-faucets/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@0xproject/testnet-faucets", - "version": "1.0.22", + "version": "1.0.23", "description": "A faucet micro-service that dispenses test ERC20 tokens or Ether", "main": "server.js", "scripts": { @@ -15,10 +15,10 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^0.35.0", - "@0xproject/subproviders": "^0.8.4", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "0x.js": "^0.36.0", + "@0xproject/subproviders": "^0.8.5", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "body-parser": "^1.17.1", "ethereumjs-tx": "^1.3.3", "ethereumjs-util": "^5.1.1", @@ -29,7 +29,7 @@ "web3-provider-engine": "^13.0.1" }, "devDependencies": { - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/tslint-config": "^0.4.15", "@types/body-parser": "^1.16.1", "@types/express": "^4.0.35", "@types/lodash": "4.14.104", diff --git a/packages/tslint-config/package.json b/packages/tslint-config/package.json index c0eb9087b..988380d85 100644 --- a/packages/tslint-config/package.json +++ b/packages/tslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/tslint-config", - "version": "0.4.14", + "version": "0.4.15", "description": "Lint rules related to 0xProject for TSLint", "main": "tslint.json", "scripts": { @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/tslint-config/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", + "@0xproject/monorepo-scripts": "^0.1.17", "@types/lodash": "4.14.104", "copyfiles": "^1.2.0", "shx": "^0.2.2", diff --git a/packages/types/package.json b/packages/types/package.json index edae406ae..c55c8376a 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/types", - "version": "0.5.0", + "version": "0.6.0", "description": "0x types", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/types/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/node": "^8.0.53", "copyfiles": "^1.2.0", "shx": "^0.2.2", diff --git a/packages/typescript-typings/package.json b/packages/typescript-typings/package.json index 2258a1f01..0d9aea63d 100644 --- a/packages/typescript-typings/package.json +++ b/packages/typescript-typings/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/typescript-typings", - "version": "0.0.3", + "version": "0.1.0", "description": "0x project typescript type definitions", "scripts": { "build": "tsc && copyfiles -u 1 './lib/**/*' ./scripts", @@ -21,11 +21,11 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/typescript-typings#readme", "dependencies": { - "@0xproject/types": "^0.5.0", + "@0xproject/types": "^0.6.0", "bignumber.js": "~4.1.0" }, "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", + "@0xproject/monorepo-scripts": "^0.1.17", "copyfiles": "^1.2.0", "shx": "^0.2.2" }, diff --git a/packages/utils/package.json b/packages/utils/package.json index 491fed040..f3cbdf14c 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/utils", - "version": "0.5.0", + "version": "0.5.1", "description": "0x TS utils", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/utils/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", "copyfiles": "^1.2.0", "npm-run-all": "^4.1.2", @@ -31,8 +31,8 @@ "typescript": "2.7.1" }, "dependencies": { - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", "@types/node": "^8.0.53", "bignumber.js": "~4.1.0", "ethers-contracts": "^2.2.1", diff --git a/packages/web3-wrapper/package.json b/packages/web3-wrapper/package.json index 5b5f42434..5e6fc3618 100644 --- a/packages/web3-wrapper/package.json +++ b/packages/web3-wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/web3-wrapper", - "version": "0.5.0", + "version": "0.6.0", "description": "Wraps around web3 and gives a nicer interface", "main": "lib/src/index.js", "types": "lib/src/index.d.ts", @@ -40,27 +40,27 @@ }, "homepage": "https://github.com/0xProject/0x-monorepo/packages/web3-wrapper/README.md", "devDependencies": { - "@0xproject/monorepo-scripts": "^0.1.16", - "@0xproject/tslint-config": "^0.4.14", + "@0xproject/monorepo-scripts": "^0.1.17", + "@0xproject/tslint-config": "^0.4.15", "@types/lodash": "4.14.104", - "copyfiles": "^1.2.0", - "npm-run-all": "^4.1.2", - "shx": "^0.2.2", "chai": "^4.0.1", - "mocha": "^4.0.1", - "nyc": "^11.0.1", - "ganache-core": "0xProject/ganache-core", "chai-as-promised": "^7.1.0", "chai-bignumber": "^2.0.1", + "copyfiles": "^1.2.0", "dirty-chai": "^2.0.1", + "ganache-core": "0xProject/ganache-core", + "mocha": "^4.0.1", + "npm-run-all": "^4.1.2", + "nyc": "^11.0.1", + "shx": "^0.2.2", "tslint": "5.8.0", "typedoc": "0xProject/typedoc", "typescript": "2.7.1" }, "dependencies": { - "@0xproject/types": "^0.5.0", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", + "@0xproject/types": "^0.6.0", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", "ethers-contracts": "^2.2.1", "lodash": "^4.17.4", "web3": "^0.20.0" diff --git a/packages/website/package.json b/packages/website/package.json index 7d0c68b47..86946d2d1 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/website", - "version": "0.0.24", + "version": "0.0.25", "private": true, "description": "Website and 0x portal dapp", "scripts": { @@ -18,13 +18,13 @@ "author": "Fabio Berger", "license": "Apache-2.0", "dependencies": { - "0x.js": "^0.35.0", - "@0xproject/react-docs": "^0.0.6", - "@0xproject/react-shared": "^0.1.1", - "@0xproject/subproviders": "^0.8.4", - "@0xproject/typescript-typings": "^0.0.3", - "@0xproject/utils": "^0.5.0", - "@0xproject/web3-wrapper": "^0.5.0", + "0x.js": "^0.36.0", + "@0xproject/react-docs": "^0.0.7", + "@0xproject/react-shared": "^0.1.2", + "@0xproject/subproviders": "^0.8.5", + "@0xproject/typescript-typings": "^0.1.0", + "@0xproject/utils": "^0.5.1", + "@0xproject/web3-wrapper": "^0.6.0", "accounting": "^0.4.1", "basscss": "^8.0.3", "blockies": "^0.0.2", -- cgit v1.2.3